通俗理解TCP/IP协议三次握手与四次分手流程

三次握手流程

  1. 客户端发个请求“开门呐,我要进来”给服务器
  2. 服务器发个“进来吧,我去给你开门”给客户端
  3. 客户端有很客气的发个“谢谢,我要进来了”给服务器

四次挥手流程

  1. 客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
  2. 服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
  3. 服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)
  4. 客户端发个“我知道了,我走了”,之后自己就走了

TCP报文格式
TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:

通俗理解TCP/IP协议三次握手与四次分手流程_第1张图片


  上图中有几个字段需要重点介绍下:
  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
  (A)URG:紧急指针(urgent pointer)有效。
  (B)ACK:确认序号有效。
  (C)PSH:接收方应该尽快将这个报文交给应用层。
  (D)RST:重置连接。
  (E)SYN:发起一个新连接。
  (F)FIN:释放一个连接。

具体流程图如下:

三次握手的过程(客户端我们用A表示,服务器端用B表示)

前提:A主动打开,B被动打开

通俗理解TCP/IP协议三次握手与四次分手流程_第2张图片

四次分手的过程(客户端我们用A表示,服务器端用B表示)

前提:A主动关闭,B被动关闭

通俗理解TCP/IP协议三次握手与四次分手流程_第3张图片


你可能感兴趣的:(Socket)