TCP传输通过好几种方式控制数据流量
MTU
物理链路层最大能发送和接收的数据量,物理接口提供给IP层最大一次的传输数据的大小,是以太网接口对IP层的约束。以太网缺省MTU = 1500 byte,IP包大于1500 byte,IP层需要分片后发送,这些分片IP Header ID相同
MSS
TCP提交给IP层的最大分段大小,TCP Payload最大值,是TCP用来限制app层最大的发送字节数,取决于取决于两端最小的MSS
MSS是TCP建立连接时根据各自的MTU,计算出的MSS值,然后取较小的那个,作为双方在TCP层分段的最大payload,即双方在TCP层发送和接收的数据的最大值
TCP Window Size
接收缓存区大小,对方发来的数据缓存在这里,上层的应用从这里取走数据,最大值65535 byte
主机有发送缓存区和接收缓存区两个分区,window size就是接收缓存区的大小,是TCP首部里的一个字段,用来告诉对方自己的接收缓存区还有多大,对方发来的数据就不能大于window size
Persist Timer
用来周期探测对方window size是否为0,对方发来的window size为0,那么发送方一定不会发送数据,一旦window size不为0,发送方开始发送数据
Slide Window
滑动窗口,发送方维护的窗口
窗口左侧
成功发送并已经被接收方确认的字节序列号,发送数据且被接收成功后就会右移
窗口右侧
发送方目前可以发送的最大字节序列号,接收方接收缓存区里的数据被取走就会右移
窗口右侧减去窗口左侧,就是对方的window size