【linux】Linux学习总结-套接字

来源:互联网 发布:手机淘宝怎样发链接 编辑:程序博客网 时间:2024/06/06 21:42

BSD套接字接口


L i n u x支持多种套接字类型。套接字类型,是指创建套接字的应用程序所希望的通信服务

类型。同一协议族可能提供多种服务类型,比如T C P / I P协议族提供的虚电路与数据报就是两

种不同的通信服务类型, Linux BSD支持如下几种套接字类型:

• Stream 提供可靠的面向连接传输的数据流,保证数据传输过程中无丢失、无损坏和无
冗余。I N E T地址族中的T C P协议支持该套接字。
• Datagram 提供数据的双向传输,但不保证消息( m e s s a g e )的准确到达,即使消息能够到
达,也无法保证其顺序性,并可能有冗余或损坏。I N E T地址族中的U D P协议支持该套
接字。
• Raw 是低于传输层的低级协议或物理网络提供的套接字类型,比如通过分析为以太网
设备所创建的R a w套接字,可看到裸I P数据流。
• Reliable Delivered Messages 类似于D a t a g r a m套接字,但它可以保证数据的正确到达。
• Sequenced Packets 类似于S t r e a m套接字,但它的报文大小是可变的。
• Packet 这是L i n u x对标准B S D套接字类型的扩展,它允许应用程序在设备层直接访问报
文数据。


INET的套接字层


I N E T套接字( s o c k e t )层支持包括T C P / I P协议在内的I N E T地址族( Address Family),如前所
述,这是一些分层协议,下层协议为上层协议提供服务。L i n u x中实现T C P / I P协议的代码与数
据结构充分体现了这种协议分层。I N E T套接字层接口是通过一组I N E T地址族套接字操作实现
的,这些操作在网络初始化时被注册到了B S D套接字层,与其他注册的地址族一起保存在
p o p s向量中。B S D套接字层通过调用注册在INET proto_ops数据结构中的I N E T套接字层例程
来完成上述操作。在进行每一项操作时, B S D套接字层都要把代表B S D套接字的数据结构传
给I N E T层,I N E T套接字层并非简单地抽取B S D套接字中的特定T C P / I P信息,而是使用自己的
s o c k数据结构,该数据结构已被链接到BSD socket数据结构上了,在图1 - 8 - 5中给出了这种链
接,这种链接通过BSD socket中的d a t a (数据)指针将s o c k数据结构链到了BSD socket数据结构
上。这样以来,随后的I N E T套接字调用将会很容易的得到套接字数据结构。在创建套接字时,
也建立了指向套接字数据结构的协议操作的指针,这些指针与所使用的协议有关:当使用T C P时,

它们将指向与建立T C P连接有关的一组T C P协议的操作。

0 0
原创粉丝点击