TCP协议扩展笔记整理
一、面向连接
- 核心特性:TCP传输数据前需先建立点到点的逻辑连接,而非物理链路连接。
- 点到点定义:通讯中仅存在双方,无第三方参与。
二、TCP报文结构
- 关键字段(含位数):
- 源端口号(16位)、目标端口号(16位):标识通讯双方的应用进程。
- 序列号(32位):标记发送数据段的顺序。
- 确认应答号(32位):期望接收的下一字节序号,用于确认已接收数据。
- 标志位:含SYN(建立连接)、ACK(确认)、RST(重置连接)、PSH(推送数据)、FIN(终止连接)等,控制连接状态。
- 首部长度(4位):指示TCP首部大小。
- 窗口大小(16位):接收方告知发送方可发送的数据量(用于流控)。
- 校验和(16位):检测数据传输中的错误,确保完整性。
- 紧急指针(16位):标记紧急数据位置。
- 选项(长度可变):补充功能,如最大报文段长度(MSS)协商。
- TCP连接标识:通过“四元组”(源IP地址、源端口、目标IP地址、目标端口)唯一标识一条TCP连接。
三、TCP异常连接
- 终止方式:当发送数据到无效TCP连接时,目标主机发送RST标记位置1的TCP报文段,中断连接。
四、TCP可靠传输机制
1. 连接确认机制
- 发送方需确保数据被接收方收到,接收方通过回复ACK标记位置1的确认报文段响应,同时携带确认序列号(指示期望接收的下一字节)。
2. 重传机制
(1)超时重传
- RTT(往返时间):数据发出到收到确认的时间,是衡量超时重传的基础参数。
- RTO(超时重传时间):动态调整的超时阈值,需略大于RTT,避免不必要的重传。
- 超时间隔加倍:网络拥塞时,重传间隔逐次加倍(如RTO→2RTO→4RTO…),缓解拥塞。
(2)快速重传
- 触发场景:接收方收到失序报文(序列号大于期望序号)时,连续发送3个相同的确认序列号(冗余ACK),告知发送方丢失报文。
- 优势:无需等待超时,提前感知丢包并重传,减少时延。
3. 流控机制(防止接收方缓冲区溢出)
(1)滑动窗口
- 接收方通过TCP报文中的“窗口大小”字段,告知发送方可连续发送的数据量(以报文段为单位)。
- 累计确认:若中间ACK丢失,后续ACK可覆盖已接收数据的确认(如ACK=300可确认Seq=100-300的数据),无需重传丢失的ACK。
(2)小窗口处理
- 零窗口:接收方缓冲区满时,窗口大小设为0,发送方暂停发送,直至接收方更新窗口。
- 窗口通告规则:接收方通告窗口最小值为MSS(最大报文段长度)和1/2缓存空间中的较小值,小于该值时通告为0。
- 发送方策略:数据发送需满足以下任一条件:①窗口大小≥MSS且数据大小≥MSS;②收到之前发送数据的ACK。
4. 校验和
- 用于检测数据在传输过程中的损坏或篡改,确保接收数据与发送数据一致。
五、TCP拥塞控制(缓解网络拥堵)
1. 拥塞判断
- 以“丢包”为拥塞标志,包括两种形式:①数据包确认超时;②收到3个冗余ACK。
2. 核心参数
- 拥塞窗口(cwnd):发送方维护的动态窗口,控制网络拥塞时的发送速率(大小为1~几百个MSS)。
- 发送窗口:取拥塞窗口与接收窗口的最小值,是实际发送数据的上限。
3. 控制过程
(1)初始化阶段:慢开始
- 初始值:cwnd=1个MSS。
- 增长规则:每收到一个ACK,cwnd呈指数增长(如1→2→4→8…)。
- 慢启动门限(ssthresh):限制cwnd增长的阈值。当cwnd < ssthresh时,使用慢开始;cwnd > ssthresh时,切换为拥塞避免。
(2)增长阶段:拥塞避免
- 触发条件:cwnd达到ssthresh后进入。
- 增长规则:每收到一个ACK,cwnd呈线性增长(如每次+1个MSS),缓慢增加发送量。
(3)拥塞发生后:快重传与快恢复
- 快重传:收到3个冗余ACK时,立即重传丢失报文,无需等待超时。
- 快恢复:重传后,ssthresh更新为当前cwnd的1/2,cwnd设为新ssthresh,随后按线性增长恢复发送(避免重新从1开始,减少恢复时间)。
总结
TCP通过面向连接的特性、结构化的报文设计、可靠传输机制(确认、重传、流控)及拥塞控制策略,实现了数据的高效、可靠传输,平衡了传输效率与网络稳定性。

1261

被折叠的 条评论
为什么被折叠?



