TCP 概述
TCP 段结构
序列号和ACK
TCP可靠数据传输
TCP在IP层提供的不可靠服务基础上实现可靠数据传输服务,流水线机制,累积确认,TCP使用单一重传定时器
触发重传的事件:超时,收到重复ACK
渐进式:暂不考虑重复ACK,暂不考虑流量控制,暂不考虑拥塞控制
TCP RTT 和超时
TCP发送方事件
- 从应用层收到数据
- 创建Segment
- 序列号是Segment第一个字节的编号
- 开启计时器
- 设置超时时间:TimeOutInterval
- 超时
- 重传引起超时的Segment
- 重启定时器
- 收到ACK
- 如果确认此前未确认的Segment
- 更新SendBase
- 如果窗口中还有未被确认的分组,重新启动定时器
- 如果确认此前未确认的Segment
看一段伪代码:
TCP 重传示例
接收方
快速重传机制
TCP的实现中,如果发生超时,超时时间间隔将重新设置,即将超时时间间隔加倍,导致其很大,重发丢失的分组之前要等待很长时间
- 通过重复ACK检测分组丢失
- Sender会背靠背地发送多个分组
- 如果某个分组丢失,可能会引发多个重复的ACK
- 如果sender收到对同一数据的3个ACK,则假定该数据之后的段已经丢失
- 快速重传:在定时器超时之前即
进行重传
- 快速重传:在定时器超时之前即
快速重传算法
TCP 流量控制
TCP 连接管理
三次握手
TCP 生命周期
拥塞控制原理
拥塞(Congestion)
非正式定义:“太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理”
- 表现:
- 分组丢失(路由器缓存溢出)
- 分组延迟过大(在路由器缓存中排队)
拥塞的成因和代价 : 场景1
拥塞的成因和代价 : 场景2
拥塞的成因和代价 : 场景3
拥塞控制的方法
-
端到端拥塞控制:
- 网络层不需要显式的提供支持
- 端系统通过观察loss,delay等
- 络行为判断是否发生拥塞
- TCP采取这种方法
-
网络辅助的拥塞控制:
- 路由器向发送方显式地反馈网络拥塞信息
- 简单的拥塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM)
- 指示发送方应该采取何种速率
ATM ABR 拥塞控制
TCP 拥塞控制
TCP拥塞控制的基本原理
加性增— 乘性减: AIMD
TCP 慢启动: SS
Threshold变量
Loss 事件的处理
TCP 拥塞控制: 总结
TCP拥塞控制
TCP拥塞控制算法
TCP 性能分析
TCP throughput: 吞吐率
- 给定拥塞窗口大小和RTT ,TCP 的平均吞吐率是多少 ?
- 忽略掉Slow start
- 假定发生超时时CongWin的大小为W,吞吐率是W/RTT
- 超时后,CongWin=W/2,吞吐率是W/2RTT
- 平均吞吐率为:0.75W/RTT
未来的TCP
TCP的公平性
具有公平性
不具公平性
小结
-
传输层服务的基本原理
- 复用/解复用
- 可靠数据传输
- 流量控制
- 拥塞控制
-
Internet的传输层
- UDP
- TCP