首页 > 代码库 > TCP协议的3次握手与4次挥手过程【深度详解】

TCP协议的3次握手与4次挥手过程【深度详解】

一、前沿

  尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。

  本文将分别讲解经典的TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程。

  更多资料请查阅《TCP/IP 详解》这本书,地址是:http://www.52im.net/topic-tcpipvol1.html。

二、TCP报文格式

TCP/IP协议的详细信息参看《TCP/IP 协议详解》中有关TCP格式的章节(点此查看《TCP/IP详解 在线版》)。

下面是TCP报文格式图:
技术分享

上图中有几个字段需要重点介绍下:

(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:释放一个连接。

TCP协议的3次握手与4次挥手过程【深度详解】