TCP 和 UDP

TCP

一、TCP流量控制

1.1 什么是流量控制有什么用?

​ 如果数据发送的过快,则就接收方可能来不及接收,造成数据的丢失

​ 所谓流量控制就是让发送方的发送速率不要太快,让接收方来得及接收

1.2 滑动窗口实例

image-20211025202350654

1.3 0窗口探测报文(携带1字节)

​ 当接收方告知发送方法接收窗口为0的时候开始启动持续计时器,等待接收方缓存有了新的存储空间

​ 这个过程没过一个持续计时器都会发送零窗口探测报文

TCP协议规定无论接收方的接收窗口为多大都需要接收0窗口探测报文

​ 发送0窗口探测报文也会有一个超时重传的机制

image-20211025201944548

宏观来讲:客户端的发送窗口由服务端的接收窗口决定,进而达到服务端对客户端的流量控制。当服务端的接收窗口为0时,客户端会开始启动持续计时器,每过一个持续计时器都会向服务端发送0窗口探测报文,目的是为了防止服务端有了新的存储空间向客户端重新发送接收窗口时却丢失造成死锁的情况。

二、拥塞控制

2.1 什么是拥塞控制

image-20211025215508440

  • ssthresh: 慢开始门限值
  • cwnd: 拥塞窗口值

image-20211025213923274

2.2 快恢复

image-20211025221445134

2.3 TCP超时重传的选择

超时时间的选择

image-20211025222008560

三、TCP可靠传输的实现

3.1 如何描述发送窗口的状态image-20211029202435374

3.2 TCP传输过程中的特性

image-20211029203305579

四、TCP的运输连接管理

image-20211029204347130

4.1 TCP的连接建立

4.1.1 连接建立的三个前提

image-20211029204444339

4.1.2 连接建立的具体过程

TCP的标准规定: SYN=1的报文段不能携带数据,但要消耗一个序号.

普通报文段不携带数据,则不需要消耗序号

  • SYN:同步序列编号
  • seq:序列编号
  • ack:确认编号
  • ACK:确认值,为1表示确认

TCP建立过程中,客户机首先发送一个SYN消息和一个seq,服务器使用SYN+ACK应答表示接收,最后客户机再以ACK消息响应。

image-20211026144259083

如果只有两次报文握手的情况

image-20211026144518807

两次报文握手不行:

因为在网络情况下,可能第一个TCP连接请求报文段滞留在网络环境中,TCP连接请求发送重传,服务器和客户端成功建立连接之后释放连接,滞留在网络中的第一个TCP报文段送到了服务器,会导致服务器一致保持在连接建立的状态下,浪费服务器主机的进程资源.

第三次报文的作用: 防止已经失效的tcp请求报文又突然传到了服务器,因而导致错误.

image-20211029210021799

五、TCP连接的释放(四报文挥手)

FIN:Finish结束标识

image-20211026145926295

MSL为最长报文段寿命

保活计时器

image-20211026150350418

二者区别

安全 传输速度 连接数量
TCP 一对一
UDP 一对多

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!