带外数据:TCP紧急模式分析

TCP的紧急模式并非提供真正的带外数据通道,而是通过紧急模式机制在现有连接上传输紧急数据。发送端设置紧急模式后,数据分段会带有URG标志。接收端接收到URG标志的数据后,进入紧急模式,处理紧急数据。紧急数据的读取可以通过设置SO_OOBINLINE选项来选择在线接收或独立缓冲。接收端紧急模式在下一个待读字节越过OOB字节后解除。
摘要由CSDN通过智能技术生成

TCP并未提供真正意义上的带外数据,而是紧急模式。TCP并未建立新的连接,或者使用独立的逻辑通道,而只是通过紧急模式的机制,在已有的TCP连接上传输带外数据。


发送端

TCP协议栈会为每个套接字维护一个发送端紧急模式标志和一个发送端紧急指针。一旦调用sendMSG_OOB)后,则TCP发送端进入紧急模式。此后,协议栈中的每个TCP输出操作都会为数据分段设置URG标志和紧急偏移。也即紧急模式的发送不受流量控制机制的影响。

紧急数据只有一个字节,也即sendMSG_OOB)的最后一个字节,它混在普通数据中(也即发送缓冲区),这个字节由紧急指针(大多数实现需要减1)指示。紧急数据的发送与普通数据没有任何区别,同样受流量控制的影响。只有当紧急数据真正发送出去,TCP发送端才解除紧急模式。

 

接收端

TCP协议栈也会为每个套接字维护一个接收端紧急模式标志和一个接收端紧急指针。一旦接收到一个URG标志的数据分段,则TCP接收端会开启此接收端紧急模式标志,并保存接收端紧急指针,并且此刻,其将通知接收进程(发送信号SIGURG,或者给阻塞的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值