欢迎来到天天文库
浏览记录
ID:38010563
大小:74.50 KB
页数:4页
时间:2019-05-23
《linux协议简介》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Linux协议简介虽然对于网络的正式介绍一般都参考了OSI(OpenSystemsInterconnection)模型,但是本文对Linux中基本网络栈的介绍分为四层的Internet模型(如图1所示)。图1.网络栈的Internet模型这个栈的最底部是链路层。链路层是指提供对物理层访问的设备驱动程序,这可以是各种介质,例如串口链路或以太网设备。链路层上面是网络层,它负责将报文定向到目标位置。再上一层称为传输层,负责端到端的通信(例如,在一台主机内部)。尽管网络层负责管理主机之间的通信,但是传输层需要负责管理主机内部各端之间的通信。最后一层是应用层,它通常是一
2、个语义层,能够理解要传输的数据。例如,超文本传输协议(HTTP)就负责传输服务器和客户机之间对Web内容的请求与响应。实际来说,网络栈的各个层次有一些更为人所熟知的名字。在链路层上,可以找到以太网,这是最常用的一种高速介质。更早的链路层协议包括一些串口协议,例如SLIP(SerialLineInternetProtocol)、CSLIP(CompressedSLIP)和PPP(Point-to-PointProtocol)。最常见的网络层协议是IP(InternetProtocol),但是网络层中还存在一些满足其他需求的协议,例如ICMP(InternetCo
3、ntrolMessageProtocol)和ARP(AddressResolutionProtocol)。在传输层上是TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)。最后,应用层中包含很多大家都非常熟悉的协议,包括标准的Web协议HTTP和电子邮件协议SMTP(SimpleMailTransferProtocol)。核心网络架构现在继续了解Linux网络栈的架构以及如何实现这种Internet模型。图2提供了Linux网络栈的高级视图。最上面是用户空间层,或称为应用层,其中定义了网络栈的用户
4、。底部是物理设备,提供了对网络的连接能力(串口或诸如以太网之类的高速网络)。中间是内核空间,即网络子系统,也是本文介绍的重点。流经网络栈内部的是socket缓冲区(sk_buffs),它负责在源和汇点之间传递报文数据。您很快就将看到sk_buff的结构。图2.Linux高级网络栈架构4首先,让我们来快速浏览一下Linux网络子系统的核心元素,后续章节中会更详细进行介绍。顶部(请参阅图2)是系统调用接口。它简单地为用户空间的应用程序提供了一种访问内核网络子系统的方法。位于其下面的是一个协议无关层,它提供了一种通用方法来使用底层传输层协议。然后是实际协议,在Lin
5、ux中包括内嵌的协议TCP、UDP,当然还有IP。然后是另外一个协议无关层,提供了与各个设备驱动程序通信的通用接口,最下面是设备驱动程序本身。系统调用接口系统调用接口可以从两个角度进行描述。用户发起网络调用时,通过系统调用接口进入内核的过程应该是多路的。最后调用./net/socket.c中的sys_socketcall结束该过程,然后进一步将调用分路发送到指定目标。系统调用接口的另一种描述是使用普通文件操作作为网络I/O。例如,典型的读写操作可以在网络socket上执行(socket使用一个文件描述符表示,与一个普通文件一样)。因此,尽管有很多操作是网络专用
6、的(使用socket调用创建一个socket,使用connect调用连接一个收信方,等等),但是也有一些标准的文件操作可以应用于网络对象,就像操作普通文件一样。最后,系统调用接口提供了在用户空间应用程序和内核之间转移控制的方法。协议无关接口socket层是一个协议无关接口,它提供了一组通用函数来支持各种不同协议。socket层不但可以支持典型的TCP和UDP协议,而且还可以支持IP、裸以太网和其他传输协议,例如SCTP(StreamControlTransmissionProtocol)。通过网络栈进行的通信都需要对socket进行操作。Linux中的sock
7、et结构是structsock,这个结构是在linux/include/net/sock.h中定义的。这个巨大的结构中包含了特定socket所需要的所有状态信息,其中包括socket所使用的特定协议和在socket上可以执行的一些操作。网络子系统可以通过一个定义了自己功能的特殊结构来了解可用协议。每个协议都维护了一个名为proto的结构(可以在linux/include/net/sock.h中找到)。这个结构定义了可以在从socket层到传输层中执行特定的socket操作(例如,如何创建一个socket,如何使用socket建立一个连接,如何关闭一个socke
8、t等等)。网络协议网络协议这一节对一些
此文档下载收益归作者所有