Skip to content

图解TCP协议

Posted on:2017年2月12日 at 15:33 (4 min read)

TOC

Open TOC

TCP 连接过程

TCP三次握手&四次挥手

TCP 报文格式

TCP 报文格式解析

TCP 状态机

详解 TCP 网络协议栈的工作原理 - 华为云开发者联盟的个人空间 - OSCHINA - 中文开源技术交流社区

TCP/IP 四层和 OSI 七层模型

一文读懂 OSI 七层模型与 TCP/IP 四层的区别/联系_osi 七层和 tcp4 层关系_图灵的猫.的博客-CSDN 博客

更多问题

粘包问题

图解 TCP 粘包

重传机制

TCP 的那些事儿(上) | 酷 壳 - CoolShell

滑动窗口

拥塞控制

TCP 的那些事儿(下) | 酷 壳 - CoolShell

  1. 慢启动(Slow Start):当 TCP 连接建立时,发送方将初始拥塞窗口(Congestion Window,CWND)设置为一个较小的值。发送方开始以指数增加的速率发送数据,并且每当收到一个确认(ACK)时,CWND 的大小就会加倍。这样逐渐增加发送速率,直到达到一个阈值。
  2. 拥塞避免(Congestion Avoidance):一旦发送方的 CWND 达到了一个阈值(拥塞避免阈值,Congestion Avoidance Threshold),发送方就会进入拥塞避免阶段。在拥塞避免阶段,发送方每收到一个 ACK,CWND 的大小就会线性增加,而不是指数增加。这样可以避免发送速率增长过快,引发网络拥塞。
  3. 快速重传(Fast Retransmit):如果发送方连续收到多个重复的 ACK,表明有一个或多个数据包丢失。在这种情况下,发送方会认为某个数据包丢失,并立即重传该数据包,而不必等待超时。
  4. 快速恢复(Fast Recovery):当发送方收到重复的 ACK 时,它会将拥塞窗口减半,并设置一个新的阈值。然后,发送方进入快速恢复阶段,在该阶段,发送方每收到一个新的 ACK,拥塞窗口就会增加 1。这样可以更快地恢复发送速率,而不必等待慢启动。
  5. 超时重传(Timeout Retransmission):如果发送方在一定时间内没有收到 ACK,就会认为数据包丢失,并进行超时重传。在超时重传后,发送方将 CWND 设置为 1,并重新开始慢启动过程。