TCP控制位之URG与PSH

URG与PSH
在TCP报文段的首部格式中,包含有6个控制位,而URG与PSH就是其中两个。

相关概念

  • 紧急URG:
    当URP=1时,表明紧急指针字段有效。他告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。因此用户从键盘发出了中断命令(Control+C)。如果不使用紧急数据,那么这两个字符将存储咋接受TCP的缓存末尾。只有在所有的数据被处理完毕后,这两个字符才被交付接收方的应用程序。这样就浪费了很多时间。
    当URG置为1时,发送应用程序就告诉发送方的TCP有紧急数据要传输。于是发送方TCP就把紧急数据插入到本段报文段数据的最前面,这些数据也称为“带外数据”,而在紧急数据后面的数据仍是普通数据。这是要与首部中紧急指针(Urgent Pointer)字段配合使用。

  • 紧急指针字段:
    存在于TCP结构中,占两个字节。紧急指针仅在URG=1时才有意义,它指出本报文中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完毕后,TCP就告诉应用程序恢复到正常的操作。值得注意的是,即使窗口为0时,也可以发送紧急数据。
    (注:窗口字段明确指出了现在允许对方发送的数据量。窗口值是经常动态变化的)

  • 推送PSH:
    当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接受方TCP收到PSH=1的报文,就尽快地(即“推送”向前)交付接受应用程序,而不再等到整个缓存都填满了后在向上交付。(注:虽然应用程序可以选择推送操作,但是推送操作还很少使用)

两者比较
前提:系统总是先将需要发送或者接收的数据,放在发送缓存区或接受缓存区中,等缓存区满了,在向下封装成数据报或者向上交付给应用层。

  • 两者相同点:
    • URG与PSH两者都使用于紧急处理的情况,用来快速传输紧急数据。
  • 两者不同点:两者主要在发送方的数据发送方式不同。
    • URG置为1时,对于发送发,“带外数据”与正常情况下应该发送的消息数据一起,封装成数据报发送,省去了在队列中等待的时间。
      在接收方,解析报文后,获取数据之后还是要放在缓存区中,等待满了之后在向上往应用层交付。
    • PSH置为1时,对于发送方,表明这些数据不需要等向下发送的缓存区满,立刻封装成报文,发送,省去了等待发送缓存区到达满的状态的时间。
      在接收方,也不需要等接受缓存区满,直接向上交付给应用层。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值