TCP 三次握手/四次挥手详解
TCP(Transmission Control Protocol) 传输控制协议
TCP 是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立
一个连接:
位码即 tcp 标志位,有 6 种标示:SYN(synchronous 建立联机) ACK(acknowledgement 确认)
PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent 紧急) Sequence number(顺序号
码) Acknowledge number(确认号码)
第一次握手:主机 A 发送位码为 syn=1,随机产生 seq number=1234567 的数据包到服务器,
主机 B 由 syn=1 知道,A 要求建立联机;
第二次 握手: 主 机 B 收到请求后要确认 联机信息,向 A 发送 ack number=( 主机 A 的
seq+1),syn=1,ack=1,随机产生 seq=7654321 的包
第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1,以及
位码 ack 是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机
B 收到后确认 seq 值与 ack=1 则连接建立成功。
完成三次握手,主机 A 与主机 B 开始传送数据。
在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,
等待服务器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一
个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器 进入 SYN_RECV 状态; 第三次握手:
客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,
客户端和服务器进入 ESTABLISHED 状态,完成三次握手。 完成三次握手,客户端与服务
器开始传送数据。
实例:
IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1
第一次握手:192.168.1.116 发送位码 syn=1,随机产生 seq number=3626544836 的数据包到
192.168.1.123,192.168.1.123 由 SYN=1 知道 192.168.1.116 要求建立联机;
第 二 次 握 手 : 192.168.1.123 收 到 请 求 后 要 确 认 联 机 信 息 , 向 192.168.1.116 发 送 ack
number=3626544837,syn=1,ack=1,随机产生 seq=1739326486 的包;
第 三 次握 手: 192.168.1.116 收 到后 检查 ack number 是 否正 确, 即第 一次 发送 的 seq
number+1, 以 及 位 码 ack 是 否 为 1 , 若 正 确 , 192.168.1.116 会 再 发 送 ack
number=1739326487,ack=1,192.168.1.123 收到后确认 seq=seq+1,ack=1 则连接建立成功。
图解:
一个三次握手的过程(图 1,图 2)