计算机网络基础_博客
从零理解网络通信:MAC、IP、交换机、路由器到底怎么配合?
📌 适合人群:刚接触计算机网络、对"数据怎么从一台电脑跑到另一台电脑"感到懵的同学。
本文用最直白的方式,把 MAC 地址、IP 地址、交换机、路由器、ARP 串成一条完整的故事线。
一、为什么需要"地址"?
两台电脑要通信,第一步得能互相找到对方。现实中我们给每台设备发了两种"地址",分工完全不同:
| 地址类型 | 名称 | 类比 | 是否随网络改变 | 作用范围 |
|---|---|---|---|---|
| MAC 地址 | 物理地址 / 硬件地址 | 身份证号(出厂写死) | 一般不随网络变(可被修改) | 同一根网线 / 同一个局域网内投递 |
| IP 地址 | 逻辑地址 / 网络地址 | 邮寄地址(你搬到哪里就换哪里的地址) | 随接入的网络变化 | 跨网络寻址、端到端定位 |
💡 关键认知:MAC 是"网卡出生证明",一台电脑有几块网卡就有几个 MAC(比如无线网卡和有线网卡各一个);IP 是"你当前住哪",插到哪个网络就由那个网络给你分配一个。
二、局域网内:交换机靠 MAC 转发
在一个局域网(LAN)里,连接电脑的设备通常是交换机(Switch)。
- 交换机内部维护一张 MAC 地址表(也叫 CAM 表),记录"某个 MAC 连在哪个端口上"。
- 它不是把数据广播给所有人,而是学习后只转发到目标 MAC 对应的那个端口。
- (对比老式的集线器 Hub:只会无脑群发,效率很低。)
⚠️ "交换机通过 MAC 识别电脑实现通信"——这是对的,但更准确的说法是:交换机学习 MAC↔端口 的映射,实现"按需精准转发",而不是识别一下就完事。
三、跨网络:路由器 + IP 登场
当一个局域网要连另一个局域网(比如宿舍网连到互联网),就需要路由器(Router)。
- 路由器的作用是连接不同的网络,并按 IP 地址把数据包"路由"到正确的网络。
- 路由器的每一个端口都是独立的:既有自己独立的 MAC 地址,也有自己独立的 IP 地址(这个 IP 通常就是它所在子网的网关)。
怎么判断"目标在不在一个网里"?
靠 IP + 子网掩码 做"与运算(&)":
本机网络号 = 本机IP & 子网掩码
目标网络号 = 目标IP & 子网掩码
如果 两个网络号相同 → 同一子网 → 直接发(ARP 找对方 MAC)
如果 两个网络号不同 → 不同子网 → 发给"默认网关"(也就是路由器)
🏠 默认网关就是本机配置的那个"出口路由器 IP"。电脑一旦发现目标不在自家子网,就把数据先扔给网关,剩下的事交给路由器。
四、ARP:IP 怎么"翻译成"MAC?
数据最终在链路上传输,必须写成 MAC。可我们只知道目标的 IP,怎么办?靠 ARP(地址解析协议)。
工作流程(以"同子网内 A 想找 B"为例):
- A 查自己的 ARP 缓存表,看有没有 B 的 IP→MAC 记录;
- 没有就广播一条 ARP 请求:"谁是 192.168.1.20?告诉我你的 MAC";
- 只有 B 单播回复:"我是,我的 MAC 是 MACb";
- A 把这条记录缓存起来,下次直接用,不用再广播。
📝 实用命令:在电脑上跑
arp -a就能看到本机的 IP↔MAC 缓存表;ipconfig(Win)/ifconfig(Linux/Mac)看自己的 IP 和网关。
五、数据包到底长什么样?(封装)
真正在网络里飞的不是"裸数据",而是一层套一层的封装。和我们讨论最相关的两层:
- 网络层(L3):管 IP,头部写
源IP / 目标IP,端到端不变(除非经过 NAT)。 - 数据链路层(L2):管 MAC,头部写
源MAC / 目标MAC,每经过一跳就改写目标 MAC。
一个以太网帧的真实结构(由外到内):
┌──────────┬──────────┬──────┬────────────────────────────┬──────┐
│ 前导码 │ 目标MAC │ 源MAC│ IP 包 │ FCS │
│ │ │ │ (源IP/目标IP + TCP/UDP+数据) │(校验)│
└──────────┴──────────┴──────┴────────────────────────────┴──────┘
帧头部分 ←──────── 数据链路层 ────────→ 网络层包 帧尾校验
🔧 "校验位"在以太网里正式叫 FCS(Frame Check Sequence,CRC 校验),位于帧的尾部,用来检测传输过程中是否出错。
六、完整例子:跨子网发数据,MAC 怎么跳?
假设:
- PC A:
192.168.1.10,MAC =MACa,网关192.168.1.1 - 路由器:左口
192.168.1.1(MACr1),右口10.0.0.1(MACr2) - PC C:
10.0.0.20,MAC =MACc
A 要给 C 发数据:
逐跳拆解:
| 跳段 | 源 MAC | 目标 MAC | 源 IP | 目标 IP |
|---|---|---|---|---|
| A → 路由器 | MACa | MACr1(网关) | A | C |
| 路由器 → C | MACr2 | MACc(最终目标) | A | C |
✅ 核心规律:
- 网络层(IP)从头到尾不变——它回答"数据从哪来、到哪去";
- 数据链路层(MAC)每跳都变——它只回答"这一小段链路里,下一跳是谁"。
⚠️ 例外:经过 NAT(网络地址转换) 时,IP 也会被改写(家用路由器上网就是典型场景),这是 IP "不变" 的常见例外。
七、一张表总结全流程
| 角色 | 工作层级 | 用的是什么地址 | 解决什么问题 |
|---|---|---|---|
| 交换机 | 数据链路层 (L2) | MAC | 局域网内"精准投递到哪台设备" |
| 路由器 | 网络层 (L3) | IP | 跨网络"走哪条路、交给谁转发" |
| ARP | 介于 L2/L3 | IP→MAC 翻译 | 拿到 IP 后,找出本地链路上对应的 MAC |
| 子网掩码 | 网络层 (L3) | — | 判断"目标在不在我家子网" |
| 默认网关 | 网络层 (L3) | 路由器 IP | 不同子网时的"出口" |
八、速记口诀
🧠 IP 管"终点",MAC 管"下一跳";
网络层从头到尾不变,数据链路层跳跳都换;
同网直连靠 ARP,跨网先扔给网关。
✍️ 本文由我自己的学习笔记整理而来,适合作为计算机网络入门的博客素材。欢迎在评论区讨论补充~
浙公网安备 33010602011771号