TCP三次握手与四次挥手

1.TCP三次握手建立连接

  1. 首先客户端初始化序列号,syn位设置位1发送给服务端
  2. 服务端接收之后确认应答号设置为序列号+1,syn和ack都设置位1发送给客户端
  3. 客户端接收之后确认应答号设置为序列号+1,ack设置为1然后发送给服务端,然后服务端接收后状态设置为建立连接状态

2.为啥是3次握手?

1.防止历史连接造成影响,比如客户端发送第一次握手请求之后宕机了,然后恢复之后又发送新的握手请求,此时如果是2次握手的话就会导致历史连接恢复造成资源浪费,三次握手给了服务端缓冲时间。

2.还有一个原因就是同步双方的初始序列号

3.四次挥手断开连接

1.客户端主动断开连接,向服务端发送FIN报文,之后客户端进入FIN_WAIT1状态

2.服务端收到后,发送ACK确认报文,进入CLOSE_WAIT状态

3.客户端收到ACK确认报文后进入FIN_WAIT2状态,

4.服务端再次发送FIN报文,之后进入LAST_ACK状态

5.客户端收到FIN报文,发送ACK报文,进入TIME_WAIT状态,

6.服务端收到ACK之后进入CLOSE状态

7.客户端等待2MSL之后进入CLOSE状态

来源:https://www.xiaolincoding.com/network/3_tcp/tcp_interview.html#tcp-%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E8%BF%87%E7%A8%8B%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84

全部评论

相关推荐

评论
点赞
2
分享
牛客网
牛客企业服务