当前位置:   article > 正文

【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

1.三次挥手

01
1)第一次握手:建立连接时,客户端向服务器发送SYN包(seq=x),请求建立连接,等待确认
2)第二次握手:服务端收到客户端的SYN包,回一个ACK包(ACK=x+1)确认收到,同时发送一个SYN包(seq=y)给客户端
3)第三次握手:客户端收到SYN+ACK包,再回一个ACK包(ACK=y+1)告诉服务端已经收到
4)三次握手完成,成功建立连接,开始传输数据
02
开始数据传输…

2.四次挥手

03
1)客户端发送FIN包(FIN=1)给服务端,告诉它自己的数据已经发送完毕,请求终止连接,此时客户端不发送数据,但还能接收数据
2)服务端收到FIN包,回一个ACK包给客户端告诉它已经收到包了,此时还没有断开socket连接,而是等待剩下的数据传输完毕(此时客户端进入FIN-WAIT1状态)
3)服务端等待数据传输完毕后,向客户端发送FIN包,表明可以断开连接(客户端进入FIN-WAIT2状态)
4)客户端收到后,回一个ACK包表明确认收到,等待一段时间(2MSL),确保服务端不再有数据发过来,然后彻底断开连接

3.拓展

说说 TCP 2次握手行不行?为什么要3次

  1. 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
  2. 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/383706
推荐阅读
相关标签
  

闽ICP备14008679号