【TCP三次握手】确认两个方向上的数据传输通道是否正常
TCP connection:TCP创建一个客户端到服务器的连接通道,请求和响应通过这个通道发送。TCP的三次握手即是TCP连接的建立过程,都是由一方主动打开,一方被动打开的。
TCP报文的字段:
(1)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。
【确认方的Ack和标志位的ACK含义不一致,标志位的ACK表明序号字段有效】
【TCP报文中,客户端和服务器的确认号Ack和序号seq都是在彼此的Ack和seq的值上确定的,所以TCP报文的传输是连续的,某一方的报文丢失,TCP握手都不能完成。】
TCP第三次握手的意义:“第三次握手”是客户端向服务器端发送数据,这个数据就是要告诉服务器,客户端有没有收到服务器“第二次握手”时传过去的数据。若发送的这个数据是“收到了”的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口。由此减少服务器开销和接收到失效请求发生的错误。