计算机网络--TCP报文首部URG与PSH的区别

来源:互联网 发布:神硕微营销软件怎么样 编辑:程序博客网 时间:2024/05/01 19:19

TCP报文首部6个控制位

这里写图片描述
我们看到在TCP报头有6个控制位。

  1. 紧急URG(URGent)
    当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
    当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与手中紧急指针字段配合使用。

  2. 确认ACK(ACKnowledgment)
    仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

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

  4. 复位RST(ReSeT)
    当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重复位。

  5. 同步SYN(SYNchronization)
    在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置1就表示这是一个连接请求或连接接受报文。

  6. 终止FIN(FINis)
    用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

URG与PSH区别

通过上述我们发现URG与PSH都有着推送消息的意思。那么这两个有什么不同?

相同点:两者都可理解为处理紧急数据的标志位。都是一种对数据的处理方式。

不同点:
URG交付给进程的数据:
1、只有紧急数据;
2、紧急数据不进入接收缓冲区而直接交付给进程,余下数据要进入接收缓冲区;
3、URG是处理在前端(收到数据后立马对真正意义上”数据”进行操作,所以说”紧急”。

PSH交付给进程的数据:
1、缓冲区排好序的数据及当前报文中的数据;
2、PSH是在处理的后端,告诉内核,不用等待”满了”再递交数据递交到上层。

原创粉丝点击