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 | 物理层 | 比特流传输、电气特性 | 网线、光纤、集线器 |
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更务实,它只保留真正需要的层次。
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地址和子网掩码做「与」运算,就能得到网络地址。
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协议就是干这个的。它的工作流程很简单:
- 主机A广播一个ARP请求:「谁的IP是192.168.1.2?请告诉我你的MAC地址。」
- 主机B收到后,发现是自己的IP,就单播回复:「我是192.168.1.2,我的MAC是00:1A:2B:3C:4D:5E。」
- 主机A收到后,把IP和MAC的对应关系缓存起来,下次直接用。
网络通信的基本流程
好了,我们把所有零件都凑齐了。现在来看看,一台电脑访问一个网站,数据到底是怎么走的。
假设你在浏览器输入 www.example.com:
- DNS解析: 浏览器先问DNS服务器:「www.example.com的IP是多少?」DNS返回一个IP,比如
93.184.216.34。 - 封装数据包: 应用层生成HTTP请求,传输层加上TCP头部(源端口、目标端口),网络层加上IP头部(源IP、目标IP),数据链路层加上MAC头部(源MAC、目标MAC)。
- 判断是否在同一网段: 用子网掩码计算,发现目标IP不在本地网段,于是把数据包发给默认网关。
- ARP获取网关MAC: 如果ARP缓存里没有网关的MAC,就发ARP请求获取。
- 数据帧发送: 数据帧从网卡发出,经过交换机,到达路由器。
- 路由转发: 路由器查看目标IP,查路由表,找到下一跳,重新封装MAC地址,继续转发。
- 到达目标服务器: 经过多次路由跳转,数据包到达目标服务器。服务器解封装,处理请求,返回响应。
- 响应返回: 同样的流程反向走一遍,浏览器收到响应,渲染出网页。
嗯,到这里,网络基础就回顾完了。这些内容看起来简单,但都是后面学习DNS和DHCP的根基。你想想看,DNS解析就是第一步,DHCP分配IP就是给设备一个合法的门牌号。没有这些基础,后面根本玩不转。
我个人建议,如果你对ARP、子网掩码这些概念还不太熟,最好在实验环境里抓个包看看。Wireshark打开,ping一下隔壁电脑,看看ARP请求和响应是怎么交互的。亲手做过一次,比看十遍书都管用。