美文网首页
【tcp】TCP报文段中URG和PSH的区别

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

作者: Bogon | 来源:发表于2021-11-07 00:05 被阅读0次

TCP报文段首部最小长度是20个字节。

TCP报文段的首部格式

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。

 它们的含义是:

SYN 表示建立连接,

FIN 表示关闭连接,

ACK 表示响应,

PSH 表示有 DATA数据传输,

RST 表示连接重置。

 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应.

 如果只是单个的一个SYN,它表示的只是建立连接,TCP的几次握手就是通过这样的ACK表现出来的。

 但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接,RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。

 一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。

PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。

TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。


URG和PSH的区别

URG:紧急标志位,表示的是此报文段中有紧急数据,将紧急数据排在普通数据的前面;当接受端收到此报文后后必须先处理紧急数据,而后再处理普通数据。

PSH: 催促标志位,当发送端将PSH置为1时,TCP会立即创建一个报文并发送。接受端收到PSH为1的报文后就立即将接受缓冲区内数据向上交付给应用程序,而不是等待缓冲区满后再交付。

 URG(紧急位):设置为1时,首部中的紧急指针有效;为0时,紧急指针没有意义。

 PSH(推位):当设置为1时,要求把数据尽快的交给应用层,不做处理

通常的数据中都会带有PSH但URG只在紧急数据的时设置,也称“带外数据”,解释如下:

  紧急数据:URG标志设置为1时,紧急指针才有效,紧急方式是向对方发送紧急数据的一种方式,表示数据要优先处理。他是一个正的偏移量,与TCP收不中序号字段的值相加表示紧急数据后面的字节,即紧急指针是指向紧急数据最后一个字节的下一个字节。这是协议编写上的错误,RFC1122中对此给出了更正说明,紧急指针是数据最后一个字节,不是最后字节的下一位置,TCP首部中只有紧急指针指出紧急数据的位置,他所指的字节为紧急数据,但没有办法指定紧急数据的长度。

  URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指向字节就是紧急数据)不进入缓冲区(一般不都是待发送的数据要先进入发送缓存吗?就直接交个上层进程,余下的数据都是要进入接收缓冲的;一般来说TCP是要等到整个缓存都填满了后在向上交付,但是如果PSH=1的话,就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区交付的,URG是不经缓冲区的。

相关文章

网友评论

      本文标题:【tcp】TCP报文段中URG和PSH的区别

      本文链接:https://www.haomeiwen.com/subject/cvjjzltx.html