您的位置:首页 > 理论基础 > 计算机网络

TCP协议中URG&PSH

2017-06-23 10:27 891 查看


上图展示了TCP的报头信息,下来我们介绍URG与PSH:

什么是URG与PSH?

URG

紧急URG(URGent)

当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应当尽快传输(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如:已经发生了很长的一个程序要在远地的主机上运行。DNA后来发现了一些问题,需要取消该程序的运行。因此用户从键盘上发出中断命令(Ctrl+C)。如果不适用紧急数据,那么这两个字符将存储在接受TCP的缓存末尾。只有所有的数据被处理完毕后这两个字符才被交付接收方的应用进程,这样做就浪费了许多时间。

当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送,于是发送方TCP就把紧急数据插入到本段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时就要与首部中紧急指针字段配合使用。

PSH

推送PSH(PuSH) *

当连个应用进程进程交互式的通信时,有时在一段的应用进程希望在键入一个命令之后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置为1,并立即创建一个保温段发送出去。接收方TCP收到PSH=1的报文段,就尽快(即“推送”向前)交付接受应用进程,而不再等到整个缓存都填满了后在向上交付。

注意:虽然应用程序可以选择推送操作,但是推送操作还是很少用。

URG与PSH的区别

通过上面对URG与PSH的介绍,我们可以发现

相同点:

他们都是处理紧急数据的标志位,都是对数据的一种处理。

区别

URG交付的数据:

1、紧急数据不进入接收缓冲区而直接交付给进程,余下数据要进入接收缓冲区;

2、URG是处理在前端(收到数据后立马对真正意义上”数据”进行操作,所以说”紧急”。

PSH交付的数据:

1、TCP在收到PSH置位的报文后,不管后续再有无报文,先将缓存中的提交给应用程序进程。

2、PSH是在处理的后端,告诉内核,不用等待”满了”再递交数据递交到上层。

拓展

1)URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;

(2)ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;

(3)PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;

(4)RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;

(5)SYN:表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被相应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手;

(6)FIN:表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。当一个FIN标志的TCP数据包发送到一台计算机的特定端口,如果这台计算机响应了这个数据,并且反馈回来一个RST标志的TCP包,就表明这台计算机上没有打开这个端口,但是这台计算机是存在的;如果这台计算机没有反馈回来任何数据包,这就表明,这台被扫描的计算机存在这个端口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: