URG与PSH的区别

来源:互联网 发布:安卓微信数据能恢复吗 编辑:程序博客网 时间:2024/05/22 13:22

我们先看一张图是TCP的段格式:
这里写图片描述
我们看到有6位标志位,其中今天主要来看的就是URG与PSH。
URG标志位:
URG(紧急位)是表示紧急指针是否有效,当URG为1的时候就表示紧急指针是有效的。紧急指针通常情况下是无效的,当设置为有效的时候就表示数据要优先处理。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
TCP的紧急方式是发送端向另一端发送紧急数据的一种方式,紧急指针指向的是包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),紧急数据是不进入缓冲区的直接交给上层进程的(一般情况下TCP是要等到整个缓存都满了再向上交付的)。

PSH标志位:
PSH标志是为了提示接收端的应用程序应该立即从TCP的接收缓冲区中拿走数据,为了接收后续的数据来腾出空间(如果应用程序不将接收到的数据拿走的话,它们就会一直都留在TCP的接收缓冲区中) 。
PSH(急迫位)当PSH为1的时候,客户端发给服务器的报文段立即被服务器TCP交付给应用程序来处理,而不用等整个缓存都填满再向上交付。一般情况下,TCP是等缓冲区写满再向上交付的,当PSH为1的时候数据还是要进入缓存区向上提交的,只不过不用等缓冲区满后才提交。这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。

URG与PSH的区别:
发送方URG有效的时候,发送的数据不用进入缓冲区而直接交付给上一层;
发送方PSH有效的时候,接收方收到后,发送的数据要进入缓冲区但不用等缓冲区满就交给上一层。


URG是针对发送方发送紧急数据的,PSH是针对接收方,接收方尽快将数据向上层交付。

原创粉丝点击