Chinaunix首页 | 论坛 | 博客
  • 博客访问: 894149
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

分类: 网络与安全

2014-05-10 18:05:32

带外数据(out—of—band data),有时也称为加速数据(expedited data), 

是指连接双方中的一方发生重要事情,想要迅速地通知对方。 

这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。 

带外数据设计为比普通数据有更高的优先级。 

带外数据是映射到现有的连接中的,而不是在客户机和服务器间再用一个连接。 


在字节流服务中,由于没有报文边界,用户进程在某一时刻可以读或写任意数量的字节。为保证传输正确或采用有流控制的协议时,都要进行缓存。但对某些特殊的需求,如交互式应用程序,又会要求取消这种缓存。 

在数据传送过程中,希望不通过常规传输方式传送给用户以便及时处理的某一类信息,如UNIX系统的中断键(Delete或Control-c)、终端流控制符(Control-s和Control-q),称为带外数据。逻辑上看,好象用户进程使用了一个独立的通道传输这些数据。该通道与每对连接的流相联系。由于Berkeley Software Distribution中对带外数据的实现与RFC 1122中规定的Host Agreement 不一致,为了将互操作中的问题减到最小,应用程序编写者除非与现有服务互操作时要求带外数据外,最好不使用它。

-----------------------------------------------------------------------------------

网络上对out of band的说法:

 带外数据(out—of—band data),有时也称为加速数据(expedited data),
是指连接双方中的一方发生重要事情,想要迅速地通知对方。这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。带外数据设计为比普通数据有更高的优先级。带外数据是映射到现有的连接中的,而不是在客户机和服务器间再用一个连接。
---------------------------------------------------


在数据传送过程中,希望不通过常规传输方式传送给用户以便及时处理的某一类信息,如UNIX系统的中断键(Delete或Control-c)、终端流控制符(Control-s和Control-q),称为带外数据。逻辑上看,好象用户进程使用了一个独立的通道传输这些数据。该通道与每对连接的流相联系。由于Berkeley Software Distribution中对带外数据的实现与RFC 1122中规定的Host Agreement不一致,为了将互操作中的问题减到最小,应用程序编写者除非与现有服务互操作时要求带外数据外,最好不使用它。

------------------------------------------------------

带外数据上面的兄台说的很清楚了,就是为了在正常数据流之外能及时的通知到应用程序有异常事件发生,对带外数据的实现一般使用BSD的紧急数据指针方式,即TCP只保证将紧急数据之前的所有数据一起返回给应用程序,而应用程序怎样处理这个事件完全由自己决定,甚至可以认为是一般的数据而不加以特别对待,所以对于一些设计不太合理的程序,比如根本不判断read的返回值之类的,反而根本不会受到OOB的影响。
正因为一般紧急数据夹在正常数据流中,而你的网络截获程序一般是从连路层取包,这时根本没有紧急数据的概念(在TCP这层),当然可以捕到了

------------------------------------------------------

补充一点,带外数据的发送和接收:send(sockfd,"a",1,MSG_OOB);recv(sockfd,&outofband,1,MSG_OOB);
----------------------------------
能补充的只有一句了TCP/IP详解卷一
----------------------------------
 說明TCP協定傳送資料的方式是一種資料流型的傳輸型態.
也就是資料像流水般有次序地由本端主機流向(傳送到)遠方主機.
而遠端主機則依序自資料流中讀取資料,將它傳給應用程式去處理.
可是,有些時候有些資料必須優先加以處理.當接收端發現在資料中有緊急封包存在時,
它必須儘量加以優先處理,這時候接收端會進入urgent mode,開始接收urgent data,
將它pass給應用程式,而緊急封包表頭中的URGENT POINTER則指出urgent data的
終止點(在receiver buffer中的位置).當urgent data消化完畢後,
TCP則告知應用程式回到正常的接收狀態.由於此一類型的封包打斷了原先很有次序的傳輸方式,
就好像一團正在合協氣氛下演奏時,突然冒出來的雜音一般.因此便將它稱為不協調(out of band)的資料.
以上資料摘錄於"方盈"編著的TCP/IP通訊協定-入門與應用
阅读(969) | 评论(0) | 转发(0) |
0

上一篇:Linux的inode的理解

下一篇:信号量和自旋锁

给主人留下些什么吧!~~