Linux:初始网络(下)

或许你有一个疑问,"发请求、收响应",却不清楚数据在网线里到底是怎么从一台主机走到另一台主机的。这篇博客在上一篇博客基础上,将最基础的局域网通信原理出发,拆解数据封装与解包的核心逻辑,再延伸到跨网段的网络传输,帮你建立起网络传输的完整宏观认知,所以大家要认真阅读啦~~

一、同局域网通信:以太网内的主机如何直接对话

局域网是我们最常接触的网络场景,比如家里的路由器连接的电脑、手机,公司内网的办公设备,都属于同一个局域网。我们先从最核心的问题切入,理解局域网通信的底层逻辑

1. 核心问题:同一局域网的两台主机,能直接通信吗?

答案是:**完全可以!**局域网内的主机通信,本质是基于以太网协议、通过 MAC 地址完成的二层直连通信,原理就像我们在同一个教室里上课:老师喊出同学的名字,全班同学都能听到这个声音,但只有名字对应的同学会做出回应,其他同学会自动忽略这个信息

2. 局域网通信的唯一身份标识:MAC 地址

在以太网的局域网里,每一台主机的唯一性,靠的就是 MAC 地址来保证。

  • 核心定义:MAC 地址用来识别数据链路层中相连的节点,是网卡的 "物理身份证"
  • 格式规范 :长度为 48 个比特位,也就是 6 个字节,通常用 16 进制数字加冒号的形式表示,例如08:00:27:03:fb:19
  • 唯一性 :MAC 地址在网卡出厂时就已经确定,无法修改,全球唯一(虚拟机的 MAC 地址并非真实物理地址,可能存在冲突;部分网卡也支持用户自定义配置 MAC 地址)
  • 查看方式 :在 Windows 系统中,可通过ipconfig /all命令查看网卡对应的 MAC 地址,linux中也可以通过ifconfig来查看

3. 以太网局域网的核心通信规则

想要理解局域网通信,必须先搞清楚以太网的底层规则:

  1. 串行通信规则 :以太网中,任何时刻只允许一台机器向网络中发送数据;如果多台机器同时发送,会发生数据干扰,这种情况我们称之为数据碰撞
  2. 碰撞域与碰撞规避:在没有交换机的场景下,一个以太网就是一个碰撞域;所有发送数据的主机,都必须遵循碰撞检测和碰撞避免的规则,保障数据传输的有序性
  3. 接收判定规则 :局域网通信过程中,主机对收到的报文,会通过目标 MAC 地址判定是否是发给自己的:只有目标 MAC 地址和自己的 MAC 地址匹配,才会接收并处理这个报文,否则直接丢弃

二、网络传输的核心:数据的封装与解包

不管是局域网通信,还是跨网段的广域网通信,都离不开一个最核心的动作:数据的封装与解包。这是整个网络协议栈工作的核心,也是理解所有网络协议的基础

1. 先明确两个核心概念

网络中传输的所有数据,都可以拆分为两部分:

  • 报头:对应协议层定义的结构体字段,里面包含了协议的核心规则,比如报头长度、有效载荷长度、上层协议类型等
  • 有效载荷 :上层协议传递下来的、需要被传输的核心数据。一句话总结:报文 = 报头 + 有效载荷

2. 各层数据包的专属称谓

在 TCP/IP 四层协议栈中,不同层级对数据包有不同的命名,对应不同的协议处理阶段:

  • 传输层:数据包叫做段(segment)
  • 网络层:数据包叫做数据报(datagram)
  • 数据链路层:数据包叫做帧(frame)

3. 什么是封装(Encapsulation)?

应用层的数据通过协议栈发到网络上时,每层协议都会给上层传来的数据,加上一个自己协议的报头,这个自上而下层层加报头的过程,就叫做封装。举个例子:应用层要发送一段数据,会先交给传输层,传输层加上 TCP/UDP 报头,再交给网络层,网络层加上 IP 报头,再交给数据链路层,数据链路层加上以太网帧头和帧尾,最终封装成一个完整的以太网帧,发送到物理传输介质上

4. 什么是解包与分用?

数据封装成帧后,通过物理介质到达目的主机,目的主机的协议栈会执行完全相反的操作:自底向上,每层协议剥掉对应的报头,再根据报头里的 "上层协议字段",把剩下的有效载荷,交给对应的上层协议处理,这个过程就是解包与分用。比如:数据链路层剥掉以太网帧头,根据帧头里的协议类型,把载荷交给网络层的 IP 协议;IP 协议剥掉 IP 报头,根据报头里的协议号,把载荷交给传输层的 TCP/UDP 协议;传输层再剥掉对应的报头,把最终的应用数据交给上层应用

5. 学习所有网络协议的核心认知

从封装与解包的逻辑出发,我们可以建立一个通用的协议学习思路:以后学习任何网络协议,都要先搞懂两个核心问题:

  1. 这个协议,是如何完成解包的?只有明确了解包逻辑,才能真正理解封包的设计。
  2. 这个协议,是如何把自己的有效载荷,准确交付给上层协议的?

搞懂这两个问题,就搞懂了这个协议 80% 的核心逻辑

三、同网段主机通信的完整流程

结合上面的局域网通信原理、封装解包逻辑,我们可以完整串一遍,同一个局域网内,主机 A 给主机 B 发送一段数据的完整流程:

  1. 应用层:主机 A 的应用程序生成要发送的数据,交给传输层
  2. 传输层:给数据加上传输层报头,封装成数据段,交给网络层
  3. 网络层:给数据段加上 IP 报头(包含源 IP、目的 IP),封装成 IP 数据报,交给数据链路层
  4. 数据链路层:给 IP 数据报加上以太网帧头(包含源 MAC 地址、目的 MAC 地址)和帧尾,封装成以太网帧,通过网卡发送到局域网中
  5. 局域网传输:以太网帧在局域网中传播,所有主机都能收到这个帧
  6. 接收判定:局域网内的主机检查帧头的目的 MAC 地址,只有主机 B 发现 MAC 地址和自己匹配,才会接收这个帧,其他主机直接丢弃
  7. 主机 B 解包:主机 B 自底向上,依次剥掉以太网帧头、IP 报头、传输层报头,最终把应用数据交给对应的应用程序,完成一次同网段的数据传输

四、跨网络传输:跨网段的数据包如何走遍全网?

同网段的通信靠 MAC 地址直连,那我们访问外网、跨城市甚至跨国家的网络请求,是怎么完成的?这就需要理解跨网段的传输流程,以及 IP 地址的核心作用。

1. 跨网段通信的核心标识:IP 地址

IP 地址是 IP 协议中,用来标识网络中不同主机的地址,是跨网段路由寻址的核心依据。

  • 版本区分:IP 协议有 IPv4 和 IPv6 两个版本,我们日常接触的绝大多数场景,都是 IPv4
  • 格式规范:IPv4 地址是一个 4 字节、32 位的整数,我们通常用点分十进制 的字符串表示,比如192.168.0.1,用点分割的每一个数字代表一个字节,范围是 0-255
  • 核心意义:IP 地址标识了主机在整个 IP 网络中的位置,是数据包能从源主机走到目标主机的核心依据

2. 为什么跨网段传输,必须经过路由器?

数据从一台主机到另一个网段的主机,传输过程中必须经过一个或多个路由器。路由器的核心作用,就是连接不同的网段,维护路由表,完成数据包的寻址和转发,是不同网络之间的 "中转站"。就像我们要从北京去上海,需要沿着高速路,经过一个个高速出口和枢纽,路由器就是网络世界里的 "高速枢纽"。

3. 跨网段传输的核心规则

跨网段传输和同网段传输,最大的区别,就在于 IP 地址和 MAC 地址的变化逻辑,这也是网络传输最核心的知识点:

  • IP 地址全程不变:在整个传输过程中,IP 报头里的源 IP 地址和目的 IP 地址,全程保持不变(不考虑 NAT 等特殊场景),它代表了数据包最终的 "长远目标"
  • MAC 地址逐跳变化:以太网帧头里的源 MAC 地址和目的 MAC 地址,每经过一个路由器、一个网段,都会被重新封装、发生变化,它代表了数据包 "下一跳要发给谁"

简单来说:目的 IP 是路径选择的重要依据,MAC 地址是局域网转发的重要依据

4. 跨网段传输的完整流程

我们以主机 A(192.168.1.10)给另一个网段的主机 C(220.181.38.251)发数据为例,拆解完整的传输流程:

  1. 主机 A 封装与寻址:主机 A 通过 IP 地址判断,目标主机和自己不在同一个网段,会把数据包先发给自己的网关(路由器);封装数据包时,IP 报头填源 IP(主机 A)和目的 IP(主机 C),以太网帧头填源 MAC(主机 A)和目的 MAC(网关路由器的 MAC 地址)
  2. 网关路由器接收与转发:路由器收到以太网帧,解包到网络层,查看目的 IP 地址,通过路由表计算出下一跳的地址;然后重新封装以太网帧,源 MAC 改成路由器出接口的 MAC,目的 MAC 改成下一跳设备的 MAC 地址,转发给下一跳
  3. 逐跳转发:数据包在网络中,经过一个又一个路由器,每一跳都会重新解包、查路由、重新封装帧头,更换 MAC 地址,但 IP 报头始终不变
  4. 到达目标网段:数据包最终到达主机 C 所在网段的边界路由器,路由器把帧的目的 MAC 地址,改成主机 C 的 MAC 地址,在局域网内发送
  5. 主机 C 接收与解包:主机 C 收到以太网帧,匹配到自己的 MAC 地址,完成接收,然后自底向上逐层解包,最终把数据交给对应的应用程序,完成跨网段传输

五、IP 地址与 MAC 地址的核心区别

维度 IP 地址 MAC 地址
所属层级 网络层 数据链路层
核心作用 标识主机在整个 IP 网络中的位置,用于跨网段路由寻址 标识局域网内的网卡节点,用于同网段的直连通信
传输中的变化 全程保持不变 每经过一个网段 / 路由器,都会发生变化
地址特性 可根据网络环境动态配置、变更 网卡出厂固定,全局唯一
寻址范围 可用于全球广域网的寻址 仅在当前局域网内有效

整个网络传输的核心逻辑,其实可以用三句话概括:

  1. 数据传输的核心动作,是自上而下封装,自下而上解包分用
  2. 同网段的局域网通信,靠 MAC 地址完成直连转发
  3. 跨网段的广域网通信,靠 IP 地址完成路由寻址,靠 MAC 地址完成每一跳的局域网转发

而整个 IP 网络层存在的最大意义,就是提供了一层网络虚拟层,让全球各式各样的底层物理网络,都统一成了 IP 网络,屏蔽了底层网络的差异,这也是互联网能实现全球互联互通的核心基础,到这里我们也终于正式进入了网络,准备开始后面的学习啦~~

相关推荐
小政同学4 小时前
【NFS故障】共享的文件无法执行
linux·运维·服务器
AI木马人4 小时前
3.【Prompt工程实战】如何设计一个可复用的Prompt系统?(避免每次手写提示词)
linux·服务器·人工智能·深度学习·prompt
lwf0061644 小时前
导数学习日记
学习·算法·机器学习
ch3nyuyu5 小时前
Ubuntu(乌班图)基础指令
linux·运维·网络
qeen875 小时前
【编程日记】现阶段总结
学习
minglie15 小时前
gcc编译器汇总
linux
挽安学长5 小时前
保姆级教程,通过GACCode使用Claude Code Desktop!
运维·服务器
其实防守也摸鱼6 小时前
软件安全与漏洞--6、软件安全需求分析
网络·安全·网络安全·软件需求·等保·法律
firstacui6 小时前
MGRE实验
运维·服务器·网络
白菜欣7 小时前
Linux —《开发三件套:gcc/g++、gdb、make/Makefile 全解析》
linux·运维