程序员社区

TCP流量控制

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

滑动窗口,发送方维护的窗口

TCP流量控制插图

窗口左侧

成功发送并已经被接收方确认的字节序列号,发送数据且被接收成功后就会右移

窗口右侧

发送方目前可以发送的最大字节序列号,接收方接收缓存区里的数据被取走就会右移

窗口右侧减去窗口左侧,就是对方的window size


赞(0) 打赏
未经允许不得转载:IDEA激活码 » TCP流量控制

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区