带外数据(TCP URG数据)的作用和发送方式

带外数据(TCP URG数据)的作用和发送方式

ID:41387650

大小:462.53 KB

页数:60页

时间:2019-08-23

带外数据(TCP URG数据)的作用和发送方式_第1页
带外数据(TCP URG数据)的作用和发送方式_第2页
带外数据(TCP URG数据)的作用和发送方式_第3页
带外数据(TCP URG数据)的作用和发送方式_第4页
带外数据(TCP URG数据)的作用和发送方式_第5页
资源描述:

《带外数据(TCP URG数据)的作用和发送方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章带外数据第6章带外数据6.1TCP的带外数据6.2带外数据标志6.3OOB传输套接字例程6.4TCP带外数据特性习题第6章带外数据6.1TCP的带外数据TCP只支持一字节的带外数据,由数据包“码位”中的URG位和紧急指针(URG,UrgentPointer)共同标识。为了发送带外数据,TCP协议将其数据段的URG置位,并且利用紧急指针指向带外数据的位置。如图6-1所示,一个包含紧急数据的TCP数据段中的URG=1,紧急指针指向实际带外数据位置加1的位置。紧急指针的值为5,表示该数据段的数据中的第4个字节为紧急数据字节。第6章带外数据源端口目的端口序列号URG确认1紧急指针5

2、选项数据图6-1含有紧急数据的TCP数据段第6章带外数据TCP不提供独立的带外数据通道,紧急数据是插入正常数据流中进行传送的,紧急指针指出了这个紧急数据的位置。一旦用户发送带外数据,TCP协议将这个字节拷贝到套接字的发送缓冲区中,协议将立即发送一个设有URG标记的数据段,紧急指针指向带外字节下一个字节位置。套接字用信号SIGURG将紧急状态通知应用程序。如果TCP数据段大小不够,则这个数据段将不包含带外数据,紧急指针的指向将超过数据段的范围,但协议总会发送带有URG标记的数据段。因此当用户发送带外数据时,协议立即发送一个数据段,该数据段中设置了URG位。第6章带外数据由于TCP协

3、议没有为带外数据的传递专门设立通道,带外数据随着正常的字节流在通道中被传送,这就可能发送了URG标志,但没有包含带外数据的数据段。例如,当接收缓冲区已满,接收窗口大小为0时,如果应用程序发送带外数据,TCP协议将发送一个空数据段,这个数据段的URG被置位,并且设置紧急指针为带外数据在这个发送缓冲区的位置偏移,TCP协议在随后发送的数据段中均设置URG标志,直到带外数据被送出。第6章带外数据由于TCP协议没有为带外数据的传递专门设立通道,带外数据随着正常的字节流在通道中被传送,这就可能发送了URG标志,但没有包含带外数据的数据段。例如,当接收缓冲区已满,接收窗口大小为0时,如果应用

4、程序发送带外数据,TCP协议将发送一个空数据段,这个数据段的URG被置位,并且设置紧急指针为带外数据在这个发送缓冲区的位置偏移,TCP协议在随后发送的数据段中均设置URG标志,直到带外数据被送出。第6章带外数据TCP是由一种叫做“紧急模式(urgentmode)”的方法来传输带外数据的。假设一个进程向一个TCP套接字写入了n个字节的数据,数据被TCP套接字的发送缓冲区缓存,等待被发送到网络上。在图6-2中可以看见数据的排列。现在进程使用send()函数以MSG_OOB为参数,写入一个单字节的“带外数据”为字符“x”:send(sockfd,"X",1,MSG_OOB);TCP协议

5、将数据放在下一个可用的发送缓冲区中,并设置这个连接的“紧急指针”指向下一个可用的缓冲区空间。图6-3表示了描述的这个状态,并将带外数据表示为“OOB”。第6章带外数据12…n…图6-2套接字发送缓冲区中的数据第6章带外数据OOB12…nX图6-3包含ODB数据第6章带外数据TCP的紧急指针指向的位置是在程序发送的OOB数据的后面。由图6-3所表示的TCP套接字的状态,得知下一个将要发送的数据是TCP的URG标志,发送完之后,TCP才会发送下面的带外数据的那个字节。但是,TCP一次发送的数据中,可能只包含了TCP的URG标志,却没有包含所要发送的OOB数据。发生这种情况取决于TCP

6、将要发送的数据队列中在OOB数据之前的数据的多少。如果在一次发送中,OOB前的数据已经占满了名额,则TCP只会发送URG标志,不会发送OOB数据,这是一个TCP紧急数据状态的重要特性:TCP的信息头指出发送者进入了紧急模式,但是紧急指针偏移处的数据并没有必要一定要发送出去。第6章带外数据设置了紧急指针无带外数据的TCP数据段,如图6-4所示。事实上,如果一个TCP套接字的流传送停止后,为了发送带外数据,系统会发送不包含数据的TCP数据包,里面仅标明这是一个带外数据。这正是使用带外数据的一个有利点:就算是通过TCP连接不能向对方发送数据的时候,也可以发送出一个带外数据的信号。第6章

7、带外数据源端口目的端口序列号URG确认1紧急指针选项nn+1图6-4无带外数据的TCP数据段第6章带外数据如果像下面这样发送一个多字节的带外数据:send(fd,"123",3,MSG_OOB);因为TCP协议的紧急指针指向了数据最后一位的后面,所以只有最后一位数据("3")才被系统认为是“带外数据”。以上我们了解了发送方如何发送“带外数据”,下面介绍接收方是怎样接收“带外数据”的。第6章带外数据(1)当TCP收到一个URG标志的数据段时,TCP会检查紧急指针来验证它所指的数据是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。