学习进度条5.7
所花时间:6小时
代码量:400
搏客量:1
了解到的知识点:
一、ACK(Acknowledgment,确认字符)
定义:
ACK是接收方发送给发送方的一个控制报文,用于确认已成功接收到数据包。
作用:
告知发送方数据已正确到达,避免无限等待。
触发发送方继续传输后续数据(如滑动窗口协议)。
关键特性:
累计确认:例如TCP中的ACK号表示“期望接收的下一个字节序号”,隐式确认之前所有数据。
选择性确认(SACK):某些协议允许接收方明确告知哪些数据块已收到,哪些缺失(用于优化重传)。
二、ARQ(Automatic Repeat Request,自动重传请求)
定义:
一种通过重传丢失或损坏的数据包来实现可靠传输的机制,依赖ACK和超时机制触发重传。
核心目标:
在不可靠的通信信道(如无线网络、互联网)中保证数据的可靠传输。
ARQ的三种主要类型:
停等式ARQ(Stop-and-Wait)
发送方每次发送一个数据包,等待ACK到达后再发送下一个。
缺点:信道利用率低(需频繁等待ACK)。
示例:适用于低带宽或高延迟环境(如IoT传感器)。
回退N帧ARQ(Go-Back-N)
发送方维护一个发送窗口,允许连续发送多个数据包(无需等待单个ACK)。
处理错误:若某个ACK未到达,发送方需重传该序号及之后的所有数据包。
缺点:可能重复传输正确接收的包(效率低)。
示例:早期TCP实现中的部分机制。
选择性重传ARQ(Selective Repeat)
接收方缓存乱序到达的数据包,仅重传丢失或损坏的包。
优点:高效利用带宽,适合高误码率信道。
缺点:实现复杂(需管理接收窗口和乱序缓存)。
示例:现代TCP协议结合使用SACK选项。
三、ACK与ARQ的协同工作
正常传输流程:
发送方发送数据包 → 接收方正确接收 → 接收方返回ACK → 发送方收到ACK后继续发送新数据。
错误处理流程:
ACK丢失:发送方超时未收到ACK,重传数据包(停等式ARQ)。
数据包丢失:接收方未收到预期包,后续ACK会携带缺失的序号信息,触发选择性重传(如SACK)。
优化机制:
捎带确认(Piggybacking):将ACK附加在反向传输的数据包中,减少单独发送ACK的开销。
延迟确认:接收方等待一定时间再发送ACK,可能合并多个确认(如TCP延迟确认机制)。
四、现实应用
TCP协议:
使用累计ACK和选择性确认(SACK),结合滑动窗口和超时重传(ARQ)。
动态调整超时时间(RTO)以适应网络延迟变化。
无线通信(如5G):
混合ARQ(HARQ)结合前向纠错(FEC)和ARQ,降低重传次数。