最后更新:2022-06-17 16:40:42 手机定位技术交流文章
TCP(传输控制协议)是一种传输控制协议,在传输层上运行,提供面向连接的通信服务
TCP的主要功能是传输和控制数据,由传输过程中丢失的包的复发、混乱的包的有序重组和数据传输速度来控制,以防止网络拥塞
因此,正如我们常说的,TCP是一个可靠的传输协议。 本文解释了TCP的过程和一些机制
TCP是一个提供面向连接的通信服务的协议。连接是需要数据交互的两个主机之间的虚拟线的创建。所有数据交互都通过这个线进行,而TCP负责创建、摧毁、维护和管理整个线
在建立连接之前,需要做一些准备,为了确保两端通信能正常地通信,发送器通过TCP的第一个部分发送SYN包作为建立连接的请求,等待接收者确认响应。如果接收器确认应响应并返回ACK包,表示接收者同意与发送者通信,然后发送器再次向接收者发送ACK包,表示已收到同意通知书,如果接收机不将确认的ACK包返回发送者,则两个端口将能够正常地通信。如果你不同意与发件人沟通,因此,两端自然不能互相交流
如果两端必须在通讯完成后切断,它还需要双向互连,以验证是否要切断通信。比如,先向接收者发送一个Fin包,告知想要断开连接,然后接收者可以向发送者返回一个ACK包,表明您同意切断,接收机也立即向发送者发送 FIN 包,表示愿意脱离联系,发送者在收到该包后立即将ACK包返回接收者,表明我同意解除连接。这样,两端就断开连接了
要归纳一下,一个完整的TCP连接需要至少发送7个数据包,其中3个数据包是完全的TCP连接和4个数据包是完全的TCP连接
让我们看一下完整的通信流程图

这是人们常说的:三手,四手
如果你不了解上面的创建和切断的过程,我会给你一个小例子
发送者与接收者之间的沟通就像两个人在日常生活中互相呼叫一样,例如,现在打电话A到B
这样简单的三道对话证实了双方都想互相交流,所以关系已经建立
所以当A和B完成交谈时,我们准备好了
三个对话证实了谈话的结束,因此,连接被断了
TCP不能获取整个数据包并直接发送到接收机,因为即使数据丢失发生,它也不会知道数据的哪个部分丢失,所以它使用分段发送数据的方法
在建立和切断连接时,接收器不仅必须向发送者发送请求响应,而且数据也必须相互作用
例如有一个数据包,我们可以按顺序给每个字母分配一个序列,然后我们假设每次向接收器发送100个序列区域之间的数据,首先发送的是序列号1~100的数据,当接收者接收时,它将向接收者返回响应请求,通知发送者下次发送序列编号1001~200的数据,过程如图所示

以上我们假设每个单元发送100 ** 间隔,但实际过程中,它不一定是这个值。
在前面的学习中,研究表明,数据链层的数据传输受到MTU(最大传输单元)的影响。若数据大于该值,IP将单独处理,所以我们不能尽可能地让这事发生,因此,你必须使每个传输的数据比通信线路上的最小的MTU小一点,这个值叫做MSS(最大消息长度)。
当连接建立时,当三个手被握住时,则计算值,例如,当发送者请求接收者时,传输包的MTU大小在其线上是400,当发送确认收到时,接收者会对发送者作出回应,其线上的MTU尺寸1460也附在包装上,此时,发射器接收了确认响应,并比较了两个MTU的大小,把这些最小值作为以后的数据传输的数据大小
如图:

正如我们所知,由于各种原因,在传输过程中可能出现数据丢失,而当数据丢失时,即发送者在数据发送后等了一段时间,并没有收到接收者确认答复,则被认为是数据丢失,然后再重复
包装损失有两种类型:
下面的图表显示了上述两个情况:
第一种情况:

第二种情况:

那么,发送者需要多久才能确定数据已经丢失,然后才收到数据发送后确认响应? 这取决于网络环境,而TCP则计算返回时间和延迟时间来决定每个数据包的等待时间
如果一个包在重复后再次丢失,下次你等待时将被指数函数延长两或四倍
但是它没有无限的重复,一旦重复的数量达到一定水平,就被认为是网络异常,双方通信将被迫关闭
以上介绍了发送数据段的TCP,在提高传输的可靠性的同时,但有一个致命的缺陷,那就是效率非常低,由于每个传输必须等待接收者确认的响应,如果整个数据被分成更多的部分,那么通信性能可能很低,因此TCP引入了窗口的概念
所谓“窗口”是指一个区域,其中连续的多参数数据可以连续发送,而无需等待确认的响应,例如图

我们假设每个数据段为100个,这里窗口大小为4个,因此发送者可以单独发送4个数据段,不需要等待发送数据段后确认响应,如图所示

此时,窗口包含了四个节点,即包含了400个字符的数据,我们称之为“窗口大小”
当接收器向发送器返回相应的确认响应时,发送器将继续发送超过4,00倍的确认响应的数据**,如图所示

如果使用这种技术来控制滑动窗口,即使发生数据丢失,它也不会产生很大的影响,因为接收机一方面接收发送器发送的数据,另一方面以某种方式通知发送器刚刚丢失的数据
接下来,让我们介绍它的行动过程,如图所示

图中,发送第二份数据时丢失(1001~200),因此接收器不接收相应的数据包,所以当发送器发送第三个数据时,返回的接收端仍然是确认的第二段应答复,然后发送者分别发送了数据的第四段和第五段,所有接收端返回第二个确认响应
因此,同样的确认被发送给发送者三次,使发送者知道数据的第二部分在发送数据的过程中已经丢失,因此丢失的数据将被发送回一个
然后,接收机收到收到之前丢失的数据后,因为以前的数据已经收到了,下次它开始要求从5001到600的数据
有时,发送器发送给接收机的数据超过接收机的最大负载容量,导致数据无法接收,导致后续数据检索,这是一种非常浪费的性能。
为了防止上述情况发生,TCP提供了一种机制,允许发送者在接收器的容量范围内尽可能多地每次发送数据,它实现的方式是接收器告诉发送者它可以接收的数据的大小,因此,发送者不会每次发送数据时超过该值,我们称这个值为窗口大小
一旦接收机暂时无法接收任何数据,它将通知发送机,因此发送机将停止发送数据,但为了遵循数据的正常传输,发送机将从时到时向接收机发送一个窗口来测试接收机是否能够继续接收数据
具体过程在下图所示

由于存在窗口控制,数据不再是单一传输,而是连续传输的多个数据包,因此有时候,如果网络拥挤,我们同时发送大量数据包,这可能导致网络瘫痪
TCP使用一种叫做慢启动技术的技术来缓解上述情况。慢启动是什么?它不是在开始时立即发送大量数据包,而是先发送一部分,然后根据接收和发送条件发送更多的数据包
让我们看一下具体的过程

如图中,发射器的窗口尺寸为100,因此,只发送100字节的数据包,此时接收器接收数据并返回确认响应,因此,发送器增加了一个窗口大小,也就是说,窗口的大小是200;发送器也发送了两个长度100的数据包,接收者接收数据并返回两个确认响应,因此,发送器将窗口大小翻倍,例如,窗户的尺寸是400个,这是一种推力
摘要:发送器的数据包每次发送都会指数增长1.2,4
但是,窗口的大小不会无限增大,而是将调整到一个特定的值,称为“慢启动阈值”

本文由 在线网速测试 整理编辑,转载请注明出处。