- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux_网络栈剖析
简介: Linux® 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD 的网络栈,
具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用
socket 层接口或设备层)到各种网络协议的具体层。本文将从分层角度对 Linux 网络
栈的接口进行探索,并介绍其中的一些主要结构。
协议简介
虽然对于网络的正式介绍一般都参考了 OSI (Open Systems Interconnection)
模型,但是本文对 Linux 中基本网络栈的介绍分为四层的 Internet 模型(如
图 1 所示)。
图 1. 网络栈的 Internet 模型
这个栈的最底部是链路层。链路层是指提供对物理层访问的设备驱动程序,这
可以是各种介质,例如串口链路或以太网设备。链路层上面是网络层,它负责
将报文定向到目标位置。再上一层称为传输层,负责端到端的通信(例如,在
一台主机内部)。尽管网络层负责管理主机之间的通信,但是传输层需要负责
管理主机内部各端之间的通信。最后一层是应用层,它通常是一个语义层,能
够理解要传输的数据。例如,超文本传输协议(HTTP)就负责传输服务器和客
户机之间对 Web 内容的请求与响应。
实际来说,网络栈的各个层次有一些更为人所熟知的名字。在链路层上,可以
找到以太网,这是最常用的一种高速介质。更早的链路层协议包括一些串口协
议,例如 SLIP (Serial Line Internet Protocol)、CSLIP (Compressed
SLIP)和PPP (Point-to-Point Protocol)。最常见的网络层协议是 IP
(Internet Protocol),但是网络层中还存在一些满足其他需求的协议,例如
ICMP (Internet Control Message Protocol)和ARP (Address Resolution
Protocol)。在传输层上是 TCP (Transmission Control Protocol)和 UDP
(User Datagram Protocol)。最后,应用层中包含很多大家都非常熟悉的协
议,包括标准的 Web 协议 HTTP 和电子邮件协议 SMTP (Simple Mail
Transfer Protocol)。
回页首
核心网络架构
现在继续了解 Linux 网络栈的架构以及如何实现这种 Internet 模型。图 2
提供了 Linux 网络栈的高级视图。最上面是用户空间层,或称为应用层,其中
定义了网络栈的用户。底部是物理设备,提供了对网络的连接能力(串口或诸
如以太网之类的高速网络)。中间是内核空间,即网络子系统,也是本文介绍
的重点。流经网络栈内部的是 socket 缓冲区(sk_buffs),它负责在源和汇
点之间传递报文数据。您很快就将看到 sk_buff 的结构。
图 2. Linux 高级网络栈架构
首先,让我们来快速浏览一下 Linux 网络子系统的核心元素,后续章节中会更
详细进行介绍。顶部(请参阅图 2)是系统调用接口。它简单地为用户空间的
应用程序提供了一种访问内核网络子系统的方法。位于其下面的是一个协议无
关层,它提供了一种通用方法来使用底层传输层协议。然后是实际协议,在
Linux 中包括内嵌的协议 TCP、UDP,当然还有 IP。然后是另外一个协议无关
层,提供了与各个设备驱动程序通信的通用接口,最下面是设备驱动程序本身。
回页首
系统调用接口
系统调用接口可以从两个角度进行描述。用户发起网络调用时,通过系统调用
接口进入内核的过程应该是多路的。最后调用 ./net/socket.c 中的
sys_socketcall 结束该过程,然后进一步将调用分路发送到指定目标。系统调
用接口的另一种描述是使用普通文件操作作为网络 I/O。例如,典型的读写操
作可以在网络 socket 上执行(socket 使用一个文件描述符表示,与一个普通
文件一样)。因此,尽管有很多操作是网络专用的(使用 socket 调用创建一
个 socket,使用 connect 调用连接一个收信方,等等),但是也有一些标准
的文件操作可以应用于网络对象,就像操作普通文件一样。最后,系统调用接
口提供了在用户空间应用程序和内核之间转移控制的方法。
回页首
协议无关接口
socket 层是一个协议无关接口,它提供了一组通用函数来支持各种不同协议。
socket 层不但可以支持典型的 TCP 和 UDP 协议,而且还可以支持 IP、裸以
太网和其他传输协议,例如 SCTP (Stream Control Tr
您可能关注的文档
- C语言模拟题11-用户标识符的作用域和存储类.doc
- C语言教程第5周实验内容(顺序结构).ppt
- C语言模拟题15-文件.doc
- C语言教程ch1初识C程序.ppt
- C语言模拟题16-字符串.doc
- C语言模拟题13-结构体与公用体.doc
- C语言模拟题2-基本语法.doc
- C语言模拟题4-选择结构.doc
- C语言模拟题9-二维数组和指针.doc
- C语言模拟题3-顺序结构.doc
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
最近下载
- 2023年中南财经政法大学法学专业《民法学》期末试卷A(有答案).docx VIP
- 卫生保洁文明作业、安全作业保障措施.doc VIP
- 高三美术专业考试质量分析报告.doc
- 2024至2030年教育系统集成项目投资价值分析报告.docx
- 贵州省六盘水市水城区2023-2024学年九年级上学期期末考试理科综合试卷-初中化学(解析版).docx VIP
- 英语丨2025届T8联考(八省八校)高三第一次学业质量评价英语试卷含答案及解析.pdf
- 年产1万吨乙醇-水筛板精馏塔设计说明书2024.12.6.docx
- 山东省济南市高新区2023-2024学年八年级上学期期末数学试题(解析版).pdf VIP
- 《检验检测机构资质认定 检验检测能力表述规范》.pdf VIP
- 教学课件:急性st段抬高型心肌梗死.pptx
文档评论(0)