计算机网络面试题(九):TCP四次挥手

计算机网络面试题(九):TCP四次挥手


TCP四次挥手

挥手重要标号:FIN

FIN=1 代表申请断开TCP连接

计算机网络面试题(九):TCP四次挥手

  • 确认字符ACK含义:说明当前这个报文是针对之前的哪个报文的验证。因为在TCP连接上会有很多请求(例如管线化)
  • ***seq含义代表当前这个报文的序号

TCP四次挥手过程:

  1. 客户端发送断开TCP连接的请求报文

报文:FIN=1, seq=x

  • FIN=1:代表请求断开TCP连接
  • seq=x:给这个请求打一个标号,x是生成的随机数

  1. 服务端回复客户端的断开请求

报文:FIN=1, ACK=x+1, seq=y

  • FIN=1:代表断开TCP请求
  • ACK=x+1:确认字符,在发送端的***x上面+1,这样就说明了是针对客户端***是x的报文的确认
  • seq=y:给当前这个回复报文随机生成一个***(相当于标记)

***seq相当于是给当前报文的一个标号,方便识别。一个TCP连接上面可能会有很多的报文来往,故需要这样一个标号


  1. 服务端在第一次回复之后不会马上就断开TCP连接,而是会先确保断开前,所传输的数据是否已经传输完成了(分手了也得把东西收拾完)

    确认完毕后再回复一个报文

报文:FIN=1,ACK=x+1, seq=z

  • FIN=1:代表断开TCP连接
  • ACK=x+1:依然是针对上***是x的客户端请求的确认报文
  • seq=z:给当前这个报文一个标号

  1. 客户端收到服务端的回复后再知会一声

报文:FIN=1,ACK=y+1,seq=h

  • FIN=1:断开TCP连接
  • ACK=y+1:代表是针对标号是y的服务端报文的确认字符
  • seq=h:给当前报文一个标号