URG和PSH属于tcp协议中得标志位
URG
:表示本报文段中发送的数据是否包含紧急数据。URG=1,表示有紧急数据。后面的紧急指针字段只有当URG=1时才有效。
PSH
:告诉对方收到该报文段后是否应该立即把数据推送给上层。如果为1,则表示对方应当立即把数据提交给上层,而不是缓存起
URG和PSH得区别及其特点
可以看出URG和PSH的区别:虽然URG和PSH都是提高报文段的优先级,使报文段更先推送给上层,但是两者的实现方法是不一样的,URG是通过置1
来让后面的紧急指针字段有效,从而让报文段更先发送,而PSH是通过置1来告诉接收方在接收到报文段后应该立即把数据发给上层而不是缓存起来。
URG=1,紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的),PSH=1就是是把接收缓冲中排好序的那一段数据交给上层
URG它是一个正的偏移,与TCP首部中序号字段的值相加表示紧急数据后面的字节,即紧急指针是指向紧急数据最后一个字节的下一字节。这是协议编写上的一个错误,RFC1122中对此给出了更正说明,紧急指针是数据最后一个字节,不是最后字节的下一位置。TCP首部中只有紧急指针指出紧急数据的位置,它所指的字节为紧急数据,但没有办法指定紧急数据的长度。