TCP协议头部一共有六个控制位:其中包括URG、ACK、PSH、RST、SYN、FIN.
<1>紧急URG紧急指针,告诉接受TCP模块紧要指针域指着紧要数据;
<2>推送PSH置1时请求的数据段在接收方得到后就可直接送达应用程序,而不必等到缓冲区满时才发送;
<3>复位RST置1时重新连接。如果接收到RST位,通常发生了某些错误;
<4>同步SYN置1时用来发送一个连接;
<5>终止FIN置1时表示发送端完成发送任务。用来释放连接,表示发送方已经没有数据发送了;
<6>确认ACK置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略),ACK为确认标志位,如果ACK为1,表示数据包中的确认号有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1;
这里主要介绍URG与PSH的区别及联系。
<1>URG为紧急数据标志,如果URG为1,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据应尽快传送,而不是原来的排队顺序来传送。于是发送方TCP就将紧急数据插入到本报文段数据的最前面。
<2>PSH位,表示强迫数据传输。告诉对方收到报文段后是否应该立即把数据推送给上层,如果为1,表示应该立即把数据提交给上层,而不是缓存起来。
共同点: URG和PSH都是提高报文段的优先级,使报文段更先推送给上层。
不同点:两者将报文段更先推送给上层的方法不一样。
URG是通过置1,来让后面的紧急指针字段有效,从而让报文段更先发送;
PSH是通过置1,把数据立即提交给上层,而不是等待缓存区满,才发送给上层。
简言之,URG是针对发送方发送紧急数据的,PSH是针对接收方,接收方尽快将数据向上层交付。