首页   快速返回

tcp知识点整理     所属分类 tcp
TCPUDP协议的区别
TCP 有连接,传输数据之前TCP客户端和服务器端必须通过三次握手建立连接,UDP是无连接的
TCP保证数据按序发送,按序到达,提供超时重传来保证可靠性,UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
TCP所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
TCP面向字节流,UDP面向是报文。


TCP协议建立连接和终止连接的过程
三次握手和四次挥手

建立连接 三次握手



关闭连接 四次挥手



三次握手建立连接时,发送方再次发送确认的必要性
主要是为了防止已失效的连接请求报文段突然又传到了B,因而产生错误。
假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,
一直延迟到连接释放以后的某个时间才到达B,本来这是一个早已失效的报文段。
但B收到此失效的连接请求报文段后,就误认为是A又发出一次新的连接请求,于是就向A发出确认报文段,同意建立连接。
假定不采用三次握手,那么只要B发出确认,新的连接就建立了,这样一直等待A发来数据,B的许多资源就浪费了。

四次挥手释放连接时,等待2MSL的意义
第一,为了保证A发送的最有一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。
第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最有一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

TCP UDP协议 的常见应用

以下应用一般或必须用udp实现
多播的信息一定要用udp实现,因为tcp只支持一对一通信。
如果一个应用场景中大多是简短的信息,适合用udp实现,因为udp是基于报文段的,它直接对上层应用的数据封装成报文段,然后丢在网络中,如果信息量太大,会在链路层中被分片,影响传输效率。
如果一个应用场景重性能甚于重完整性和安全性,那么适合于udp,比如多媒体应用,缺一两帧不影响用户体验,但是需要流媒体到达的速度快,因此比较适合用udp
如果要求快速响应,那么udp比较合适
如果又要利用udp的快速响应优点,又想可靠传输,那么只能考上层应用自己制定规则了。

上一篇     下一篇
Netty和Akka的区别

Spark SQL 进化史

spring cloud 核心组件介绍

技术文章合集1

aerospike安装记录

redhat linux和centos的区别与联系