传输层协议有哪些(消息队列的使用场景)( 二 )



建立TCP(三次握手):
第一步,客户端的TCP向服务器的TCP发送连接请求消息段 。这个特殊的消息段不包含应用层数据,报头中的SYN标志位设置为1 。此外,客户机会随机选择一个起始序列号 。
其次,服务器的TCP收到连接请求消息段后,向客户端发送确认是否同意建立连接的消息,并为TCP连接分配TCP缓存和变量 。在确认段中,SYN ACK(确认帧)位全部设置为1(说明现在有效),确认号字段的值为X 1,服务器随机发生初始序列号确认段不同的情况,不包括应用层数据 。
第三步,当客户端收到确认消息段时,也要给服务器确认,并给链接分配缓存和变量 。该段的确认标志位设置为1 。这个片段可以携带数据 。如果不携带数据,则不会消耗序列号 。
成功执行上述三个步骤后,建立TCP连接,然后可以传输应用层数据 。TCP提供全双工接入,因此双方的应用进程可以随时发送数据 。另外,值得注意的是,服务器的资源是在第二次握手完成时分配的,而客户端的资源是在三次握手完成时分配的,这使得服务器容易受到SYN泛洪攻击 。

传输层协议有哪些(消息队列的使用场景)

文章插图

释放TCP连接(第四次握手)
TCP连接中涉及的两个进程中的任何一个都可以终止连接 。TCP连接释放的过程通常称为四次握手 。
第一步,客户端计算关闭连接时,向TCP发送连接,释放报文段并停止发送数据,自动关闭连接报文段的TCP的FIN状态 。设置为1,等于先前传输数据的最后一个字节的序列号 。1 TCP是全双工的,可以想象一个TCP连接上有两条数据路径 。发送FIN消息时,发送FIN的一端不能再发送数据,其中一条数据路径关闭,但另一端仍然可以发送数据 。
第二步,服务器收到连接释放报文段后发送确认,该报文段的序号使V等于其之前传输的数据最后一个字节的序号加1 。此时,从客户端到服务器的连接被释放 。TCP连接处于半封闭状态,但如果服务器发送数据,客户端仍然需要吸收服务器到客户端的链路,并不是封闭的 。
第三步,如果服务器没有数据发送给客户端,通知TCP释放连接,此时发出FIN=1的连接释放消息段 。
第四步,客户端收到连接并释放报文段后,必须发送确认,然后确认报文段中的ACK字段设置为1 。此时TCP连接还没有释放,时间期望定时器设置的时间必须经过,2MSL才能进入连接关闭状态 。

传输层协议有哪些(消息队列的使用场景)

文章插图
TCP可靠传输
TCP的义务是基本上通过IP层不可靠的努力,为服务建立可靠的数据传输服务 。TCP提供的可靠数据传输服务保证了接收方的进程,从缓冲区读取的字节流和发送方发送的字节流一样完整 。TCP应用检查、序列号、确认和重传等机制来实现这一目标 。TCP的验证机制与UDP验证相同 。
有两件事会导致TCP重传超时和冗余确认 。
超时:每次TCP发送一个消息段,它必须为这个消息段设置一个定时器 。计时器设置的重传时间到期,但该段将在收到确认之前重传 。
冗余确认:重传的问题是超时周期通常太长 。简单来说,发送方通常可以在超时事件发生之前,通过关注所谓的冗余ACK来检测丢包 。冗余确认是为了再次确认某个数据段的确认发送方之前已经收到了该数据段的确认 。
TCP流量控制:
提供TCP流量控制服务是为了清除发送方溢出接收方缓冲区的可能性,所以可以说流量控制是一种速度匹配服务,简单来说就是 。送的东西太多了 。吸收太慢,无法匹配 。传输层和数据链路层的流量控制的区别在于,传输层定义了端到端用户之间的流量控制,而数据链路层定义了中间两个对应节点的流量控制 。此外,数据链路层滑动窗口协议的窗口大小不能动态改变,但传输层可以动态改变 。

传输层协议有哪些(消息队列的使用场景)

文章插图
TCP拥塞控制:
拥塞控制是指防止过多的数据注入网络,使网络中的路由器或链路不会过载 。当拥塞发生时,端点不知道拥塞的细节 。对于通信连接的端点,拥塞往往表现为通信时延的增加 。当然,拥堵控制和交通控制有相似之处 。他们都通过控制发送者发送数据的速率来控制后果 。
拥塞控制与流量控制的区别:拥塞控制是使网络能够承受现有网络负载的全局过程,涉及所有主机、所有路由器以及与网络传输性能下降相关的所有因素 。相反,流量控制往往是掌握和吸收该点流量的导向 。掌握发送方要做的永远是发送方发送数据的速度,这样接收方才能及时吸收 。


推荐阅读