计算机网络入门 0:引言
这个系列并不是一份完整的网络教程,这个系列的目标仅仅是让零网络基础的人也能在配置虚拟机/容器网络或者进行异地组网时能够看懂那些选项,因为笔者在查阅资料时发现互联网上的网络教程要么是过于详尽而笔者不想学一门完整的课程,要么是过于简略,对解决具体问题几乎没有帮助
这个系列仅包含常见情况,核心理念是去掉离日常生活太远的事物,且大多数时候局限于 IPv4,最后可能会有一个章节来讲 IPv6,但作者是只鸽子
这个系列争取在每个章节中都包含一个简单的实验,以 Linux 为例,Windows 用户可以使用 WSL 来进行尝试
一、目录
Chapter 0:引言
各章节目录与基本概念
Chapter 1:ping 做了什么:数据如何流动
引出 DNS 解析、路由表、邻居表,有个印象即可,主要是建立数据流动方向的基本概念
Chapter 2:数据链路层
详细分析在上图所示网络拓扑中,A 要怎么给 B 发送数据包,并将 A、B 替换为两个 Network Namespace,引入 VETH 设备,并介绍路由表配置的查看方法
Chapter 3:网络层1:如何通过互联网通信
详细分析在上图所示网络拓扑中,A1(无公网 IP) 要怎么给 B2(有公网 IP) 发送数据包,引入 NAT
Chapter 4:网络层2:内网穿透与 TUN 设备
接续上一章,讲解若源和目标都没有公网 IP,如何相互访问,引入内网穿透,简要介绍 P2P 打洞、Tunnel 等方案,介绍不同 NAT 模型,分析 Tailscale 创建的 tailscale0 是什么,自然引入三层网卡(TUN)
Chapter 5:容器与虚拟机
详细分析 Bridge 模式的网络拓扑,引入 BRIDGE 设备,包含端口映射等功能
详细分析 Slirp4netns 模式的网络拓扑,引入 TAP 设备,分析 TAP 怎么实现端口映射等功能
简单介绍虚拟机网络
本文不涉及 Netavark 的 rootless 桥接、MACvlan 或 IPvlan 的物理直连
Chapter 6:未完待续
二、基本概念(了解即可,不需要完全掌握)
PS. 作者不会比喻且讨厌比喻,不过 DeepSeek 在审稿时强烈建议加上比喻,这一小节中的比喻(括号内的部分)是它生成的
1. IP(设备在网络中的门牌号)
IP 用来表示网络位置与具体设备,想要在互联网上定位一个设备,唯一的方式是通过访问 IP
127.0.0.1 就是一个 IPv4 地址,表示”这台电脑自身”,类似于反身代词 Self,在 IPv6 中,用 ::1 表示
103.235.46.115 是 www.baidu.com 对应的 IP 地址(之一),我们在浏览器中输出域名时,实际请求的(可能)是 103.235.46.115,这个过程称为 DNS 解析
2. 子网与子网掩码(判断对方是不是邻居)
子网是一个逻辑概念,比如常见的 127.0.0.0/8(本机/回环地址)、 192.168.0.0/16(常见于家用宽带)、10.0.0.0/8(私有地址段),这里的 /8、/16 称为 CIDR 前缀长度,比如 127.0.0.0/8 表示只要前 8 位(即 127)一致则就在这个子网中,对应的子网掩码就是将这些位置 1、其余置 0 得到的 255.0.0.0
3. 网关(对于不是邻居的设备,数据包要交给谁转发)
当两个设备不在同一个网段中时,数据无法直接传达,需要经过互联网,网关能将数据包从局域网(子网)中传给互联网,经过互联网上的各个路由传递给目标设备(或者目标设备的网关)
4. MAC(设备的身份证)
在同一个网段内,可以用 MAC 地址来唯一标识设备
三、实验
执行
ip a这个命令可以看到当前设备的 ip 地址,典型输出:
1: lo: ... link/loopback ... inet 127.0.0.1/8 scope host lo ... inet6 ...2: wlp4s0: ... link/ether ... altname ... inet 192.168.1.2/24 brd ... ... inet6 ...我们看到两个设备,第一个 lo 对应的是回环网段,而第二个 wlp4s0 就是我们的无线网卡(在你的电脑上可能是 wlan0、enp3s0 等),笔者的设备上 wl 表示 WLAN(无线局域网),而 p4s0 是这个网卡的位置(PCIE 总线 4 插槽 0),192.168.1.2 就是这个网卡在局域网中的 IP 地址了
四、OSI 七层模型(留个印象即可,主要是笔者为了限制写作范围使用)
Layer 1:物理层
解决的问题:如何传递二进制流
设备/介质:“网线”、光纤、无线信号,以及不常见也不需了解的中继器、集线器
Layer 1 不是这个系列关注的重点,我们只需要相信 Layer 1 能不可靠的将二进制流送到对面即可
Layer 2:数据链路层
解决的问题:如何(通过 MAC)寻找设备并发送数据
设备:网卡、交换机,以及超出本系列范围的(物理)网桥等
虚拟设备:TAP、VETH、BRIDGE
Layer 2 中最重要的概念是 MAC 地址,MAC 地址标识了一个 Layer 2 设备,且 MAC 地址(逻辑上)可以认为不会重复也不会变更,与 Layer 2 设备是一一对应的关系。MAC 冲突、变更、单设备多 MAC 等情况超出了这个系列的范围
Layer 2 还承载了数据校验、流量控制的部分功能,但这超出了这个系列的范围
Layer 3:网络层
解决的问题:如何(通过 IP)寻找设备并发送数据
设备:路由器,以及超出本系列范围的三层交换机等
虚拟设备:TUN
协议:IP、ICMP,以及超出本系列范围的 NDP 等协议
介于 Layer 2、3 之间的协议:ARP
Layer 3 中最重要的概念是 IP 地址与路由,IP 地址标识了一个 Layer 3 设备,路由决定了一个数据包怎么通过互联网精准送达到目标位置 之所以不用 MAC,因为 MAC 地址是扁平结构,无法承载位置信息,想要路由 MAC 则要求路由器存储世界上所有网络设备的 MAC 地址,这是不可能实现的,而 IP 地址具有层次化结构,可以按网络划分,聚合路由 此外,NAT 也是非常重要的概念,NAT 的存在使得没有公网 IP 的设备也可以访问互联网,在后文中会有讲解
Layer 3 还承载了分组转发(逐跳传递数据)、分片重组(超过 MTU 时分片,接收方重组)等功能,但这超出了这个系列的范围
Layer 4:传输层
解决的问题:进程间如何利用网络设备传递数据
协议:TCP、UDP,以及超出本系列范围的其他协议
Layer 4 中最重要的概念是端口,端口号标识了正在使用某个网络设备的某个进程
Layer 4 还可能(主要是 TCP)承担可靠传输、流量控制、拥塞控制等功能,这不是本系列的重点,会在对应章节简要介绍
Layer 5:会话层
解决的问题:建立、维护、结束会话,不需要了解
Layer 5 的内容本系列不会涉及
Layer 6:表示层
解决的问题:
- 如何保证一个应用发送的数据能被另一个应用理解(比如字符编码)
- 处理数据的加密、压缩
协议(有争议):SSL、TLS、DTLS,以及超出本系列范围的其他协议
Layer 6 的加密相关内容不是本系列的重点,会在对应章节简要介绍,Layer 6 的其余职能本系列不会涉及
Layer 7:应用层
解决的问题:与应用程序甚至用户交互
协议:HTTP(S)、DNS、DHCP、SSH,以及 SMTP/POP3/IMAP、FTP 等超出本系列范围的其他协议
Layer 7 中除了 DNS、HTTP(S) 外的部分不是本系列的重点,会在对应章节简要介绍
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时