第1章 概述
所属:TCP/IP详解 卷2:实现 来源:TCP/IP详解 卷2:实现
本章概述TCP/IP协议栈在内核中的实现,介绍全书的组织结构、代码来源和关键概念。
1.1 引言
本书的目的
本书的目的:
- 详细描述TCP/IP协议在内核中的实现
- 理解协议的工作原理
- 掌握内核网络代码的结构
- 为网络编程和调试打下基础
卷1讲协议原理,卷2讲内核实现。
代码来源
代码来源:
- 4.4BSD-Lite(Net/3)
- 加州大学伯克利分校开发
- 很多Unix系统的基础
- 经典的TCP/IP实现
本书用4.4BSD-Lite作为例子。
为什么学习实现
学习实现的好处:
-
深入理解协议
- 知道协议是怎么工作的
- 理解设计决策的原因
-
调试网络问题
- 知道内核怎么处理的
- 更容易定位问题
-
编写高性能程序
- 知道内核的开销
- 优化程序性能
-
修改和扩展内核
- 可以修改内核代码
- 添加新功能
理解实现才能真正理解协议。
1.2 全书的组织结构
本书的结构
全书分为四个部分:
-
第一部分:内核基础
- 第1章:概述
- 第2章:mbuf存储器缓存
- 第3章:接口层
- 第4章:接口:以太网
- 第5章:接口:SLIP和环回
- 第6章:IP编址
- 第7章:域和协议
-
第二部分:IP层
- 第8章:IP:网际协议
- 第9章:IP选项处理
- 第10章:IP的分片与重装
- 第11章:ICMP:Internet控制报文协议
- 第12章:IP多播:IGMP
- 第13章:IP选路
- 第14章:选路套接字
-
第三部分:传输层
- 第15章:UDP:用户数据报协议
- 第16章:TCP:传输控制协议
- 第17章:TCP定时器
- 第18章:TCP重传
- 第19章:TCP数据流
- 第20章:TCP成块数据流
- 第21章:TCP紧急方式
- 第22章:TCP连接的建立与终止
- 第23章:TCP坚持定时器
- 第24章:TCP保活定时器
- 第25章:TCP性能
- 第26章:TCP插口选项
- 第27章:TCP其他
-
第四部分:其他
- 第28章:原始IP
- 第29章:系统调用
- 第30章:内核配置
从下到上,从基础到应用。
1.3 关键概念
分层结构
TCP/IP的分层:
| 层次 | 协议 | 说明 |
|---|---|---|
| 应用层 | Telnet、FTP、SMTP等 | 用户应用 |
| 传输层 | TCP、UDP | 端到端通信 |
| 网络层 | IP、ICMP、IGMP | 分组和选路 |
| 链路层 | 设备驱动 | 硬件接口 |
分层设计,每层负责不同的功能。
数据的流动
数据发送时的流动:
应用程序
|
v
TCP/UDP(传输层)
|
v
IP(网络层)
|
v
链路层驱动
|
v
物理网络
数据接收时的流动:
物理网络
|
v
链路层驱动
|
v
IP(网络层)
|
v
TCP/UDP(传输层)
|
v
应用程序
发送时从上到下,接收时从下到上。
封装
封装(Encapsulation):
- 每层都添加自己的首部
- 应用数据 → TCP首部 + 数据 → IP首部 + TCP + 数据 → 以太网首部 + IP + TCP + 数据
- 每一层把上层的数据当作 payload
封装是分层协议的基本操作。
分用
分用(Demultiplexing):
- 接收时,每层根据首部字段分用
- 链路层:根据类型字段(IP、ARP等)
- IP层:根据协议字段(TCP、UDP、ICMP等)
- TCP/UDP:根据端口号
- 找到对应的上层协议或应用
分用是封装的逆过程。
1.4 网络数据结构
mbuf
mbuf(memory buffer):
- 内核中用于存储网络数据的结构
- 灵活的内存管理
- 可以链接起来
- 避免数据拷贝
mbuf是网络数据的基本存储单元。
接口结构
ifnet结构:
- 每个网络接口一个
- 统一的接口抽象
- 包含函数指针
- 各种接口都用同样的接口
ifnet是网络接口的统一抽象。
协议控制块
协议控制块(PCB):
- 每个连接或套接字一个
- 包含协议状态
- TCP有tcpcb
- UDP有inpcb
协议控制块保存协议的状态信息。
1.5 进程和上下文
进程上下文
进程上下文(process context):
- 系统调用时,在进程上下文中执行
- 可以访问进程的内存
- 可以睡眠等待
系统调用在进程上下文中执行。
中断上下文
中断上下文(interrupt context):
- 硬件中断时执行
- 不能睡眠
- 要尽快完成
- 优先级高
中断处理在中断上下文中执行。
软件中断
软件中断(software interrupt):
- 也叫软中断
- 介于进程和硬件中断之间
- 用于网络输入处理
- 可以延迟处理
软中断用于处理不太紧急的事情。
1.6 小结
本书内容
-
目的
- 讲解TCP/IP的内核实现
- 基于4.4BSD-Lite
-
组织结构
- 四个部分
- 从底层到上层
- 从基础到应用
关键概念
-
分层结构
- 应用层、传输层、网络层、链路层
- 每层负责不同功能
-
数据流动
- 发送:从上到下
- 接收:从下到上
-
封装和分用
- 发送时封装
- 接收时分用
-
数据结构
- mbuf:数据存储
- ifnet:接口抽象
- PCB:协议控制块
-
上下文
- 进程上下文
- 中断上下文
- 软件中断
学习建议
-
结合卷1
- 先懂原理
- 再看实现
-
看代码
- 结合源码看
- 理解数据结构
-
动手实验
- 写程序测试
- 用工具观察
理论结合实践效果最好。