Tcp: Transmission Control protocol传输控制协议(转载)
Tcp是主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。
位码即标记位,有6种表示:syn(Synchronous)建立联机,ACK(acknowledgement)确认,PSH(push)传送,FIN(finish)结束,RST(rest)重置,URG(urgent)紧急,Seq(sequence number)顺序号,Acknowledgement number确认顺序号。
第一次握手:主机A发送syn=1,随机参数顺序号seq number=1234567的数据包到服务器,主机B由syn=1知道,A要求建立联机。
第二次握手:主机B收到请求后要确认联机信息,向A发送Ack number=(主机A的seq number+1),syn=1,ack=1,随机产生seq = 7654321。
第三次握手:主机A收到后确认Ack number是否正确,即第一次发送的seq+1,ack=1。若正确,主机A会在发送ack number=(主机B的seq number+1),ack=1,主机B收到seq值与ack=1确认正确,联机成功。
完成3次握手,主机A与主机B开始传送数据。
Tcp/IP采用3次握手建立一个可靠的连接。
第一次握手:建立连接是,客户端发送syn包到服务器(syn=j),并进入syn_send状态,等待服务器确认。
第二次握手:服务器收到syn包,必须回复客户端SYN包的确认Ack包(ack = j +1),同时自己也发送一个SYN包(syn = k),即syn+ack包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到SYN+ACK包,向服务器SYN回复确认Ack包(ack = k+1),此包发送完毕,客户端和服务器进入established状态,完成3次握手。然后客户端和 服务器端进行传输数据。
实例:
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则连接建立成功。
TCP的断开采用4次握手的机制。
客户端的状态:
服务端的状态: