小议TCP带外数据(OOB--out of band)

来源:互联网 发布:windows bat脚本 示例 编辑:程序博客网 时间:2024/06/07 05:37

        首先要说明的是: udp没有带外数据, 而tcp有。


       下面, 我们来聊聊tcp带外数据。  当客户端和服务端建立了tcp连接之后, 我们可以说, 建立了一个tcp通道, 于是乎, 数据可以在这个通道上奔波。 这个tcp通道又可以叫做tcp通带, 总之就是一条道路。 带是什么? 如果你还不明白, 那你就把你的裤带解开, 然后把裤带拉直, 看到了吧, 带就是一条路, 一个通道。

       不多说, 总之: tcp连接 = tcp通道 = tcp通带 = 带子 = 你的裤腰带。


        我们看这样一个战争场景: 有一只部队在均速有序地前进,形成一个队列。 某通讯员在队尾, 现在, 该通讯员要去队头和队长沟通, 那怎么办呢? 速度肯定不能和队伍一样啊, 否则永远都追不上。 所以, 必须把自己的优先级提高, 在队伍中进行穿梭, 绕过一个又一个的队员, 然后到达队头, 把信息传递给队长。

        我们来类比一下tcp通带, tcp通带中的数据有序地传递, 比如客户端向服务端传递, 此时, 客户端发生了一个非常重要的事情, 需要迅速通知服务端, 那怎么办呢? 好办啊, tcp提供了“带外数据”机制, 这个带外数据就类似于上面的通讯员。 要说明的是: 带外数据其实是在带内的, 这个带外的意思只是说: 这个数据的优先级比较高,它的作用和身份都比较高级和特殊, 仅此而已。

       著名的telnet和FTP等程序, 就是应用带外数据的典范。 比如, ftp在传输文件的时候, 客户端需要立即通知服务端停止, 此时便可以用带外数据。


       在本文中, 我们仅仅建立了对带外数据的一个基本的认识, 知道有它, 知道它是怎么回事。如果大家以后确实碰到了, 可以参考大名鼎鼎的《Unix网络编程》, 里面有详实的例子。


       

0 0
原创粉丝点击