linux其网络栈,1.1 Linux网络栈

开放系统互联(OSI)模型定义了7个逻辑网络层。最下面是物理层,即硬件环境。最上面是应用层,其中运行着用户空间软件进程。下面来说说这7层。

(1)物理层:提供电信号和一些底层的细节。

(2)数据链路层:处理端点间的数据传输。最常见的数据链路层标准是以太网。Linux以太网网络设备驱动程序就位于这一层。

(3)网络层:负责数据包转发和主机编址。本书讨论Linux内核网络子系统实现的最常见网络层协议:IPv4和IPv6。Linux还实现了其他不那么常见的网络层协议,如DECnet,但本书将不对其作出讨论。

(4)协议层/传输层:完成结点间的数据发送。TCP和UDP是最著名的传输层协议。

(5)会话层:处理端点间的会话。

(6)表示层:处理数据传送和格式设置。

(7)应用层:向最终用户应用程序提供网络服务。

图1-1显示了OSI模型定义的7个逻辑网络层。

图字如下,按照原文从上至下顺序:

Application 译为 应用层

Presentation 译为 表示层

Session 译为 会话层

Transport 译为 传输层

Network 译为 网络层

Data Link 译为 数据链路层

Physical 译为 物理层

图1-1 OSI 7层模型

图1-2显示了Linux内核网络栈所涉及的3层。其中,L2、L3和L4这三层分别对应于OSI 7层模型中的数据链路层、网络层和传输层。从本质上说,Linux内核栈的任务就是将接收到的数据包从L2(网络设备驱动程序)传递给L3(网络层,通常为IPv4或IPv6)。接下来,如果数据包目的地为当前设备,Linux内核网络栈就将其传递给L4(传输层,应用TCP或UDP协议侦听套接字);如果数据包需要转发,就将其交还给L2进行传输。对于本地生成的出站数据包,将从L4依次传递给L3和L2,再由网络设备驱动程序进行传输。这个过程分很多阶段,期间可能会发生如下行为。

根据协议规则(如IPsec规则或NAT规则),可能需要对数据包进行修改。

数据包可能被丢弃。

数据包可能导致设备发送错误消息。

可能会对数据包进行分段。

可能需要重组数据包。

需要计算数据包的校验和。

图1-2 Linux内核网络栈的分层结构

内核并不涉及L4之上的各层。这些层(会话层、表示层和应用层)的任务由用户空间应用程序来实现。此外,Linux内核也不涉及物理层(L1)。

如果你觉得这些内容难以消化,不用担心,本书后面将详尽深入地阐述它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值