URG_PSH区别

一、URG&PSH的区别
TCP的报头信息有六个控制位,说明本段文的性质;分别为紧急URG、确认ACK、推送ACK、复位RST、同步SYN、终止FIN;

今天我们来主要来介绍介绍PSH和URG的区分;

1.URG是什么?
URG表示紧急指针,与紧急指针字段搭配使用,当URG = 1时,表示紧急指针字段有效。它告诉系统此报文有紧急数据,应尽快传送(相当于高优先级数据),而不按照原来的排序顺序来传送;
当URG=1,发送应用进程就告诉发送方的TCP有紧急的数据要传送,于是TCP就将紧急的数据报文段插入到本报文数据的最前面,而在紧急数据的后面的数据是普通报文的数据,此时紧急指针字段就相当于一个字节偏移量,指出紧急数据到哪里结束。

总结URG:

URG=1,紧急数据(数据从序号开始到紧急指针指向字节)不经过缓存区直接交给上层程序,而报文段后面的普通数据还需要进入接收方缓冲区;
2.什么是PSH?
当两个进程之间实现通信时,有时在一端的应用进程希望在键入一个命令后能够立即就能收到对方的回应,在这种情况下,TCP就可以使用推送PSH操作;
当发送方TCP中PSH = 1,立即会发送一个报文出去,接收方TCP收到PSH=1的报文段,就尽快地交付接收的应用进程,而不再等待缓冲区都填满后再向上交付;

总结PSH:

PSH=1,希望将本报文段及发送放缓存区的数据一快交付给应用进程;
3.URG和PSH的区别

紧急URG将紧急报文字段插入到普通报文字段的前面,而推送PSH是利用紧急数据重新直接创建一个报文,并立即发送出去;
URG=1,表示紧急数据(数据从序号开始到紧急指针指向字节)不经过缓冲区直接交付应用进程,PSH=1表示尽快推送,将数据先交给缓冲区,不等待缓冲区填满(默认TCP/IP是将数据缓存到一定上限,才交由上层)就交给上层程序;
URG=1交给上层进程的只有紧急数据,PSH=1交给上层程序的是紧急数据和之前接收方缓冲区排好序的数据;

你可能感兴趣的:(linux)