首页 > 代码库 > TCP中的URG标志与PSH标志有什么不同?

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

  为了解决这个问题之前,先复习一下TCP的报头.

  技术分享

一、TCP报头分析

  第一行:从左到右表示16位源目标端口号与16位目地端口号,通过端口可以标识互联网上唯一的进程.

  第二行:32位序号,用来保证数据的按序到达.

  第三行:32位确认号,保证数据的完整性,如果没有收到确认,则进行重发.

  第四行:4位首部长度,用来将报头与数据分离的.单位是4字节;保留6位;6位TCP标志,分别为:

  URG:紧急位,其值为1表示紧急指针有效.表示数据需要优先处理,紧急指针指向的是数据的最后一个字节的位置.从数据开始到紧急指针,不需要进入缓冲区,直接交付给上层应用.

  ACK:其值为1表示确认号有效.其值为0,表示确认号无效.(一般而言,建立连接之后,该值通常为1)

  PSH:其值为1,表示不必等缓冲区写满,只要该数据到达,即交付给上层.

  RST:其值为1时,重置连接,一般来说,重置连接意味着发生了某些错误.

  SYN:表示建立连接时使用,同步序号,SYN=1,ACK=0,表示请求建立连接.SYN=1,ACK=1,表示对方同意建立连接.只有前两次握手建立连接时,该值才为1.

  FIN:其值为1,表示发起释放连接的请求.

  在右边是16为窗口大小,用来控制流量的.

  第五行:16位TCP校验和,和16位紧急指针.

二、URG与PSH区别

  我们从上述对标志位的描述中可以看出来:URG与PSH都表示数据要进行优先处理,

  但URG为1时,表示从数据开始到紧急指针部分,不必进入缓冲区直接交付上层应用.

  而PSH为1时,通知缓冲区,数据进入缓冲区,只要数据完整的接收完后立即交付给上层应用.(而不必等缓冲区满)

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