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


先简单说一个掌握比赛的算法 。很简单 。请看图片 。

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

文章插图

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

文章插图
这一章的总结很难:
1)为什么不握手两次来建立凝聚力?
这对于防止在两次握手突然被传输到服务器的情况下失败的连接请求消息段的失败是重要的 。考虑以下情况:客户端A向服务器b发送TCP连接请求的第一个请求,消息在网络上的某个节点停留了很长时间,A认为超时后消息丢失,所以再次重传 。收到消息后,B建立连接 。数据传输后,双方断开连接,此时之前滞留在网络中的连接需要到达服务器B,B以为A再次发送连接请求 。如果此时应用三次握手,那么B将向A返回一个确认消息段 。由于这是一个无效的请求,A将忽略它,并且无法建立连接 。如果采用两次握手,这种情况下,B认为传输连接已经建立,一直期待A传输数据,而A此时没有连接要求,所以忽略了,造成B的资源浪费 。
2)为什么不用三次握手释放连接,发送最后一次握手消息期待2MSL?
原因有二:(面试问不完)
1)保证A发送的最后一个确认段可以到达b,如果A不期待2MSL,如果A返回的最后一个确认段丢失,将无法进入正常关闭状态,此时关闭将无法重传 。
2)防止出现“无效连接请求报文段”a .发送完最后一个确认报文段后,2MSL可以保证在这个连续时间内发生的所有报文从网络中消失,导致的问题与下面描述的类似,无需两次握手即可建立连接 。
服务器停止TCP连接的时间比客户端早,因为客户端在最后等待2MSL后就可以进入CLOSED状态(简称TCP closed状态) 。
假设在一个互联网中,所有服务的传输都没有错误,所有节点都不会产生故障诗 。在这种情况下,可靠交付TCP的功效是否过剩?
1)每个IP数据包都是独立路由的,因此到达目的主机时可能会出现故障 。
2)由于路由计算的出现,IP包在互联网中盘旋,最后在包的头部生存时间的值降到零,包在中途丢失 。
3)路由器突然有大量流量,导致路由器没有时间处理到达的数据包,所以丢弃了一些数据包 。
这说明有必要依靠TCP可靠的传递效率,可以保证准确的消息被目标主机的目标进程吸收 。


推荐阅读