1. 网络基础回顾:OSI七层模型与TCP/IP协议栈

各位同学,咱们正式开始这门课之前,我得先带大家把网络基础捋一遍。说实话,我带过不少新人,发现很多问题都出在基础不牢上。你想想看,DNS和DHCP这两个服务,说白了就是网络世界的「电话本」和「自动分配器」,要是连网络怎么通信的都不清楚,后面学起来肯定吃力。

我个人习惯,讲网络必先讲模型。为什么?因为模型就是框架,有了框架你才知道每层在干什么。

1.1 OSI七层模型——理论上的完美蓝图

OSI七层模型,全称是开放系统互连参考模型。嗯,这玩意儿是国际标准化组织(ISO)在1984年搞出来的。说实话,它太完美了,完美到在实际应用中没人完全照着它来。但它依然是网络工程师的必修课,因为它把通信过程拆解得清清楚楚。

层级 名称 核心功能 常见协议/设备
7 应用层 为用户提供网络服务接口 HTTP、FTP、SMTP、DNS
6 表示层 数据格式转换、加密、压缩 SSL/TLS、JPEG、ASCII
5 会话层 建立、管理、终止会话 NetBIOS、RPC
4 传输层 端到端可靠传输、流量控制 TCP、UDP
3 网络层 路由选择、逻辑寻址 IP、ICMP、路由器
2 数据链路层 帧封装、物理寻址、差错检测 以太网、交换机、MAC地址
1 物理层 比特流传输、电气特性 网线、光纤、集线器
我的小经验: 面试时经常有人背「物理层传比特,数据链路层传帧...」但一问到实际场景就懵了。我建议你反过来记——从应用层往下想:你发微信(应用层)→ 系统把文字转成二进制(表示层)→ 建立连接(会话层)→ 拆成数据包(传输层)→ 加上IP地址(网络层)→ 加上MAC地址(数据链路层)→ 变成电信号发出去(物理层)。这样是不是好理解多了?

1.2 TCP/IP协议栈——实际使用的标准

OSI是理论,TCP/IP才是实战。我们平时说的「互联网」,跑的就是TCP/IP协议栈。它只有四层,比OSI精简得多。

  • 应用层: 对应OSI的5、6、7层。HTTP、DNS、DHCP都在这一层。
  • 传输层: 对应OSI的第4层。TCP可靠,UDP快速。
  • 网络层: 对应OSI的第3层。IP协议在这里,负责寻址和路由。
  • 网络接口层: 对应OSI的1、2层。把数据变成能在网线上跑的信号。

为什么会这样简化?说白了,OSI的会话层和表示层在实际应用中,要么被应用层包办了,要么被传输层处理了。TCP/IP更务实,它只保留真正需要的层次。

重点记住: 我们后面要讲的DNS和DHCP,都属于TCP/IP模型中的应用层协议。它们依赖传输层的UDP(大部分情况)来传输数据。

IP地址、子网掩码与网关

这三个概念,是网络通信的基石。我见过太多人把IP地址背得滚瓜烂熟,但一问到「为什么需要子网掩码」就卡壳了。

2.1 IP地址——网络世界的门牌号

IP地址就像你家的门牌号。IPv4地址由32位二进制组成,通常写成点分十进制,比如 192.168.1.1。它分为网络部分和主机部分。

举个例子:192.168.1.0/24,这个 /24 就是子网掩码的简写,表示前24位是网络位,后8位是主机位。

2.2 子网掩码——划清界限的工具

子网掩码的作用,就是告诉设备:哪些位是网络号,哪些位是主机号。它长得也像IP地址,但有个特点——左边全是1,右边全是0。

比如 255.255.255.0,二进制就是 11111111.11111111.11111111.00000000。把IP地址和子网掩码做「与」运算,就能得到网络地址。

我曾经踩过的坑: 有一次配置服务器,怎么ping都不通。查了半天,发现子网掩码写成了 255.255.255.128,但网关的掩码是 255.255.255.0。两台设备认为自己在不同的网络里,自然不通。所以,同一网段内的设备,子网掩码必须一致!

2.3 网关——通往外部世界的门

网关,说白了就是「出门右转第一个路口」。当你的设备发现目标IP和自己不在同一个网段时,就会把数据包发给网关,由网关帮你转发。

默认网关通常是路由器的一个接口地址。比如你家路由器是 192.168.1.1,那所有设备的网关都指向它。

MAC地址与ARP协议

3.1 MAC地址——设备的身份证

MAC地址是烧录在网卡上的,全球唯一。它由48位二进制组成,通常写成12位十六进制,比如 00:1A:2B:3C:4D:5E

IP地址是逻辑地址,可以变;MAC地址是物理地址,一般不变。数据在局域网内传输,靠的是MAC地址,不是IP地址。

3.2 ARP协议——IP到MAC的翻译官

这里有个问题:我知道对方的IP,但不知道它的MAC地址,怎么把数据发过去?

ARP协议就是干这个的。它的工作流程很简单:

  1. 主机A广播一个ARP请求:「谁的IP是192.168.1.2?请告诉我你的MAC地址。」
  2. 主机B收到后,发现是自己的IP,就单播回复:「我是192.168.1.2,我的MAC是00:1A:2B:3C:4D:5E。」
  3. 主机A收到后,把IP和MAC的对应关系缓存起来,下次直接用。
避坑指南: 我曾经遇到一个网络时通时断的问题,查了很久发现是ARP表被污染了。有人在内网发了伪造的ARP包,导致流量被劫持。所以,在关键网络里,建议开启ARP防护或配置静态ARP表。

网络通信的基本流程

好了,我们把所有零件都凑齐了。现在来看看,一台电脑访问一个网站,数据到底是怎么走的。

假设你在浏览器输入 www.example.com

  1. DNS解析: 浏览器先问DNS服务器:「www.example.com的IP是多少?」DNS返回一个IP,比如 93.184.216.34
  2. 封装数据包: 应用层生成HTTP请求,传输层加上TCP头部(源端口、目标端口),网络层加上IP头部(源IP、目标IP),数据链路层加上MAC头部(源MAC、目标MAC)。
  3. 判断是否在同一网段: 用子网掩码计算,发现目标IP不在本地网段,于是把数据包发给默认网关。
  4. ARP获取网关MAC: 如果ARP缓存里没有网关的MAC,就发ARP请求获取。
  5. 数据帧发送: 数据帧从网卡发出,经过交换机,到达路由器。
  6. 路由转发: 路由器查看目标IP,查路由表,找到下一跳,重新封装MAC地址,继续转发。
  7. 到达目标服务器: 经过多次路由跳转,数据包到达目标服务器。服务器解封装,处理请求,返回响应。
  8. 响应返回: 同样的流程反向走一遍,浏览器收到响应,渲染出网页。
一句话总结: 网络通信就是「层层封装,层层解封」的过程。每一层只关心自己的事,下层为上层提供服务。
网络通信基本流程 发送端(你的电脑) 应用层(HTTP请求) 传输层(TCP头部) 网络层(IP头部) 数据链路层(MAC头部) 物理层(比特流) 中间网络 交换机 → 路由器 → ... ARP解析网关MAC 路由转发 逐跳传递 接收端(服务器) 应用层(处理请求) 传输层(解TCP头部) 网络层(解IP头部) 数据链路层(解MAC头部) 物理层(接收比特流) 封装 解封装

嗯,到这里,网络基础就回顾完了。这些内容看起来简单,但都是后面学习DNS和DHCP的根基。你想想看,DNS解析就是第一步,DHCP分配IP就是给设备一个合法的门牌号。没有这些基础,后面根本玩不转。

我个人建议,如果你对ARP、子网掩码这些概念还不太熟,最好在实验环境里抓个包看看。Wireshark打开,ping一下隔壁电脑,看看ARP请求和响应是怎么交互的。亲手做过一次,比看十遍书都管用。

专注资料整理