前言:欢迎 各位光临本博客,这里小编带你直接手撕**,文章并不复杂,愿诸君**耐其心性,忘却杂尘,道有所长!!!!

IF'Maxue :个人主页
🔥 个人专栏 :
《C语言》
《C++深度学习》
《Linux》
《数据结构》
《数学建模》
⛺️生活是默默的坚持,毅力是永久的享受。不破不立!

文章目录
- 网络传输基本流程
-
- [1. 每块网卡都有唯一"身份证":MAC 地址](#1. 每块网卡都有唯一"身份证":MAC 地址)
- [2. 多台设备共享网络?小心"撞车"!](#2. 多台设备共享网络?小心"撞车"!)
- [3. 网络通信靠"协议栈"层层协作](#3. 网络通信靠"协议栈"层层协作)
- [4. 每一层都要做两件事(除应用层)](#4. 每一层都要做两件事(除应用层))
- [5. 各层数据单元叫什么?](#5. 各层数据单元叫什么?)
- [6. 抓包工具怎么工作的?混杂模式!](#6. 抓包工具怎么工作的?混杂模式!)
- [7. 两台主机如何通过 TCP/IP 通信?](#7. 两台主机如何通过 TCP/IP 通信?)
- [8. 跨网络传输:路由器登场!](#8. 跨网络传输:路由器登场!)
- [9. IP vs MAC:分工明确](#9. IP vs MAC:分工明确)
- [10. 为什么不能只要 IP,不要 MAC?](#10. 为什么不能只要 IP,不要 MAC?)
网络传输基本流程
网络通信看似复杂,其实就像寄快递:每层都有自己的"包装盒"和"地址标签"。下面结合图示,用最直白的方式讲清楚数据是怎么从一台电脑传到另一台的。
1. 每块网卡都有唯一"身份证":MAC 地址
每台设备的网卡出厂时就有一个全球唯一的物理地址------MAC 地址。它就像你的身份证号,不会重复。

MAC 地址由 6 组十六进制数组成(如 00:1A:2B:3C:4D:5E),前 3 组标识厂商,后 3 组是设备编号。在局域网(比如你家 Wi-Fi)里,设备之间靠 MAC 地址互相识别。

2. 多台设备共享网络?小心"撞车"!
早期以太网采用 CSMA/CD 机制(载波侦听多路访问/冲突检测):
- 发数据前先"听"一下线路是否空闲
- 如果多人同时发,就会碰撞(collision) ,导致丢包

设备越多,碰撞概率越高,有效传输的数据就越少。

为解决这个问题,后来出现了交换机,它能记住每个端口对应的 MAC,直接点对点转发,避免广播风暴。

补充:早期还有"令牌环"网络------谁拿到"令牌"谁才能发数据,本质是一种分布式锁。
3. 网络通信靠"协议栈"层层协作
现代网络使用 TCP/IP 协议栈,分为四层(或五层),每一层都有自己的协议:

- 应用层(HTTP、FTP)
- 传输层(TCP、UDP)
- 网络层(IP)
- 链路层(以太网、Wi-Fi)
- (物理层:电线、光纤等,常被省略)
关键概念:报文封装 = 协议头 + 有效载荷
就像套娃:应用数据 → 加 TCP 头 → 加 IP 头 → 加以太网帧头。

每一层只关心自己的头部,把上层数据当"黑盒"传递。

虽然数据是逐层向下传,但逻辑上可以理解为:发送方的 TCP 和接收方的 TCP 在"直接对话"。
4. 每一层都要做两件事(除应用层)
除了最顶层的应用层,其他每一层都必须完成两个核心功能:
- 封装(发送时):加自己的协议头
- 分用(接收时):根据头部信息,把数据交给上一层正确的协议

例如:
- 链路层收到帧,检查 MAC 地址是否匹配
- 网络层看 IP 头,决定是本地处理还是转发
- 传输层看端口号(如 80、443),交给对应的应用程序

整个过程像"入栈出栈":
- 发送:数据从应用层"入栈",逐层加头
- 接收:从链路层"出栈",逐层剥头、分用

5. 各层数据单元叫什么?
不同层对数据的称呼不同:
| 层级 | 数据单元名称 |
|---|---|
| 应用层 | 报文(Message) |
| 传输层 | 段(Segment,TCP)或报文(Datagram,UDP) |
| 网络层 | 包(Packet) |
| 链路层 | 帧(Frame) |

6. 抓包工具怎么工作的?混杂模式!
正常情况下,网卡只接收目标 MAC 是自己的帧。
但开启 混杂模式(Promiscuous Mode) 后,网卡会接收所有经过的数据帧,不管是不是发给自己的。
这就是 Wireshark、tcpdump 等抓包工具的原理!

注意:混杂模式通常需要管理员权限,且可能被交换机限制(需端口镜像)。
7. 两台主机如何通过 TCP/IP 通信?
假设 A 要给 B 发消息(即使不在同一局域网):
- A 的应用层生成数据
- 传输层加 TCP 头(含端口号)
- 网络层加 IP 头(含源/目标 IP)
- 链路层加以太网帧头(含源/目标 MAC)

接收方 B 则反向操作:剥帧头 → 剥 IP 头 → 剥 TCP 头 → 交给应用。

宏观来看,整个过程是对称的封装与解封装。

8. 跨网络传输:路由器登场!
如果 A 和 B 不在同一子网,数据就要经过路由器。

- IP 地址 用于跨网络寻址(全球唯一标识主机)
- MAC 地址 仅用于局域网内通信
就像寄快递:
- IP 地址 = 收件人完整地址(省市区街道门牌)
- MAC 地址 = 最后一公里快递员手里的"楼栋号+房号"

IPv4 只有约 43 亿个地址,远不够全球设备使用。中国积极推动 IPv6(128 位,地址近乎无限),但因兼容性问题推广缓慢。
9. IP vs MAC:分工明确
| 对比项 | IP 地址 | MAC 地址 |
|---|---|---|
| 作用范围 | 全球(跨网络) | 局域网内 |
| 是否可变 | 可配置(动态/静态) | 固定(硬件写死) |
| 协议层 | 网络层 | 链路层 |
| 路由依据 | 是 | 否 |

类比《西游记》:
- IP 地址 = "去西天取经"(远期目标)
- MAC 地址 = "今天走到女儿国"(近期目标)

10. 为什么不能只要 IP,不要 MAC?
有人问:既然 IP 能全球定位,干嘛还要 MAC?
原因有二:
- 历史兼容:以太网早于 IP 存在,底层硬件依赖 MAC
- 投入产出比低:重写所有网卡、交换机、驱动成本太高

而且,IP 提供逻辑寻址,MAC 提供物理寻址,二者分工协作,缺一不可。

正是 IP 层的存在,才让全世界各种物理网络(以太网、Wi-Fi、4G、卫星)统一成"IP 网络"------这是互联网成功的基石。