上下观古今,起伏千万途。这篇文章主要讲述TCP/IP协议之四TCP协议(中)—理论+实践给你讲清楚相关的知识,希望能为你提供帮助。
大家好,我是小杰。
接着上篇:
上次说完了TCP的三次握手和四次挥手,接下来我们接着实验。
TCP的最大报文长度MMS上篇提到了以太网协议有MTU的概念,会限制IP数据包的大小不能超过MTU否则会进行ip数据包的分包,TCP协议中的选项部分包含MSS的概念,在连接建立的时候进行MMS大小互通,这样发送时候以最小的MSS来决定发送数据报的大小。
实验走起:
下面的截图是我使用两个服务器A和服务器B,从服务器A中利用tcpdump抓包获取的数据,服务器B向服务器A发送了2048字节的数据,关键的信息我已经使用红色的线段标出来啦,可见始终没有超过MSS的值。
文章图片
有蹊跷
如果仅仅如此的话,那么我的实验毫无意义!大家可以接着看,我又有了新的发现:
文章图片
TCP延时确认延时确认背景某些场景的要求下,需要频繁的在网络中传输数据,例如回显服务器。每输入一个字符就需要服务器发送一次确认,这就会大大的浪费网络资源,为了更有利于对网络资源的合理化利用,便有了时延确认,也就是服务器在回复带有ACK的确认报文段的时候与下一次需要发送的报文段合并成同一个。
文章图片
【TCP/IP协议之四TCP协议(中)—理论+实践给你讲清楚】 通常延时确认是有时间限制的,也就是在收到后会开启一个定时器,如果下一个包在定时器结束之后还没有,那么就会单独进行确认,否则跟下一个包合并成一个报文段。这个时间通常是200ms。TCP流量控制当通信双方的能力较差,而通信链路上的网速较好时,流量控制就将其作用发挥到了极致。
- 一旦发送发发送的数据过快,而接收方的数据处理不过来,那么将发生数据的丢失问题,一旦数据丢失就需要重传,那么就会浪费网络资源
- TCP协议利用滑动窗口机制来实现流量控制
双方均维护着自己的发送缓冲区和接收缓冲区,我们分开来看发送窗口
文章图片
从图中可以看出之所以称之为滑动窗口,是因为它左右各维护了一个指针,形成中间的窗口部分,总体趋势是向右滑动,同时指针可单独向右移动以控制整个窗口的大小。
- 灰色表示已传送并接收端已经确认,并从发送缓冲区清楚
- 蓝色表示已经传送,但是未被确认
- 黄色标识准备传送的数据
- 紫色表示等待传送的数据
2,3,4加起来表示发送缓冲区的大小过程
- 发送窗口现在包含已经传送,但是未被确认的数据和准备传送的数据
- 有两个数据被确认,左指针向右进行滑动,右指针不变
- 接收窗口大于发送窗口,于是发送窗口增大,右指针向右进行滑动,左指针不变
文章图片
- 灰色表示应用层已经读取,并从缓冲区清除的数据
- 蓝色表示已经接收,并被确认的数据
- 黄色表示等待接收资料的空缓冲区
- 紫色表示缓冲区中剩余未用的空间
2,3加起来就是接收缓冲区的大小过程
- 接收缓冲区现在处于等待接收资料状态
- 有两个资料放到了窗口内,但是还未被应用层读取,于是左指针向右移动,右指针不变
- 有两个资料被应用层读取,并从缓冲区清除的数据,于是右指针向右移动,左指针不变
推荐阅读
- python 包之 turtle 海龟绘图教程
- 担心Harbor数据丢失(谈谈Harbor的备份和恢复方法。)
- 交换基础之VLAN间的通信
- C语言整型提升
- 关机程序
- 禁止访问我的共享文件夹,以及禁止访问他人共享文件夹的5个方法
- 浅析中关村xp纯净版系统大局部更改文件的绝招【图文】 - 雨林木风Win10系统下载官网
- 浅析电脑公司xp纯净版系统经常遇到的故障以及处理的办法 - 雨林木风Win10系统下载官网
- 电脑公司Ghost xp系统下宽带连接图标不见了的处理办法【图文】 - 雨林木风Win10系统下载官网