参考自:面试官,不要再问我三次握手和四次挥手_猿人谷 三次握手四次挥手-CSDN博客文章浏览阅读10w+次,点赞4.2k次,收藏2.1w次。三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的:面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就..._猿人谷 三次握手四次挥手https://blog.csdn.net/hyg0811/article/details/102366854?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172010014916800185813811%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172010014916800185813811&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-102366854-null-null.142^v100^pc_search_result_base4&utm_term=tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B&spm=1018.2226.3001.4187 三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
四次挥手是指终止一个连接要经过四次发包。这由TCP的半关闭造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。
TCP 连接的拆除需要发送四个包,因此称为四次挥手,客户端或服务端均可主动发起挥手动作。
三次和四次的原因:
三次,指建立TCP连接时需发送三个包。先是客户端向服务器发送请求,以此来验证客户端的发送能力和服务器的接收能力是否正常;第二次是服务器在收到客户端请求后回复的请求,以此来验证服务器的发送能力和客户端的接收能力。至此好似已经可以得出服务器与客户端的收发能力了,为什么还需要第三次。那是因为此时是虚的,第二次中服务器还不能知道客户端的接收能力是正常的,只是客户端知道自己接收能力正常,为告诉服务器自己接收能力正常,需要在回复一个包。所以有了三次握手。
四次,指断开TCP连接时需发送四个包。当客户端数据发送完毕,想结束断开链接,此时就有了第一个包的发送,告诉服务器,客户端已发送完数据,想断开连接。服务器收到以后,便发送一个包回答客户端,表明服务器已经知道了客户端的请求,这就有了两个包。但光是客户端数据发送完成还不行,还需服务器接收完成才能断开,而在服务器完成接收后向客户端发出一个包,表示我已接收完数据可以结束,届时客户端也需回复服务器一个包表示清楚。在两者都完成的情况下才断开连接,也就一共四个包。