基本原理
TCP提供可靠的数据传输服务。建立连接后,应用程序将数据提交给TCP,TCP将数据放入自己的缓存。TCP会将数据按照MSS的大小进行分段,并为每个分段加上TCP头部后提交给网络层。
可靠性保障
- 确认到达 + 超时重传:防止丢包
- 分组序列号:确保数据包的顺序
- 检验和:防止信道上的bit错误
- 流量控制(滑动窗口):防止发送方太快而接收方太慢
传输效率
“发一个TCP分组,等待一个ACK,再发下一个”
这种工作方式效率太低了,带宽利用率也低。
为了提高效率,仿照流水线原理,TCP允许发送方发送多个分组而无需等待确认。
但是这样做,带来了2个问题:
- 发多少分组合适?
- 分组出现丢失、出错、超时等异常情况时,如何处理?
为了解决这2个问题,TCP退出了滑动窗口
和差错恢复
机制。
滑动窗口
滑动窗口提高了传输效率,同时起到流量控制的作用。
具体过程如下图: