带外数据OOB与紧急模式URG
来源:互联网 发布:域名投资app 编辑:程序博客网 时间:2024/06/11 23:43
Intel® 主动管理技术 (Intel AMT) 就是使用的OOB.
A,TCP支持带外数据OOB吗?与紧急模式URG有什么关系?
B,我们知道send(sendfd,"ABC",3,MSG_OOB),将发送3个字节的带外数据OOB数据.但是这里TCP又只支持一个字节的OOB,难道丢掉2个字节?
C,如果一定要发送多字节的带外数据,让接收端能一次收到多个字节的带外数据.能不能做到?
D,对于TCP,收到的带外数据怎么保存?
E,recv(recvfd,buff,256,MSG_OOB).会有哪些结果?
F,如果发送端使用MSG_OOB模式,send(sendfd,sndbuff,64,MSG_OOB),发送了包含"OOB字节"的64字节数据,然后用非MSG_OOB模式,send(sendfd,sndbuff,64,0)发送64字节,当接收端收到64+64字节的数据后,用recv(recvfd,revbuff,256,0).会有哪些结果?
1,对于非OOBINLINE模式,第一次recv(recvfd,revbuff,256,0)只返回前63字节的普通数据,接收缓冲区剩下64字节.要获得1字节的OOB数据,必须使用MSG_OOB模式的revxxx函数.再次recv(recvfd,revbuff,256,0),返回第二次发送的64字节.一次recvxxx不跨越urg-mark标记.
2,对于OOBINLINE模式,第一次recv(recvfd,revbuff,256,0)只返回前63字节的普通数据,接收缓冲区剩下65字节(OOB+64字节),第二次recv(recvfd,revbuff,256,0),对于windows,只返回一字节的OOB字节,需要第三次rev才能返回最后的64字节,对于linux/unix,第二次rev就返回65字节(OOB+64字节).总之与协议栈的实现有关.
G,如果OOB字节没被应用程序读取,协议栈又收到了新的OOB字节,会出现什么情况?
对于非OOBINLINE,旧的OOB字节直接被丢弃,被新的OOB字节覆盖(经过本人测试,旧的OOB字节并不会被丢弃,而是被放入普通数据的接受缓冲区).
对于OOBINLINE,旧的OOB字节仍然在接收缓冲区中,但被当着普通数据看待,每个socket只有一个URG指针,只能定位一个OOB字节.
注:经测试发现,OOBINLINE是否设置带来的区别仅仅在于读取URG字节的时候是否需要MSG_OOB标志,其他包括sockatmark函数,新到OOB字节时对于尚未被读出的OOB字节的处理都是相同的。另外,即使在SIGURG处理函数中已经使用MSG_OOB读出了OOB数据,只要在普通接收缓冲区中的读指针还没有越过带外标记,OOB数据还是会被放入普通的接收缓冲区中(行为与没有读出OOB数据一样)。
- 带外数据OOB与紧急模式URG
- 带外数据OOB与紧急模式URG
- 带外数据OOB与紧急模式URG
- 带外数据OOB与紧急模式URG
- [转载]带外数据OOB与紧急模式URG
- 带外数据OOB与紧急模式URG
- 带外数据OOB与紧急模式URG
- 关于带外数据OOB与紧急模式URG的几篇文章
- 带外数据:TCP紧急模式分析
- TCP带外数据---紧急模式
- TCP带外数据OOB
- TCP带外数据OOB
- TCP带外数据(URG,MSG_OOB)
- TCP带外数据(URG,MSG_OOB)
- OOB(out of band):带外数据
- 关于TCP带外数据(OOB,Out Of Bound)
- 小议TCP带外数据(OOB--out of band)
- 带外数据和TCP紧急指针
- JSP中的EL表达式详细介绍
- 子衿的事(47)
- 收集常用的PHP正则表达式及使用
- DevExpress XtraGrid某列的值为1或0,显示为收费或退费
- Red hat 关闭 SELINUX
- 带外数据OOB与紧急模式URG
- Message,MessageQueue,Looper,Handler详解+实例
- 媒体播放器三大底层架构
- geoserver 绘制地图 "rendering process failed / by zero"
- 关于EF4里的 “关系”删除行为的解释
- VBScript类型转换函数
- httpclient添加代理
- extjs 之 list checkbox
- 看来我要好好学习一下,我的专业外语了