URG和PSH属于TCP中的标志位。
URG:表示本报文发送的数据中是否有紧急数据,URG=1,表示有紧急数据,紧急指针字段只有在URG=1时有效。
(1)在紧急数据后面的数据为普通数据,需要按序缓存
(2)窗口为0也可以发送紧急数据
(3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作
PSH:告诉对方收到该报文段后是否立即把数据推送给上层,如果PSH=1,则立即推送给上层。在一个交互程序中,当客户发送一个命令给服务器时,它设置PUSH标志并停下来等待服务器的响应。通过允许客户应用程序通知其TCP设置PUSH标志,客户进程通知TCP在向服务器发送一个报文段时不要因等待额外数据而使已提交数据在缓存中滞留。类似地,当服务器的TCP接收到一个设置了PUSH标志的报文段时,它需要立即将这些数据(包括以前存中滞留的数据)递交给服务器进程而不能等待判断是否还会有额外的数据到达
区别:URG交付的数据是紧急数据,通过置1使紧急指针有效,使报文优先发送;发送的数据不用进入缓冲区直接交付给上一层
PSH交付的是缓冲区中的数据及本报文中的数据,通过置1告诉接受方接收到数据后立即将数据交付给上层而不是缓存起来;发送的数据进入缓冲区但不等缓冲区满就进入上一层