前言
接收端应答方式:累计确认,每次确认多个ID;
- 发送端的数据结构分为四个部分

- 接收端的数据结构

顺序问题、丢包问题
超时重传
流量控制机制(滑动窗口rwnd)
目的:防止发送方把接收方缓存塞满。
在对于包的确认中,同时会携带一个窗口的大小
根据接收方处理数据的速度,自动调整窗口大小。
拥塞控制问题(拥塞窗口cwnd)
目的:防止网络被塞满即要避免两种现象:包丢失和超时重传。
速度控制公式:LastByteSent - LastByteAcked <= min{cwnd,rwnd}即发送还未确认的数据<=最小窗口
拥塞控制是通过拥塞窗口来解决的,相当于往管道里面倒水,快了容易溢出,慢了浪费带宽,要摸着石头过河,找到最优值。
那发送方怎么判断网络是不是满呢?这其实是个挺难的事情,因为对于TCP协议来讲,他压根不知道整个网络路径都会经历什么,对他来讲就是一个黑盒。TCP发送包常被比喻为往一个水管里面灌水,而TCP的拥塞控制就是在不堵塞,不丢包的情况下,尽量发挥带宽。
水管有粗细,网络有带宽,也即每秒钟能够发送多少数据;水管有长度,端到端有时延。在理想状态下,水管里面水的量=水管粗细x水管长度。对于到网络上,通道的容量=带宽×往返延迟。
如果我们设置发送窗口,使得发送但未确认的包为为通道的容量,就能够撑满整个管道。


该博客围绕TCP协议展开,介绍了接收端应答方式和发送、接收端的数据结构。重点阐述顺序与丢包问题及超时重传机制,还讲解流量控制机制(滑动窗口rwnd)以防止接收方缓存塞满,以及拥塞控制问题(拥塞窗口cwnd),避免网络拥塞,发挥带宽。

2818

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



