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