事件
TCP 接收方的动作
有序数据段到达, 没有缺失的段, 所有其他数据段已经 ACKed
延迟 ACK. 等待 500ms 看是否还有数据段到达. 如果没有, 发送ACK
有序数据段到达, 没有缺失的段, 有一个延迟 ACK 等待
立即发送一个 积欠的 ACK
失序数据段到达
seq. # 高于预期值 测到间隔
发送方
接收方
udt_send(): 由rdt调用, 将分组通过不可靠的信道传 到接收方
rdt_rcv(): 当数据到达接收方 时调用
可靠数据传输: 开始起步
逐步发展收发双方的可靠数据传输协议 (rdt) 仅考虑单向的数据传输
✓ 但控制信息将双向流动! 使用有限状态机 (FSM) 来定义发送方,接收方
Rdt2.0:在可能发送出错的信道上传输
问题:如何从错误中恢复 ✓ 正向确认 (ACKs):由接收方发送报文向发送方 进行确认 ✓ 负向确认 (NAKs):由接收方发送报文向发送方 进行否认,说明分组有错 ✓ 发送方在收到NAK后进行分组重传
rdt2.0的新机制 (在 rdt1.0基础之上) ✓ 错误检测 ✓ 接收方的反馈:控制信息 (ACK,NAK)
丢失 ACK 场景
time
过早超时
可靠数据传输原理
不可靠传输通道的特性将决定可靠数据传输协 议(rdt)的复杂性。
可靠数据传输:开始起步
rdt_send(): 由上层进行调用 (e.g., 应用进程.),将数据传入 发送方并由其传给接收方的上层
deliver_data(): 由 rdt调用将数据递交给上层
4.3 传输层协议及应用
传输层与网络层的关系
Internet中的传输 层充当“收发室 ”的角色;