【转载】TCP笔记——TCP的紧急模式

原文地址:http://blog.163.com/zhang0j_21/blog/static/1941154252011999187479/

TCP提供紧急模式,它是一端可以告诉另一端有“紧急数据”被放置在普通的数据流中,而对“紧急数据”的处理留给对方决定。

TCP的一端是这么通知对方紧急数据的信息的——发送端将TCP首部中的URG设置为1,并将紧急指针设置成一个正值,该值与首部中的序号的和指向紧急数据最后一个字节的下一个字节。(注意:RFC确定紧急指针应该指向紧急数据的最后一个字节,但大多数实现使用错误的做法——即指向最后一个字节的下一个字节。)

TCP是这么通知对方有紧急数据的——当A方把带有紧急数据的报文放入发送缓冲区时(在这个紧急报文放入缓冲区时,缓冲区中可能还有其它报文等待发送),TCP会设置即将发送的下一个报文(可能是带有紧急数据的报文,也可能是排在该报文前得待发送报文)的URG和紧急指针以通知B方自己进入紧急模式,B方接受到这个带有URG和紧急指针的报文后,就会认为A方处于紧急模式直到带有紧急数据的报文通过自己(即已经接受到紧急报文数据最后一个字节的下一个字节)。

而实际上,发送端的TCP可能因为流量控制而无法发送数据(比如说对方的接受缓冲区已满,而通告了一个大小为0的窗口),但此时紧急通知照样可以不带数据地发送给对方。也就是说,数据流动可能会因为流量控制等原因被停止,而紧急通知却总是能无障碍地发送给对方。

发送端TCP经常会发送多个含有URG和指向同一个数据的紧急指针的报文(分节)给对方,第一个到达的分节会告诉对方有紧急数据。

紧急数据放在普通的数据流中被发送给对方,要将紧急数据按普通数据处理还是按普通数据处理,留给对方决定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值