URG和PSH

URG和PSH

1.基本概念

URG和PSH属于tcp协议中的标志位。

URG:表示本报文段中发送的数据是否包含紧急数据。URG=1,表示有紧急数据。后面的紧急指针字段只有当URG=1时才有效。

PSH:告诉对方收到该报文段后是否应该立即把数据推送给上层。如果为1,则表示对方应当立即把数据提交给上层,不做处理。

2.URG和PSH的特点及区别

(1)URG的特点

紧急数据的起始点=序号

紧急数据的终止点=序号+紧急指针

紧急指针就是记录紧急数据的字节数,紧急指针永远为正数

在紧急数据后面的数据为普通数据,需要按序缓存

窗口为0也可以发送紧急数据

紧急数据都处理完成后,tcp就告诉进程恢复到正常操作

URG强调的是直接读取数据,不会将该数据复制到缓存中

(2)PSH的特点:

PSH=1表示该报文希望在到达对端时,将这个报文及缓存区之间缓存尚未交付的数据一并交付给进程。

PSH的数据=本报文数据+缓存区数据

PSH的方向--->单方向(接收PSH报文的一端)

PSH强调的是尽快将数据交付给上层(协议),而不需要经过强迫数据交互(默认tcp/ip是将数据缓存到一定的上限,再将数据递交给上层,以提高网络性能).可见,该部分数据是需要复制到缓存中的。


(3)如何区分URG和PSH:

(a)两者都是对数据的处理方式,URG是在前端处理数据,一旦收到不经过缓冲区就交付给应用程序,PSH是在后

台处理数据,告诉内核不必等缓冲区满了再上层递交;

(b)通过URG递交的数据都是紧急数据,然而通过PSH递交的数据则是缓冲区已经排好序的数据加上当前报文

URG是不要经过缓冲区的。

URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指向字节就是紧急数据)不进入缓冲区(一般不都是待发送的数据要先进入发送缓存吗?就直接交个上层进程,余下的数据都是要进入接收缓冲的;一般来说TCP是要等到整个缓存都填满了后在向上交付,但是如果PSH=1的话,就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区交付的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值