URG与PSH的区别与联系

来源:互联网 发布:南太铉退团 知乎 编辑:程序博客网 时间:2024/06/15 18:41

TCP协议头部一共有六个控制位:

  1. 紧急URG紧急指针,告诉接受TCP模块紧要指针域指着紧要数据
  2. 确认ACK置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略)
  3. 推送PSH置1时请求的数据段在接收方得到后就可直接送达应用程序,而不必等到缓冲区满时才发送。
  4. 复位RST置1时重新连接。如果接收到RST位,通常发生了某些错误。
  5. 同步SYN置1时用来发送一个连接。
  6. 终止FIN置1时表示发送端完成发送任务。用来释放连接,表示发送方已经没有数据发送了。

ACK为确认标志位,如果ACK为1,表示数据包中的确认号有效。TCP规定,在连接建立后所有传送的
报文段都必须把ACK置1。

RST位标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。
RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。

SYN标志位用来建立连接,如果SYN=1而ACK=0;表示它是一个连接请求;如果SYN=1,且ACk=1
则表示同意建立一个连接。

FIN为1时,表示数据已经发送完毕,希望释放连接。

不合法的标志位组合:

  1. 所有标志位都为0
  2. SYN和FIN同时被置为1
  3. SYN和RST同时被置为1
  4. FIN和RST同时被置为1
  5. FIN被置为1,但ACK位没有被置1
  6. PSH位被置1,但ACK位没有被置1
  7. URG位被置1,但ACK位没有被置1.

其中URG不能和PSH标志位不能同时使用。
含义:
URG为紧急数据标志,如果URG为1,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据
应尽快传送,而不是原来的排队顺序来传送。当URG置为1时,发送应用进程就告诉发送方的TCP
有紧急数据要传送,于是发送发TCP就把紧急数据插入到本报文段数据的最前面。

PSH位,表示强迫数据传输。告诉对方收到报文段后是否应该立即把数据推送给上层,如果为1,
表示应该立即把数据提交给上层,而不是缓存起来。

区别:

共同点: URG和PSH都是提高报文段的优先级,使报文段更先推送给上层。

不同点:两者将报文段更先推送给上层的方法不一样。

URG是通过置1,来让后面的紧急指针字段有效,从而让报文段更先发送;

PSH是通过置1,把数据立即提交给上层,而不是等待缓存区满,才发送给上层。