TCP中的URG与PSH

Posted Luella_G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP中的URG与PSH相关的知识,希望对你有一定的参考价值。

TCP段格式如下图所示:


其中,URG、ACK、PSH、RST、SYN、FIN是控制位,其功能为:

URG:表示本报文段中发送的数据是否包含紧急数据。URG=1,表示有紧急数据。紧急指针字段只有当URG=1时才有效。
ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。TCP规定,连接建立后,ACK必须为1。
PSH:告诉对方收到该报文段后是否应该立即把数据推送给上层。如果为1,则表示对方应当立即把数据提交给上层,而不是缓存起来。
RST:只有当RST=1时才有效。如果收到一个RST=1的报文,说明与主机的连接出现了严重错误,必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应。
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。只有在前两次握手中SYN才置为1。
FIN:标记数据是否发送完毕。如果FIN=1,则可以释放连接。
URG与PSH的区别:
URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),不进入接收缓冲,直接交给上层进程,余下的数据都是要进入接收缓冲的;一般来说TCP是要等到整个缓存都填满了后再向上交付,但是如果PSH=1的话,就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区中交付的,URG是不要经过缓冲区的。

以上是关于TCP中的URG与PSH的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议中URG与PSH的区别

TCP中的URG标志与PSH标志有什么不同?

传输层的端口与TCP标志中的URG和PSH位

【tcp】TCP报文段中URG和PSH的区别

TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)

TCP协议中的保留位、偏移位、控制位