⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch17.html

📁 介绍Linux设备驱动开发
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>第&#160;17&#160;章&#160;网络驱动-Linux设备驱动第三版(中文版)-开发频道-华星在线</title>
<meta name="description" content="驱动开发-开发频道-华星在线" />
<meta name="keywords" content="Linux设备驱动,中文版,第三版,ldd,linux device driver,驱动开发,电子版,程序设计,软件开发,开发频道" />
<meta name="author" content="华星在线 www.21cstar.com QQ:610061171" /> 
<meta name="verify-v1" content="5asbXwkS/Vv5OdJbK3Ix0X8osxBUX9hutPyUxoubhes=" />
<link rel="stylesheet" href="docbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.69.0">
<link rel="start" href="index.html" title="Linux 设备驱动 Edition 3">
<link rel="up" href="index.html" title="Linux 设备驱动 Edition 3">
<link rel="prev" href="ch16s05.html" title="16.5.&#160;快速参考">
<link rel="next" href="ch17s02.html" title="17.2.&#160;连接到内核">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">第&#160;17&#160;章&#160;网络驱动</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="ch16s05.html">上一页</a>&#160;</td>
<th width="60%" align="center">&#160;</th>
<td width="20%" align="right">&#160;<a accesskey="n" href="ch17s02.html">下一页</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" lang="zh-cn">
<div class="titlepage"><div><div><h2 class="title">
<a name="NetworkDrivers"></a>第&#160;17&#160;章&#160;网络驱动</h2></div></div></div>
<div class="toc">
<p><b>目录</b></p>
<dl>
<dt><span class="sect1"><a href="ch17.html#HowsnullIsdesigned">17.1. snull 是如何设计的</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17.html#AssigningIPNumbers">17.1.1. 分配 IP 号</a></span></dt>
<dt><span class="sect2"><a href="ch17.html#ThePhysicalTransportofPacket">17.1.2. 报文的物理传送</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s02.html">17.2. 连接到内核</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s02.html#DeviceRegistration">17.2.1. 设备注册</a></span></dt>
<dt><span class="sect2"><a href="ch17s02.html#InitializingEachDevice">17.2.2. 初始化每一个设备</a></span></dt>
<dt><span class="sect2"><a href="ch17s02.html#ModuleUnloading">17.2.3. 模块卸载</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s03.html">17.3. net_device 结构的详情</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s03.html#GlobalInformation">17.3.1. 全局信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#HardwareInformation">17.3.2. 硬件信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#InterfaceInformation">17.3.3. 接口信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#TheDeviceMethods">17.3.4. 设备方法</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#UtilityFields">17.3.5. 公用成员</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s04.html">17.4. 打开与关闭</a></span></dt>
<dt><span class="sect1"><a href="ch17s05.html">17.5. 报文传送</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s05.html#ControllingTransmissionConcurrency">17.5.1. 控制发送并发</a></span></dt>
<dt><span class="sect2"><a href="ch17s05.html#TransmissionTimeouts">17.5.2. 传送超时</a></span></dt>
<dt><span class="sect2"><a href="ch17s05.html#ScatterGathreIO">17.5.3. 发散/汇聚 I/O</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s06.html">17.6. 报文接收</a></span></dt>
<dt><span class="sect1"><a href="ch17s07.html">17.7. 中断处理</a></span></dt>
<dt><span class="sect1"><a href="ch17s08.html">17.8. 接收中断缓解</a></span></dt>
<dt><span class="sect1"><a href="ch17s09.html">17.9. 连接状态的改变</a></span></dt>
<dt><span class="sect1"><a href="ch17s10.html">17.10. Socket 缓存</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s10.html#TheImportFields">17.10.1. 重要成员变量</a></span></dt>
<dt><span class="sect2"><a href="ch17s10.html#FunctionsActingonSocketBuffers">17.10.2. 作用于 socket 缓存的函数</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s11.html">17.11. MAC 地址解析</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s11.html#UsingARPwithEthernet">17.11.1. 以太网使用 ARP</a></span></dt>
<dt><span class="sect2"><a href="ch17s11.html#OverridingARP">17.11.2. 不考虑 ARP</a></span></dt>
<dt><span class="sect2"><a href="ch17s11.html#NonEthernetHeader">17.11.3. 非以太网头部</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s12.html">17.12. 定制 ioctl 命令</a></span></dt>
<dt><span class="sect1"><a href="ch17s13.html">17.13. 统计信息</a></span></dt>
<dt><span class="sect1"><a href="ch17s14.html">17.14. 多播</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s14.html#KernelSupportforMulticasting">17.14.1. 多播的内核支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s14.html#ATypicalImplementation">17.14.2. 典型实现</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s15.html">17.15. 几个其他细节</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s15.html#MediaIndependentInterfaceSupport">17.15.1. 独立于媒介的接口支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s15.html#EthtoolSupport">17.15.2. ethtool 支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s15.html#Netpoll">17.15.3. netpoll</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s16.html">17.16. 快速参考</a></span></dt>
</dl>
</div>
<p>我们已经讨论了字符和块驱动, 现在准备好转移到网络世界里. 网络接口是第 3 类标准的 Linux 设备, 本章描述它们如何与内核其他部分交互.</p>
<p>一个网络接口的在系统内的角色与一个被加载的块设备的角色类似. 一个块设备注册它的磁盘和工作方法到内核, 随之通过它的请求函数按需求"发送"和"接收"块. 类似的, 一个网络接口必须注册它自己到特定的内核数据结构中, 以便在与外部世界交换报文时被调用.</p>
<p>在被加载的磁盘和报文递送接口之间有几个重要的区别. 首先, 磁盘作为一个特殊的文件存在于 /dev 目录下, 然而一个网络接口没有这样的入口点. 正常的文件操作( read, write, 等等 )对于网络接口没有意义, 因此不可能适用 Unix 的"一切皆文件"的方法给它们. 从而, 网络接口存在于它们自己的名子空间里, 并且对外输出了一套不同的操作.</p>
<p>尽管你可能会反驳说, 应用程序在使用 socket 时可以使用 read 和 write 系统调用, 这些系统调用作用于一个软件对象上, 而它与接口是明显不同的. 几百个 socket 可以在同一个物理接口上复用.</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -