相关背景知识
http://blog.csdn.net/double_happiness/article/details/74025156
在探讨TCP协议中的URG和PSH控制位时,我们先来简单的复习一下TCP协议
URG(紧急位)
紧急指针的起始位=序号
紧急指针的结束位=序号+紧急指针(如上TCP报头中的紧急指针)
紧急指针为设置为1时有效,设置为0时无效。
紧急指针记录的是紧急数据的字节数,因此是一个正的偏移量,紧急方式是源端到目的端发送紧急数据的一种方式,紧急指针指针指向包内某个字节,不进入接收缓冲区,就直接交付给上层服务进程,余下的数据要进入接收缓冲区排队之后才能交付给上层服务进程。
PSH(急迫位)
两个应用进程在进行交互式通信时,当客户端发送一个数据给服务器时,设置PSH标志,并停下来等待服务器响应,它允许通过客户应用程序通知其他TCP的PSH标志,客户进程通知TCP在向服务器发送一个报文时,不要因等待额外数据而使已提交数据在缓冲区中进行等待。同样,当服务器的TCP接收到一个设置了TCP标志位的报文段时,他需要立即将这些数据交付给上层的服务器进程,而不是等待判断是否还有额外的数据到达。
PSH=1,只对接收方的接受缓冲区起作用,发送方通过使用PSH标志位来通知接收方,将所有接受到的数据提交给上层的服务器进程,而不是等待额外数据(将缓冲区填满)而使数据在缓冲区中滞留。
URG和PSH的区别与联系
区别:
URG位设置为1时,交付给上层服务的数据只有紧急数据指向的数据;PSH设置为1时,交付给上层服务进程的数据包括缓冲区中排好的数据和PSH数据报提交的数据。
联系
两个标志位都是一种对于数据的处理方式,URG是处理在接受前收到数据立马对真正意义上数据的操作,PSH是在处理后,告诉系统,不用等待缓冲区满了之后在交付数据。