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时,通知缓冲区,数据进入缓冲区,只要数据完整的接收完后立即交付给上层应用.(而不必等缓冲区满)

时间: 2025-01-19 09:24:01

TCP中的URG标志与PSH标志有什么不同?的相关文章

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

一.协议端口号的提出 运输层提供了进程间通信的能力(即端-端通信).但是不同的操作系统可能无法识别其他机器上的进程.为了用统一的方法对 TCP/IP体系的应用进程进行标志,使运行不同操作系统的计算机的应用进程能够互相通信,提出在运输层使用协议端口号(protocolport number)的方法,或通常简称为端口(port).它是协议栈各层之间的抽象软件端口,是应用层各种协议进程与运输实体进行层间交互的地址.下图为端口在进程间通信的作用图: 运输层对每个端口都赋予一个16位(二进制)的端口号.这

TCP协议: SYN ACK FIN RST PSH URG 详解

TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手:最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手.之后,一个TCP连接建立,开始通讯. *SYN:同步标志同步序列编号(Synchronize Sequence Numbers

TCP连接:SYN ACK RST UTG PSH FIN

出处http://bbs.csdn.net/topics/370058169 8楼 TCP连接:SYN ACK RST UTG PSH FIN 三次握手:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手:最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手.之后

TCP中的RST复位信号

TCP中的RST复位信号 在TCP协议中RST表示复位,用来关闭异常的连接,在TCP的设计中它是不可或缺的. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包.而接收端收到RST包后,也不必发送ACK包来确认. TCP报文中有一个RST标志位,如下图: 产生RST的原因 1.端口未打开 服务器程序端口未打开而客户端来连接,例如telnet一个未打开的TCP的端口可能会出现这种错误. 比如主机A向主机B发送一个SYN请求,表示想要连接主机B的40000端口,但是主

【网络协议】TCP中的四大定时器

前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器.坚持定时器.保活定时器.2MSL定时器. 重传定时器 非常明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了).每发送一个报文段就会启动重传定时器,假设在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,又一次计算:假设在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器. 坚持定时器 上篇文章中已经提到了,主要是

TCP中close和shutdown之间的区别

该图片截取自<<IP高效编程-改善网络编程的44个技巧>>,第17个技巧. 如果想验证可以写个简单的网络程序,分别用close和shutdown来断开连接,然后用tcpdump查看交互过程,就一目了然了.本来我想自己写个程序验证,但是自己笔记本上没有linux环境,公司环境又不能通外网,所以就放弃了. TCP中close和shutdown之间的区别,布布扣,bubuko.com

/proc/net/tcp中各项参数说明

/proc/net/tcp中的内容由tcp4_seq_show()函数打印,该函数中有三种打印形式,我们这里这只列出状态是TCP_SEQ_STATE_LISTENING或TCP_SEQ_STATE_ESTABLISHED的情况,如下所示: netstat 的结果是读取/proc/net/tcp文件而来的 如何查看一个连接的创建时间 1.nestat -apn | grep xxx查看到对应的连接的进程pid和端口 2. 将上下游端口,转换为16进制xxxa xxxb 3.然后cat /proc/

TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?

##基础## - 对应层数据的名称 - Application  <->  Package - Translation  <->  Segment - Networking   <->  Packet - DataLink     <->  Frame - TCP是一种基于字节流的协议,TCP 中的ACK是接收端期待发送端下一个发来的数据包的序列号 - MSS 是在建立连接时通过SYN数据包中的MSS选项里进行协商的(以太网的MTU能到1500,所以MSS可

TCP中的计时器

TCP中的计时器? (1)重传计时器 TCP发送完一个报文段,就设置一个专属于此报文段的计时器,规定时间内收到此报文段的确认,撤销计时器,时间走完还没收到确认包,重传此报文段并重置计时器. (2)持续计时器 客户端收到的确认包窗口是0,便停止发送数据了.过了一会,接收端缓过来劲了,继续发送一个更高序号的字节的确认包,它的窗口大于0,客户端如果收到此确认包,检测到窗口大于0,就会重新发送数据.但是如果此"激活"确认包万一丢失,双方都会永久静默下去(TCP不会重传ACK确认包).所以为每个