tcp协议是传输层协议,负责封装的数据包点对点的可靠传输。
在进行数据传输之前,需要建立连接。建立连接有三个阶段,也就是经常说的三次握手。在握手的时候,需要知道对方握手的目的,这是通过tcp请求报文中的6个标志位来控制的:
(1)SYN:同步(synchronous),表示发起一个新连接;
(2)ACK:确认(acknowledgement),确认序号有效;
(3)PSH:传送(push);
(4)RST:重置连接(reset);
(5)URG:紧急(urgent)。
(6)FIN:释放一个连接(finish)。
三次握手:(建立连接)
第一次握手:主机A发送建立连接请求,标志位为SYN=1,随机产生请求码seq。主机A进入请求同步发送状态(SYN_SENT)。主机B通过SYN=1得知,A请求建立连接;
第二次握手:主机B接收到A的请求之后,向A发送报文。包括标志位ACK=1(确认收到请求)和 SYN=1(同步请求)。主机B进入请求同步确认等待状态(SYN_RCVD)主机A收到请求后,确认主机B发送过来的确认码ack是否正确(等于第一次握手时发送给B的请求码seq+1)。;
第三次握手:主机A收到请求后,确认主机B发送过来的确认码ack是否正确(等于第一次握手时发送给B的请求码seq+1)。如果正确,主机A会给主机B发送确认码,并进入等待连接状态(ESTABLISHED)。主机B收到确认码后,检查确认码是否正确,如果正确B也进入等待连接状态,连接建立成功。