TCP协议中URG与PSH的区别



    URG和PSH都属于TCP包头中的标志位,URG和PSH为 1 时,都表示当前有紧急数据。不同的是对紧急数据的处理方式不同。


     URG:为1时,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传递,相当于高优先级,不再需要在接收队列中排队。例如,当我们想使用Ctrl+C终止一个远程进程时,会将URG置1,发送应用进程就告诉发送方的TCP有紧急数据要传送,于是发送方将紧急数据插入到本报文段数据的最前面,在紧急数据后面的数据仍是普通数据。urg为1的报文段不进入接收缓冲区而直接向上交付

    TCP首部中只有紧急指针指出紧急数据的位置,它所指的字节为紧急数据,但没有办法指定紧急数据的长度


     PSH:为1时,表示该报文段需要尽快发送到接收端的应用进程,有紧急事件需要应用程序去处理(例如希望得到接收方的立刻应答),这时就会把接收缓冲中排好序的那一段数据交给上层,而不用等待整个缓存都填满之后再向上交付。


     因此,我们通常这样说,URG是紧急位,PSH是急迫位。


    ------muhuizz整理