带外数据OOB与紧急模式URG

来源:互联网 发布:淘宝店铺可以申请几个 编辑:程序博客网 时间:2024/06/07 23:33

带内数据:就是send的普通数据

带外数据:就是比send发送的普通数据的优先级的更高,接收方的带外数据的缓存区是一个字节


关于带外数据可以理解成这样,本来是很多普通数据发往服务端,数据放在等待队列中,此时想让服务端接收一个字节数据,可以发送带外数据,带外数据可以优先于等待队列中的数据,被提前接收


看了好几篇带外数据的博客,这边转载的个人觉得还是比较好理解的,下面的文字内容来自转载

原文:http://www.voidcn.com/blog/xiaofei0859/article/p-6246900.html

A,TCP支持带外数据OOB吗?与紧急模式URG有什么关系?

     TCP支持带外数据,但是只有一个OOB字节,TCP的带外数据是通过紧急模式URG实现的.
B,我们知道send(sendfd,"ABC",3,MSG_OOB),将发送3个字节的带外数据OOB数据.但是这里TCP又只支持一个字节的OOB,难道丢掉2个字节?
     TCP将把紧急模式URG 置位,紧急指针定位第三个字节("C")(这里不管它的具体位置,紧急指针的作用就是提供定位那个OOB字节的信息),前两个字节("AB")当作普通字节发送.其实TCP总是把最后一个字节当作OOB数据,其他的当作普通字节.不管你通过带MSG_OOB标志的sendxxx函数发送多少字节带外数据OOB数据,发送端只把最后一个字节当作OOB数据,接收端也只能收到一个字节的OOB数据.
C,如果一定要发送多字节的带外数据,让接收端能一次收到多个字节的带外数据.能不能做到?
     对于TCP协议,不能!
原创粉丝点击