Linux网络编程:数据结构、系统调用与网络交互详解
1. Linux网络概述
Linux内核支持多种网络架构,实现了多种网络数据包调度算法,还包含便于系统管理员设置路由器、网关、防火墙和简单Web服务器的程序。当前的网络代码Net - 4受原始伯克利Unix实现的启发,是Linux网络的第四个主要版本。它采用分层结构,各层有明确的接口,且为提高效率,避免跨层复制数据,原始数据存储在足够大的内存缓冲区中。
本文主要聚焦于TCP/IP协议栈,考虑数据链路层、网络层和传输层,以UDP协议为例,介绍内核发送和接收单个数据报的过程,并假设计算机通过以太网卡连接到局域网。
2. 主要网络数据结构
2.1 网络架构
网络架构描述了特定计算机网络的构成,定义了一组具有明确目的的层,各层程序通过共享规则和约定(即协议)进行通信。Linux支持多种网络架构,部分如下表所示:
| 名称 | 网络架构和/或协议族 |
| — | — |
| PF_APPLETALK | Appletalk |
| PF_BLUETOOTH | Bluetooth |
| PF_BRIDGE | 多协议桥 |
| PF_DECnet | DECnet |
| PF_INET | IPS的IPv4协议 |
| PF_INET6 | IPS的IPv6协议 |
| PF_IPX | Novell IPX |
| PF_LOCAL, PF_UNIX | Unix域套接字(本地通信) |
| PF_PACKET | IPS的IPv4/IPv6协议底层访问 |
|