网络协议
从最通俗的生活类比开始,建立对“计算机网络五层模型”及核心协议的直观认识。
五层模型
一、为什么网络要分层?一个快递的例子
想象你要寄一个包裹给远方的朋友:
- 你(应用层):写下信件内容,写上收件人姓名、地址。
- 快递员(传输层):把你的信装进快递袋,并贴上“运单号”,保证从你小区到朋友小区这一段运输可靠。
- 分拨中心(网络层):根据地址规划路线(比如先到城市A,再到城市B),选择最佳路径。
- 货车司机(数据链路层):把包裹从一站送到相邻的下一站,只关心“下一站是哪个仓库”。
- 高速公路/车轮(物理层):实际传输电信号、光信号或轮子滚动。
每一层只做自己的事,不用管其他层怎么实现。这样即使换一个快递公司(比如从顺丰换成圆通),你写的信格式不用变——这就是分层解耦。
计算机网络也是类似,五层模型从下到上:物理层 → 数据链路层 → 网络层 → 传输层 → 应用层。
二、五层模型与核心协议(结合你的博客)
1. 物理层
- 做什么:把 0 和 1 变成电信号、光信号、无线电波,在网线、光纤或空气中传播。
- 你不需深究:知道有“网线”“Wi-Fi 天线”就够了。
2. 数据链路层
- 做什么:在同一个局域网(比如你家路由器下的所有设备)内,把数据从一个设备传到另一个设备。它使用 MAC 地址(物理地址,出厂烧录,全球唯一)。
- 关键协议:
- ARP 协议:把 IP 地址转换成 MAC 地址。就像你要给小区里的某个人送信,你知道他的门牌号(IP),但需要问一下他住哪一栋哪一户(MAC)。
- MTU:最大传输单元,规定了数据链路层一次最多能传多少字节(通常 1500)。如果上层数据太大,就要分片。
3. 网络层
- 做什么:负责把数据从源 IP 地址送到目的 IP 地址,可能经过很多个路由器。它关心的是“怎么走最近的路”。
- 核心协议:
- IP 协议:定义 IP 地址(如 192.168.1.1),以及数据报(packet)的格式。IP 是不可靠的,它只管尽力送,丢了不管。
- ICMP 协议:用来传错误信息或网络状态,比如
ping命令就是发送 ICMP 回声请求,看对方是否可达。
4. 传输层
- 做什么:为应用进程(比如浏览器、微信)提供端到端的通信。它解决了“数据到了对方电脑,但交给哪个程序”的问题,通过端口(如 80 给 HTTP,443 给 HTTPS)。
- 两大协议:
- UDP:无连接、不可靠、速度快,适合视频通话、DNS 查询(丢一两个包没关系)。
- TCP:面向连接、可靠(确认重传、流量控制)、顺序保证,适合网页、文件下载。
5. 应用层
- 做什么:直接为你使用的应用程序服务。比如浏览网页用 HTTP,发邮件用 SMTP,域名转 IP 用 DNS。
- 常见协议:
- DNS:把
www.baidu.com变成 IP 地址(如 110.242.68.66)。就像电话本里的姓名转号码。 - HTTP:浏览器和服务器之间传输网页内容(超文本)。它是明文传输。
- HTTPS = HTTP + SSL/TLS 加密,保证安全。
- DNS:把
三、一次网络请求的完整旅程(访问百度)
假设你在浏览器输入 http://www.baidu.com,并按下回车:
- 应用层(DNS):你的电脑先问 DNS 服务器:“www.baidu.com 的 IP 是多少?”得到 IP(例如 14.215.177.38)。
- 应用层(HTTP):浏览器构造一个 HTTP 请求报文(比如 GET /),交给下一层。
- 传输层(TCP):
- 与百度的服务器建立 TCP 连接(三次握手)。
- 把 HTTP 请求报文切成数据段,加上源端口(随机)和目标端口(80)。
- 给每个数据段编号,准备发送。
- 网络层(IP):
- 给每个数据段加上 IP 头(源 IP 是你的电脑 IP,目标 IP 是 14.215.177.38)。
- 根据路由表决定下一跳(通常是你的路由器)。
- 数据链路层(ARP + 以太网):
- 用 ARP 查询下一跳(路由器)的 MAC 地址。
- 把 IP 数据报封装成帧,加上源 MAC 和目的 MAC。
- 物理层:通过网线或 Wi-Fi 把 0/1 变成电信号或电磁波发出去。
之后经过多个路由器(每跳都重复 4-6 步),最终到达百度的服务器。服务器反向逐层解包,得到 HTTP 请求,返回网页内容。你的浏览器再渲染出页面。
四、重要区别(面试爱考)
| 对比项 | 说明 |
|---|---|
| MAC 地址 vs IP 地址 | MAC 是物理地址(出厂固定),用于同一链路内寻址;IP 是逻辑地址(可配置),用于跨网络寻址。 |
| TCP vs UDP | TCP 像打电话(先接通,可靠,但慢);UDP 像寄明信片(不确认对方收到,但快)。 |
| HTTP vs HTTPS | HTTPS 多了一层 SSL/TLS 加密,防止窃听和篡改。 |
| 对称加密 vs 非对称加密 | 对称:同一个密钥加解密,快但密钥分发不安全;非对称:公钥加密私钥解密,安全但慢。HTTPS 混合使用:用非对称加密传输对称密钥,之后用对称加密传输数据。 |
五、“一句话总结”
- 物理层:传 0/1 信号。
- 数据链路层:相邻设备间传帧,靠 MAC 地址。
- 网络层:跨网络传包,靠 IP 地址和路由器。
- 传输层:进程间传数据,靠端口,TCP/UDP。
- 应用层:为具体应用服务,HTTP、DNS、HTTPS。
以后面试问到“在浏览器输入网址后发生了什么”,你就能按这五层顺序讲下来。
常见的网络协议
一、应用层协议
应用层协议直接为应用程序提供通信服务,数据最终呈现为用户可读的内容。
1. DNS(域名系统)
- 作用:把人类易记的域名(如
www.baidu.com)转换成机器可读的 IP 地址(如110.242.68.66)。 - 端口:53(UDP 为主,数据大时改用 TCP)。
- 工作流程(简化版):
- 浏览器/应用向本地 DNS 服务器发起查询请求。
- 本地 DNS 服务器若没有缓存,则从根域名服务器开始递归查询,一步步问到权威域名服务器。
- 最终得到 IP 地址,返回给客户端,并缓存一段时间。
- 补充:DNS 是互联网的“电话本”,没有它,你只能记 IP 地址上网。
2. HTTP(超文本传输协议)
- 作用:浏览器与 Web 服务器之间传输 HTML、图片、视频等超文本数据。
- 端口:80。
- 特点:
- 简单快速:请求方法只有 GET、POST、PUT 等几种。
- 无状态:服务器不保存客户端历史(每次请求独立)。
- 明文传输:不安全,容易被窃听或篡改。
- 报文格式:
- 请求行(方法 + URL + 版本)+ 请求头(Key-Value)+ 空行 + 请求体(可选)。
- 响应行(版本 + 状态码 + 描述)+ 响应头 + 空行 + 响应体。
- 常见状态码(你需要记住):
- 200 OK:成功。
- 301/302:重定向。
- 404:未找到资源。
- 500:服务器内部错误。
3. HTTPS(HTTP + SSL/TLS)
- 作用:在 HTTP 基础上增加加密层,保证数据机密性、完整性、身份认证。
- 端口:443。
- 工作流程(简化):
- 客户端验证服务器证书(防止中间人攻击)。
- 双方协商加密算法,通过非对称加密(RSA/ECC)安全交换一个对称密钥。
- 后续通信全部用该对称密钥加密(高效)。
- 为什么不用纯对称或纯非对称:
- 纯对称:密钥如何安全传输?
- 纯非对称:计算太慢。
- 混合方式兼顾安全和性能。
二、传输层协议
传输层负责端到端的通信,关注数据从源端口到目的端口的可靠或不可靠传输。
1. UDP(用户数据报协议)
- 特点:
- 无连接:发送数据前不需要建立连接。
- 不可靠:没有确认、重传、拥塞控制,丢包后不负责。
- 面向数据报:应用层交给 UDP 多大数据,就原样发送(不会拆分合并)。
- 头部小(8 字节),开销低。
- 适用场景:实时性要求高、可容忍少量丢包(视频直播、VoIP、DNS 查询、游戏状态同步)。
2. TCP(传输控制协议)
- 特点:
- 面向连接:必须三次握手建立连接,四次挥手断开连接。
- 可靠传输:通过序列号、确认应答、超时重传、校验和等机制保证数据完整、有序。
- 流量控制:滑动窗口,避免发送方过快淹没接收方。
- 拥塞控制:慢启动、拥塞避免、快重传、快恢复,避免网络过载。
- 面向字节流:数据被视为字节流,没有边界,需要应用层自己处理消息分割。
- 头部开销:20 字节(比 UDP 大)。
- 适用场景:要求数据完整且顺序正确(网页、文件下载、邮件、SSH)。
面试常考:TCP 三次握手和四次挥手,以及为什么需要 TIME_WAIT。
三、网络层协议
网络层负责跨网络的数据包转发和路由选择,核心是 IP 协议。
1. IP(互联网协议)
- 作用:为每个设备分配逻辑地址(IP 地址),并根据目的 IP 将数据包从源主机路由到目标主机。
- 版本:IPv4(32 位地址,如 192.168.1.1)和 IPv6(128 位,解决地址枯竭)。
- 特点:
- 无连接:每个数据包独立路由。
- 不可靠:尽力交付,丢包不重传(可靠性由上层 TCP 保证)。
- 分片与重组:当数据包超过链路 MTU 时,IP 层负责分片,接收端再重组。
- IP 地址组成:网络号 + 主机号(通过子网掩码区分)。同一网络号表示在同一个广播域。
2. ICMP(互联网控制报文协议)
- 作用:传递网络状态和错误信息,比如“主机不可达”、“端口不可达”、“时间超时”。
- 典型应用:
ping:发送 ICMP Echo 请求,收到 Echo 回复,测试连通性和 RTT。traceroute:利用 ICMP 超时报文追踪路由路径。
- 注意:ICMP 不是传输数据,而是辅助 IP 协议进行网络诊断。
四、数据链路层协议
数据链路层负责在同一链路(同一局域网或相邻设备)上传输帧,使用 MAC 地址。
1. ARP(地址解析协议)
- 作用:根据已知的 IP 地址,解析出对应的 MAC 地址。
- 工作过程(同网段):
- 主机 A 广播一个 ARP 请求:“谁拥有 IP 192.168.1.10?请把你的 MAC 告诉我。”
- 只有目标主机 B 回复自己的 MAC 地址。
- 主机 A 将 IP-MAC 映射缓存到 ARP 缓存表中,下次直接用。
- 安全风险:ARP 欺骗(伪造回复)可导致中间人攻击。
2. MTU(最大传输单元)
- 严格说不是协议,而是数据链路层的一个参数。以太网 MTU 通常为 1500 字节。
- 当 IP 数据报大于 MTU 时,网络层需要分片,在目标主机重组。
- 路径 MTU 发现(PMTUD)可以避免分片。
五、协议之间的协作(完整例子)
以你在浏览器访问 https://github.com 为例:
- DNS:把
github.com解析成 IP(例如140.82.112.3)。 - HTTP/HTTPS:浏览器构建 GET 请求,应用层交给传输层。
- TCP:与服务器 443 端口三次握手,然后加密传输数据。
- IP:在数据段前加上 IP 头(源 IP、目的 IP),查询路由表找到下一跳路由器。
- ARP:查询下一跳路由器的 MAC 地址,以便在链路层封装成帧。
- 以太网(数据链路层):封装成帧,通过物理层发送。
- 沿途路由器重复 IP + ARP + 以太网 过程,最终到达服务器。
- 服务器反向解包,返回 HTTPS 响应,浏览器渲染。
六、面试中常考的对比表格
| 协议 | 层次 | 连接性 | 可靠性 | 是否加密 | 典型应用 |
|---|---|---|---|---|---|
| DNS | 应用层 | 无连接(UDP为主) | 尽力 | 否 | 域名解析 |
| HTTP | 应用层 | 无状态(基于TCP) | 可靠 | 否 | 网页浏览 |
| HTTPS | 应用层 | 同HTTP | 可靠 | 是 | 安全网页、支付 |
| TCP | 传输层 | 面向连接 | 可靠 | 否 | 绝大多数应用 |
| UDP | 传输层 | 无连接 | 不可靠 | 否 | 实时音视频 |
| IP | 网络层 | 无连接 | 不可靠 | 否 | 跨网路由 |
| ICMP | 网络层 | 无连接 | 尽力 | 否 | ping、traceroute |
| ARP | 数据链路层 | 广播查询 | 可靠(单链路) | 否 | IP→MAC 解析 |
七、几个需要理解的“为什么”
-
为什么既有 IP 又有 MAC?
IP 负责跨网络寻址(逻辑、可变),MAC 负责同一链路内唯一标识设备(物理、固定)。两者分工不同。 -
为什么 DNS 使用 UDP?
查询请求短小,一次交互即可完成,用 UDP 更快且不占用连接资源。若响应超过 512 字节,则切换为 TCP。 -
为什么 TCP 要三次握手而不是两次?
防止已过期的连接请求突然被服务器接受,造成资源浪费;同时双方都能确认自己的发送和接收能力正常。
如果你需要我进一步画出TCP 三次握手的状态变迁图,或者详细解释HTTP 1.0/1.1/2.0 的区别,可以告诉我。

浙公网安备 33010602011771号