最后更新:2022-06-28 19:13:54 手机定位技术交流文章
TCP一个面向连接的传输层控制协议被称作,因为两个过程需要在一个应用程序发送数据到另一个应用程序之前握手。
TCP是全职通讯服务,如果一台主机上的进程A与另一台主机上的进程B存在一条TCP连接,那么应用层数据可以从A->B,也可以C->A,并且这可以是同时发生的;
TCP是点到点通信在TCP连接中的点到点通信,即所谓的“多播”模式,不被TCP支持。
客户端首先发送一个特别的TCP消息,服务器以另一个特别的TCP消息作出响应,客户端最后以第三个特别的TCP消息作出响应。有效载荷第三段的报告可以载有数据,这些几种过程一般称为三次握手。
一旦手柄成功握住,该过程就可以进行通信。 客户端系统将TCP传输数据保存到发送缓存在这种情况下,发送缓冲是三个握手启动期间设置的缓冲之一,然后TCP协议服务会偶尔从发送缓冲中提取数据并将数据转移到操作系统网络层服务。
**TCP可以从缓存中提取数据并将其放在报告部分的数量有限**
**最大消息长度MSS**.MSS通常基于由本地发送主机发送的最初确定的链层最大帧长度(**最大传输单元MTU**该设置确保一个TCP消息字段加上TCP/IP初级 (40字节)适用于数据链帧,以及Ethernet和PP链层协议都具有1500字节的MTU,因此MSS总值为**1460字节**。
TCP将第一个TCP数据连接到每个客户端数据,这会创建多个TCP段。这些段落被发送到网络层,网络层将它包含在网络层数据报告中,添加IP数据第一部分操作等,随后,定居层继续沉没,最后发送到网络上。
当服务端收到TCP消息段时,消息段数据被插入服务端的TCP连接接收缓存然后应用程序读取数据流。
我要偷了图林老师的照片!
序列号当TCP建立连接时,由操作系统生成的随机数值作为初始值通过SYN数据包传递给接收者。每次数据发送时,该值会同时增加数据包大小的许多值,以解决数据包故障问题。
确认应答号下一次发送方接收此确认编号的预期数据的序列,可以假设在此序列之前的数据是正常接受的,目的是解决包装损失的问题。
首部长度描述TCP头部的总长度。典型的TCP头部长度是20字节。
接受窗口TCP交通管制工作
选项用于发送者与接收者之间的最大消息长度MSS谈判,或作为高速网络中的窗口调节因素。
紧急数据指针当紧急数据存在并提供紧急数据尾指针时,TCP必须通知接收层的上层。
控制标志位:
TCP协议是面向连接的,它的连接分为三个步骤,我们通常称之为三次握手,如图大概所示:
我们编译了TCP的三个握手的细节:
由于对TCP三向握手过程的熟悉,TCP不连接的连接使用了四个握手,因此更容易理解
由于服务端的ACK和 FIN进程需要处理和等待TCP数据,所以这两个进程不能结合为一个步骤,需要四个握手。
MSL报告的最高预期寿命,这是网络上任何消息存在的时间最长,超过这个时间的报告将被丢弃。因为TCP基于IP协议,在IP协议的第一个字段中有一个TTL延迟时间字段,这个数字是通过路由传递的数据信息的最大数目,如果你不通过一个路由点,你就会输掉1,当值为0时,数据包则丢弃。time_wait通常是双重MSL,因为发送者在RTT间隔发送数据并接收响应。这个MSL不同的操作系统具有不同的值,一般是30秒,但还有一个一分钟的、两分钟的系统。
发起者需要输入时间等待状态有两个原因:
如果TCP没有流量控制,如果客户端向服务端点发送一个疯狂的数据消息,会发生什么? TCP提供了一种机制,允许客户端和服务端点根据实际接收情况发送数据,称为流量控制。
TCP是通过一个名称接收窗口接收机窗口给发送者指示接收机有多少可用的接收缓冲区。 发送者TCP将发送一个正常缓冲区窗口探测包探索窗口空洞。 但是,窗口检测包可能会丢失,一旦丢失,发送器不会发送数据,所以窗口检测包将随机发送。
TCP规范规定,主机A检测到主机B在0时接收缓存,不能继续发送数据,但是当主机B开始有一个空的缓存时,A是不知道的,因此,规范规定当主机B的接收窗口为0时,主机A继续在消息部分发送一个字节的数据,这些陈述将由收件人确认,然后,当主机B有一个空的缓存后,确认消息将包含非零接受窗口值。
计算机网络是一个共享环境,不同主机之间的通信可能干扰链路的通信是网络拥塞,TCP的流量控制只解决了接收者和发送者不足的缓存问题,但网络链无法控制。当网络拥堵发生时,如果TCP发送器仍然发送数据消息,可能导致数据报告的延迟和损失,此时,TCP发送器将检索消息,一旦重发,它还将加剧整个网络链的拥挤问题,如此恶性循环。
为了解决上述问题,TCP提供拥塞控制为了避免发送者的数据填满整个网络,TCP定义了一个电话拥塞窗口的概念来解决。
拥塞窗口 cwnd一个由TCP发送者维护的状态变量,在网络拥塞程度上动态变化。 当网络平稳流动时,所定值增加和减少。 拥塞控制算法如下:
TCP开始建立连接时,cwnd会设置很小,例如为1MSS,在第一个报文确认后,cwnd值就会成倍增加,1->2->4->8以此类推
但发送速度不能持续增加,并且有三个条件阻碍它:
1.如果慢启动的发送过程遇到数据包丢失,那么TCP将发送的cwnd设置为1,重新启动慢进程。
2.如果有交通堵塞,TCP将维持一个慢慢启动阈值当发送交通堵塞时,cwnd是 ssthresh/2
3.如果发现三个冗余的ACK,TCP会快速重新传输并进入恢复状态。
当TCP进入拥堵控制状态时,cwnd的值相当于拥堵时间的一半,因此每次消息到达时不能将cwnd的值翻倍,而是将MSS添加到cwnd的值。
对于导致TCP输入缺失快速恢复状态的消息段,每收到冗余的ACK,cwnd的价值将增加MSS,当ACK到达缺失消息段时,TCP在降低cwnd后进入交通阻塞状态。超时在交通堵塞控制状态后发生,然后它移动到慢启动状态,cwnd的值设置为1MSS,ssthresh的值设置为cwnd的一半。
TCP的再传输机制是可靠传输的保证之一。TCP设计了一种再传输机制来解决损失问题。有四个共同的再传输机制:
发送者在发送数据时设置计时器,如果指定时间后ACK响应没有收到,则重新发送消息。 然而,如果数据重复过期,TCP的策略是将过期时间翻倍,这很简单,但在极端情况下过期时间很长。
如图所示:
当发送和接收三个冗余的ACK来响应消息时,将执行缺失消息的快速重传,但重传seq2或所有seq2之后将在不同的系统上进行不同的重传。
此模式需要第一个TCP请求选项在字段中设置SACK状态值,使发送者知道接收者的缓存中存储哪些数据,然后选择性地重新发送它。
D-SACK依靠SACK来重复高速传送器接收的数据。
本文由 在线网速测试 整理编辑,转载请注明出处。