上位机面试必备——TCP通信灵魂二十问【上】 (2)

TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。

不使用「两次握手」和「四次握手」的原因:

两次握手:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;

       四次握手:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

10、TCP挥手为什么需要四次?

回顾下四次挥手双方发 FIN 包的过程,就能理解为什么挥手需要四次:

关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据。

服务器收到客户端的 FIN 报文时,先回一个 ACK 应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。

由于服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次。

今日直播

    为了让大家对TCP通信原理有更好的认识,今晚直播课主题《TCP三次握手及四次挥手原理分析》,扫描下方二维码或查看原文,进入后点击下方免费订阅即可。

 

上位机面试必备——TCP通信灵魂二十问【上】

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzzyx.html