【计算机网络全面教学】应用层核心协议,HTTP/DNS/DHCP/FTP/SMTP全解析Day5(2026年)

写在前面:应用层是离我们最近的网络层,也是面试里问得最多的层。说实话,我见过太多人学了四年计算机,连HTTP和HTTPS的区别都说不清楚,更别提DNS解析过程了。今天这篇文章,我把应用层所有核心协议一次性讲透。不管你是准备面试还是想真正理解"上网"这件事,这篇都值得你认真看完。建议收藏,因为你会发现它早晚用得上。

文章目录


一、应用层概述

应用层是OSI参考模型的第七层,也是TCP/IP模型的最上层。我们平时接触到的所有网络应用------浏览器、邮件客户端、FTP工具、即时通讯------全部都在这一层。

说白了,下层所有协议(物理层、数据链路层、网络层、传输层)辛辛苦苦搭建的通信管道,最终都是为了给应用层服务的。没有应用层,网络就只是一堆冷冰冰的管道。

C/S架构 vs P2P架构

对比维度 C/S架构(客户端/服务器) P2P架构(对等网络)
核心特点 服务器集中提供服务,客户端请求 每个节点既是客户端也是服务器
典型应用 Web浏览、电子邮件、数据库 BitTorrent、区块链、Skype
可扩展性 服务器是瓶颈,扩展成本高 节点越多性能越好
可靠性 依赖服务器,单点故障风险 去中心化,抗故障能力强
管理难度 集中管理,方便维护 分布式管理,难以控制

踩坑提醒:面试时别把P2P说成"点对点协议"(Point-to-Point Protocol),那是数据链路层的PPP协议。P2P在这里是Peer-to-Peer,指的是架构模式,不是某个具体协议。


二、HTTP协议详解

HTTP(HyperText Transfer Protocol,超文本传输协议)是万维网数据通信的基础。这个协议几乎每个程序员天天都在用,但真正理解它的人不多。

2.0 HTTP是什么?------餐厅点餐类比

新手理解HTTP,最好的方式是把它想象成餐厅点餐的过程

HTTP概念 餐厅类比 说明
URL 菜单上的菜品编号 www.example.com/index.html 就像菜单上的"A12号套餐",告诉服务员你要点什么
HTTP请求 你写的点餐单 你填好"要什么菜、有什么特殊要求",交给服务员
HTTP响应 服务员端来的菜 厨房做好后,服务员把菜端给你
状态码 服务员的回复 "菜来了"、"这道菜没有"、"厨房着火了"...

举个例子

  • 你说:"我要A12号套餐"(GET请求)
  • 服务员说:"好的,200,菜马上来"(200 OK)
  • 服务员说:"抱歉,404,这道菜我们没有"(404 Not Found)
  • 服务员说:"不好意思,500,厨房着火了"(500 Internal Server Error)

踩坑提醒:很多新手以为HTTP就是"上网",其实HTTP只是浏览器和服务器之间"对话的规则"。就像餐厅点餐有规矩一样,HTTP规定了"怎么问"和"怎么答"。

2.1 HTTP请求方法

HTTP定义了一组请求方法,用来告诉服务器你想干什么。

方法 作用 是否有请求体 幂等性 典型场景
GET 获取资源 浏览网页、下载文件
POST 提交数据 表单提交、文件上传
PUT 替换资源 更新用户信息
DELETE 删除资源 删除指定资源
HEAD 获取响应头 检查资源是否存在
OPTIONS 获取支持方法 CORS预检请求

踩坑提醒:很多人以为GET不能传参数,其实GET可以通过URL的query string传参。区别在于GET的参数在URL里,POST的参数在请求体里。另外,GET请求可以被缓存、被收藏为书签,POST不行。

GET vs POST 详细对比------查快递 vs 寄快递

对比维度 GET(查快递) POST(寄快递)
类比 去快递点查包裹,报单号就行 去快递点寄包裹,要填单子、装东西
数据位置 信息在URL里(单号贴在额头上) 信息在请求体里(东西装在包裹里)
可见性 URL所有人都能看到 请求体不会直接显示在地址栏
数据大小 受URL长度限制(约2KB) 理论上无限制
安全性 低(别在URL里放密码!) 相对高(但也不是绝对安全)
幂等性 是(查一次和查十次结果一样) 否(寄两次就是两个包裹)
缓存 可以被浏览器缓存 通常不被缓存
书签 可以收藏为书签 不能收藏为书签

生活场景

  • GET :你在淘宝搜索"运动鞋",URL变成 taobao.com/search?q=运动鞋。你可以把这个链接发给朋友,他打开看到的一样。
  • POST:你提交订单,填写收货地址、支付方式。这些信息不会显示在URL里,刷新页面浏览器还会警告你是否要重新提交。

踩坑提醒:GET请求千万别用来提交密码、银行卡号等敏感信息!因为URL会记录在浏览器历史、服务器日志里,谁都能看到。

2.2 HTTP状态码速查

状态码是服务器告诉客户端"你的请求处理得怎么样了"的简短回答。

状态码范围 含义 常见状态码
2xx 成功 200 OK、201 Created、204 No Content
3xx 重定向 301 永久重定向、302 临时重定向、304 未修改
4xx 客户端错误 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found
5xx 服务器错误 500 Internal Server Error、502 Bad Gateway、503 Service Unavailable

HTTP状态码的餐厅场景映射

用餐厅点餐来理解常见状态码:

状态码 餐厅场景 实际含义
200 "菜来了,请慢用" 请求成功,服务器正常返回数据
301 "这道菜换到3号桌了" 资源永久移动到新的URL
302 "这道菜暂时在3号桌" 资源临时移动到新的URL
304 "菜没变化,吃你碗里的" 资源未修改,用本地缓存
400 "你点的这是什么?我没听懂" 请求语法错误,服务器无法理解
401 "请出示会员卡" 未授权,需要身份验证
403 "你有会员卡,但这道菜你不能点" 禁止访问,权限不足
404 "抱歉,菜单上没有这道菜" 请求的资源不存在
500 "厨房着火了!" 服务器内部错误
502 "厨房服务员和厨师吵架了" 网关错误,上游服务器无响应
503 "餐厅爆满,暂时不接客" 服务不可用,服务器过载

踩坑提醒:401和403的区别经常被问。401是"你没登录",403是"你登录了但没权限"。另外304不是错误,它表示资源未修改,客户端可以用缓存。

2.3 HTTP版本演进

特性 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3
连接方式 短连接 长连接(keep-alive) 多路复用 多路复用
传输协议 TCP TCP TCP QUIC(基于UDP)
多路复用 不支持 不支持(管线化有限) 支持 支持
头部压缩 HPACK算法 QPACK算法
服务器推送 不支持 不支持 支持 支持
队头阻塞 存在 存在 TCP层面仍有 彻底解决

HTTP/3用QUIC替代TCP,解决了TCP层面的队头阻塞问题。这个点面试经常问,一定要记住。

2.4 HTTP报文格式

HTTP请求报文示例:

http 复制代码
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: session_id=abc123

HTTP响应报文示例:

http 复制代码
HTTP/1.1 200 OK
Server: nginx/1.24.0
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Set-Cookie: session_id=abc123; Path=/; HttpOnly
Cache-Control: max-age=3600

<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body>Hello World</body>
</html>

报文结构其实很简单:请求行/状态行 + 头部字段 + 空行 + 请求体/响应体。空行是必须的,它标志着头部结束。

2.5 Cookie与Session机制

对比维度 Cookie Session
存储位置 客户端浏览器 服务器端内存/数据库
存储容量 最大4KB 理论上无限制
安全性 相对较低(可被篡改) 相对较高
生命周期 可设置过期时间 默认浏览器关闭即失效
跨域支持 受同源策略限制 通过URL重写可跨域
Cookie和Session的会员卡类比

理解Cookie和Session,可以想象成餐厅会员卡系统

概念 类比 说明
Cookie 你手里的会员卡 存储在你的钱包(浏览器)里,上面有你的会员号
Session 餐厅后台的会员档案 存储在餐厅(服务器)的档案柜里,记录你的消费记录、积分
Session ID 会员卡上的卡号 唯一标识,餐厅靠这个号找到你的档案

去餐厅吃饭的过程

  1. 你第一次来餐厅,没有会员卡(首次访问网站)
  2. 服务员给你办了一张会员卡,写上卡号"A12345"(服务器创建Session,生成Session ID)
  3. 你把会员卡放钱包里(浏览器把Session ID存到Cookie里)
  4. 下次你来,出示会员卡"A12345"(浏览器自动携带Cookie)
  5. 服务员根据卡号找到你的档案(服务器根据Session ID找到Session)

如果丢了会员卡怎么办?

  • 如果Cookie被清除了,你就没有会员卡了,餐厅会给你办一张新的(重新创建Session)
  • 如果餐厅档案柜满了,你的档案可能被清理(Session过期失效)

工作流程:

  1. 客户端首次请求服务器
  2. 服务器创建Session,生成Session ID
  3. 服务器通过Set-Cookie响应头将Session ID返回
  4. 客户端后续请求自动携带Cookie中的Session ID
  5. 服务器通过Session ID找到对应Session

踩坑提醒:Session的本质还是依赖Cookie来传递Session ID。如果用户禁用了Cookie,就需要用URL重写(把Session ID附在URL后面)来传递。这个细节面试官偶尔会追问。

2.6 HTTPS与SSL/TLS握手

HTTPS = HTTP + SSL/TLS加密。它在HTTP的基础上加了一层安全传输。

TLS握手过程(简化版):

复制代码
客户端                                          服务器
  |                                               |
  |  1. ClientHello(支持的加密套件列表、随机数)    |
  | --------------------------------------------> |
  |                                               |
  |  2. ServerHello(选定加密套件、随机数)+ 证书    |
  | <-------------------------------------------- |
  |                                               |
  |  3. 验证证书,生成预主密钥(Pre-Master Secret)   |
  |  4. 用服务器公钥加密预主密钥并发送               |
  | --------------------------------------------> |
  |                                               |
  |  5. 服务器用私钥解密,得到预主密钥               |
  |  6. 双方用预主密钥+随机数生成会话密钥            |
  |  7. 通知客户端准备加密通信                       |
  | <-------------------------------------------- |
  |                                               |
  |  8. 加密通信开始                                |
  | <===========================================> |

踩坑提醒:HTTPS不是绝对安全的。证书被伪造、算法被破解、或者用户主动忽略证书警告,都会导致HTTPS失效。HTTPS解决的是传输安全,不是应用安全。


三、DNS域名系统

DNS(Domain Name System,域名系统)是互联网的"电话簿"。你输入www.baidu.com,DNS帮你把它翻译成110.242.68.66这样的IP地址。

DNS解析的查电话簿类比

把DNS解析过程想象成查一个电话号的过程

DNS组件 电话簿类比 说明
浏览器缓存 你的手机通讯录 你最近打过的人,直接就能找到
hosts文件 你手写的电话本 你自己记在小本子上的号码,优先级最高
本地DNS服务器 114查号台 你打电话去问,它帮你查
根DNS服务器 总机 "你要查哪个地区的?我转接过去"
顶级DNS服务器 地区分机 "你要查哪家公司?我转接过去"
权威DNS服务器 具体公司前台 "张三的电话是123456789"

完整的查号过程

  1. 你先翻手机通讯录(浏览器缓存)------没有
  2. 再翻手写的电话本(hosts文件)------没有
  3. 打114查号台(本地DNS服务器)------查号台也不知道,但知道去问总机
  4. 总机(根DNS)说:"这是.com的,我转接.com地区分机"
  5. .com地区分机(顶级DNS)说:"这是baidu.com的,我转接baidu公司前台"
  6. baidu公司前台(权威DNS)说:"www.baidu.com的电话是110.242.68.66"
  7. 114查号台记住这个号码,然后告诉你

踩坑提醒 :DNS解析涉及多级缓存,修改DNS记录后可能不会立即生效。因为每一级都可能缓存了旧记录,需要等TTL(缓存时间)过期。排查问题时记得先清浏览器缓存、刷新DNS缓存(Windows用ipconfig /flushdns)。

3.1 域名层次结构

DNS采用树形层次结构,从上到下分为:

复制代码
根域(.)
├── 顶级域(TLD)
│   ├── 国家/地区域:.cn、.us、.jp、.uk
│   ├── 通用域:.com、.org、.net、.edu、.gov
│   └── 新通用域:.app、.dev、.cloud
│   └── 二级域
│       ├── baidu.com
│       ├── google.com
│       └── tsinghua.edu.cn
│           └── 三级域/子域
│               ├── www.tsinghua.edu.cn
│               └── mail.tsinghua.edu.cn

3.2 递归查询 vs 迭代查询

对比维度 递归查询 迭代查询
查询方式 客户端问一次,服务器负责查到底 客户端反复问,服务器每次给一个线索
负担分配 被查询的服务器负担重 客户端(或本地DNS)负担重
实际场景 主机→本地DNS服务器 本地DNS→根/顶级/权威DNS

DNS查询流程图解:

复制代码
你的电脑                本地DNS服务器            根DNS           .com DNS         权威DNS
   |                       |                    |                |                |
   | 1. 递归查询            |                    |                |                |
   | www.baidu.com?         |                    |                |                |
   | --------------------> |                    |                |                |
   |                       | 2. 迭代查询         |                |                |
   |                       | www.baidu.com?      |                |                |
   |                       | ------------------> |                |                |
   |                       |                    |                |                |
   |                       | 3. 我不知道,去问  |                |                |
   |                       | .com DNS            |                |                |
   |                       | <------------------ |                |                |
   |                       |                    |                |                |
   |                       | 4. 迭代查询         |                |                |
   |                       | www.baidu.com?      |                |                |
   |                       | ------------------- | --------------> |                |
   |                       |                    |                |                |
   |                       | 5. 去问baidu的权威DNS                |                |
   |                       | <------------------ | <-------------- |                |
   |                       |                    |                |                |
   |                       | 6. 迭代查询         |                |                |
   |                       | www.baidu.com?      |                |                |
   |                       | ------------------- | --------------- | --------------> |
   |                       |                    |                |                |
   |                       | 7. 110.242.68.66   |                |                |
   |                       | <------------------ | <-------------- | <--------------- |
   | 8. 110.242.68.66      |                    |                |                |
   | <-------------------- |                    |                |                |

3.3 DNS记录类型

记录类型 全称 作用 示例
A Address 域名→IPv4地址 example.com → 93.184.216.34
AAAA IPv6 Address 域名→IPv6地址 example.com → 2606:2800:220:1::
CNAME Canonical Name 域名别名 www.example.com → example.com
MX Mail Exchange 邮件服务器 example.com → mail.example.com
NS Name Server 域名DNS服务器 example.com → ns1.example.com

3.4 DNS解析完整过程

从浏览器输入URL到页面显示,完整过程如下:

  1. 浏览器检查缓存:先看浏览器自身的DNS缓存有没有记录
  2. 操作系统检查缓存:查看hosts文件和操作系统DNS缓存
  3. 本地DNS服务器查询:向配置的DNS服务器发起递归查询
  4. 递归/迭代查询:本地DNS依次查询根DNS→顶级DNS→权威DNS
  5. 获取IP地址:最终得到目标服务器的IP地址
  6. 发起TCP连接:三次握手建立连接
  7. 发送HTTP请求:构建请求报文并发送
  8. 服务器处理请求:返回HTML/CSS/JS等资源
  9. 浏览器渲染页面:解析HTML→构建DOM树→渲染→显示

踩坑提醒:DNS解析涉及多级缓存(浏览器缓存→OS缓存→路由器缓存→ISP缓存→权威DNS),缓存时间由TTL(Time To Live)值控制。修改DNS记录后可能需要等待TTL过期才能生效,这个坑我踩过,排查了半天才想起来清缓存。


四、DHCP协议

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)让你不用手动配置IP地址就能上网。连上WiFi就能用,背后就是DHCP在干活。

DHCP的自动分配宿舍类比

把DHCP想象成学校宿舍管理系统

DHCP步骤 宿舍管理类比 说明
DHCP Discover 新生入住,问"哪里有空宿舍?" 新来的学生(设备)还没地方住,广播问谁有宿舍
DHCP Offer 宿管说"3号楼201还空着" 宿舍管理系统(DHCP服务器)回复一个可用的宿舍号
DHCP Request 新生说"我要住3号楼201" 学生确认要这个宿舍
DHCP ACK 宿管给钥匙,说"可以入住了,住一年" 确认分配,发放钥匙(IP地址),告知租期

完整的新生入住过程

  1. 你拖着行李到学校,不知道住哪(设备连上网络,没有IP)
  2. 你在大喊:"我是新生,哪里有空宿舍?"(DHCP Discover广播)
  3. 宿管阿姨听到后说:"3号楼201空着,给你留着"(DHCP Offer)
  4. 你说:"好的,我要住3号楼201"(DHCP Request)
  5. 宿管阿姨给你钥匙,说:"住一年,到期前记得续住"(DHCP ACK,分配IP+租期)

踩坑提醒:DHCP的前两步用的是广播,不是单播。因为客户端此时还没有IP地址,根本不知道该发给谁。这个细节面试经常考。

4.1 DHCP四步交互流程

DHCP采用经典的DORA四步流程:

复制代码
客户端(没有IP)                    DHCP服务器
    |                                  |
    | 1. DHCP Discover(广播)          |
    | "谁有IP地址可以给我?"             |
    | --------------------------------> |
    |                                  |
    | 2. DHCP Offer(广播/单播)        |
    | "我可以给你 192.168.1.100"        |
    | <-------------------------------- |
    |                                  |
    | 3. DHCP Request(广播)           |
    | "我要 192.168.1.100"             |
    | --------------------------------> |
    |                                  |
    | 4. DHCP ACK(广播/单播)          |
    | "确认,给你用,租期24小时"         |
    | <-------------------------------- |
    |                                  |

踩坑提醒:DHCP的前两步用的是广播,不是单播。因为客户端此时还没有IP地址,根本不知道该发给谁。这个细节面试经常考。

4.2 DHCP中继代理

当DHCP客户端和服务器不在同一个网段时,需要DHCP中继代理来转发DHCP消息。

路由器通常充当DHCP中继代理的角色,它收到客户端的广播DHCP请求后,以单播方式转发给另一个网段的DHCP服务器。

4.3 租约机制

DHCP分配的IP地址是有租期的,不是永久给你的。

  • 租期默认:通常为24小时(可配置)
  • 续租时机:租期过半(50%)时开始尝试续租
  • 续租流程:客户端发送DHCP Request请求续租
  • 续租失败:租期到87.5%时再次尝试,到期后释放IP

五、FTP协议

FTP(File Transfer Protocol,文件传输协议)是互联网上最早的文件传输协议之一,至今仍在广泛使用。

5.1 双TCP连接

FTP最大的特点是使用两个TCP连接

连接类型 端口号 作用 生命周期
控制连接 21 传输FTP命令和响应 整个FTP会话期间保持
数据连接 20(主动模式) 传输文件内容 每次文件传输时建立,传完关闭

5.2 主动模式 vs 被动模式

对比维度 主动模式(PORT) 被动模式(PASV)
连接发起方 服务器主动连接客户端 客户端主动连接服务器
数据端口 服务器用20端口连接客户端随机端口 服务器开放随机端口,等待客户端连接
防火墙友好性 差(服务器连客户端容易被挡) 好(客户端连服务器,通常允许)
使用场景 内网环境 互联网环境(推荐)
FTP主动/被动模式的送货类比

把FTP的数据传输想象成快递送货

主动模式 = 快递员主动上门送货

  • 你在网上买了东西(客户端请求文件)
  • 快递员(服务器)主动敲门送到你家(服务器主动连接客户端的数据端口)
  • 问题:你家小区有保安(防火墙),不认识这个快递员,不让他进!
  • 结果:文件传不过来,连接失败

被动模式 = 你去快递点自提

  • 你在网上买了东西(客户端请求文件)
  • 快递员说:"你来XX快递点取吧"(服务器告诉客户端一个端口)
  • 你主动出门去快递点取(客户端主动连接服务器的随机端口)
  • 保安不会拦你,因为是你主动出去的
  • 结果:文件顺利拿到

踩坑提醒:现在互联网环境下基本都用被动模式。如果你用主动模式连FTP发现连不上,大概率是防火墙把服务器主动发起的连接给挡了。这个坑我踩过,折腾了好一阵。


六、邮件协议对比

协议 全称 端口号 作用 特点
SMTP Simple Mail Transfer Protocol 25/465/587 发送邮件 推协议,只能推不能拉
POP3 Post Office Protocol v3 110/995 接收邮件 下载到本地,可删除服务器副本
IMAP Internet Message Access Protocol 143/993 接收邮件 服务器上管理,多设备同步

简单理解:

  • SMTP是"寄信"的邮筒
  • POP3是"取信后销毁"的取信方式
  • IMAP是"在邮局看信"的取信方式
邮件协议的邮局类比

把邮件系统想象成现实中的邮局

协议 邮局类比 生活场景
SMTP 街边的邮筒 你把信投进邮筒,邮局负责帮你寄出去。SMTP只管"寄",不管"收"
POP3 取信后撕掉原件 你去邮局取信,看完把原件撕了扔垃圾桶。下次来,这封信就没了。信只在你手里有
IMAP 在邮局阅览室看信 你去邮局看信,但信还留在邮局。你用手机看、用电脑看,看到的都是同一批信

场景对比

  • POP3:你在公司电脑上用Outlook收邮件,邮件下载到本地。回家用笔记本登录,发现邮箱是空的------因为邮件已经被公司电脑"取走"了。
  • IMAP:你在公司电脑、家里笔记本、手机上登录邮箱,看到的邮件完全一样。你在手机上删了一封邮件,公司电脑上也会消失。

踩坑提醒:SMTP只能用于发送邮件,不能接收。很多人以为SMTP既能发又能收,这是错的。接收邮件用的是POP3或IMAP。


七、SSH与MQTT协议

7.1 SSH协议

SSH(Secure Shell)是加密的远程登录协议,替代了早期不安全的Telnet。

  • 端口:22
  • 加密方式:对称加密传输数据,非对称加密交换密钥
  • 认证方式:密码认证、公钥认证
  • 常用功能:远程登录、文件传输(SCP/SFTP)、端口转发
bash 复制代码
# SSH远程登录
ssh user@192.168.1.100

# SCP文件传输
scp file.txt user@192.168.1.100:/home/user/

# SFTP交互式传输
sftp user@192.168.1.100

7.2 MQTT协议

MQTT(Message Queuing Telemetry Transport)是物联网领域最流行的通信协议。

特性 说明
传输协议 基于TCP
设计目标 轻量级、低带宽、高延迟环境
消息模式 发布/订阅(Pub/Sub)
QoS级别 0(最多一次)、1(至少一次)、2(恰好一次)
典型场景 智能家居、车联网、工业物联网

MQTT的核心思想是发布/订阅模式:设备发布消息到某个主题(Topic),订阅了该主题的其他设备就能收到消息。这种解耦设计特别适合设备数量多、网络不稳定的环境。


八、新手常见误区

以下是新手最容易搞混的几个概念,建议反复看:

误区1:HTTP和HTTPS是两种不同的"网"

错误理解:"我访问HTTP网站和HTTPS网站,是上了两个不同的互联网。"

正确理解:HTTP和HTTPS用的是同一个互联网,只是HTTPS在HTTP外面加了一层"加密外套"。就像寄明信片(HTTP,所有人都能看到内容)和寄信封(HTTPS,内容被密封),走的是同一条邮路。

误区2:GET请求不能传参数

错误理解:"GET只能获取数据,不能带参数,带参数必须用POST。"

正确理解 :GET完全可以传参数,只是参数放在URL里。www.example.com/search?q=hello 这个q=hello就是参数。POST的参数放在请求体里,不在URL上显示。

误区3:Cookie和Session是同一个东西

错误理解:"Cookie就是Session,Session就是Cookie。"

正确理解:Cookie存在你的浏览器里,Session存在服务器上。Session ID通过Cookie传递,但两者不是一回事。就像"会员卡"(Cookie)和"会员档案"(Session),卡上有卡号,档案在餐厅里。

误区4:DNS就是"域名"

错误理解:"我买了域名,就等于有了DNS。"

正确理解:域名是你注册的"名字",DNS是负责把名字翻译成IP地址的"系统"。你买了域名后,还需要配置DNS记录(A记录、CNAME等),告诉别人这个域名对应哪个IP地址。


九、问题与解答

Q1:HTTP和HTTPS有什么区别?

A:HTTPS在HTTP的基础上加了SSL/TLS加密层。HTTP是明文传输,数据容易被窃听和篡改;HTTPS对传输内容进行加密,安全性更高。HTTPS默认端口443,HTTP默认端口80。HTTPS需要CA证书,部署成本更高。

Q2:DNS为什么用UDP而不是TCP?

A:DNS查询通常数据量很小(请求和响应都不到512字节),UDP速度快、开销小,非常适合这种轻量级查询。但当DNS响应超过512字节时(比如DNSSEC),会自动切换到TCP。另外,DNS区域传输(主从DNS同步)也用TCP。

Q3:为什么DHCP Discover要用广播而不是单播?

A:因为客户端此时还没有IP地址,不知道DHCP服务器的地址,也没有配置网关信息,无法发送单播。所以只能用广播(目标地址255.255.255.255)来寻找网络中的DHCP服务器。


十、面试高频考点汇总

面试题1:浏览器输入URL到页面显示的完整过程

参考答案:

  1. DNS解析:浏览器缓存→OS缓存→本地DNS→根DNS→顶级DNS→权威DNS,获取目标IP
  2. TCP连接:与服务器进行三次握手建立TCP连接
  3. TLS握手(如果是HTTPS):协商加密参数,建立安全通道
  4. 发送HTTP请求:构建请求报文(方法、URL、头部、Cookie等)
  5. 服务器处理:接收请求,调用后端服务,生成响应
  6. 返回响应:状态码+响应头+HTML内容
  7. 浏览器解析:解析HTML构建DOM树,解析CSS构建CSSOM树
  8. 渲染页面:合并DOM和CSSOM生成渲染树,布局→绘制→合成
  9. 执行JS :遇到<script>标签时执行JavaScript
  10. 建立WebSocket等长连接(如有)

面试题2:HTTP/1.1、HTTP/2、HTTP/3的核心区别

参考答案:

HTTP/1.1引入了长连接和管线化,但管线化存在队头阻塞问题。HTTP/2通过多路复用解决了HTTP层面的队头阻塞,所有请求共用一个TCP连接,但TCP层面的队头阻塞仍然存在(一个丢包,所有流都等)。HTTP/3用QUIC(基于UDP)替代了TCP,彻底解决了队头阻塞问题,同时0-RTT连接建立也比HTTP/2的握手更快。

面试题3:Cookie和Session的区别

参考答案:

Cookie存储在客户端,Session存储在服务端。Cookie有大小限制(4KB),Session理论上无限制。Cookie安全性较低(可被XSS攻击窃取),Session更安全。Session依赖Cookie传递Session ID,如果Cookie被禁用,需要用URL重写。分布式环境下Session需要做共享(如Redis Session),Cookie天然支持分布式。

面试题4:DNS递归查询和迭代查询的区别

参考答案:

递归查询是"你帮我查,查到告诉我结果",客户端只问一次,DNS服务器负责一路查到底返回最终结果。迭代查询是"你告诉我下一步该问谁",客户端(或本地DNS服务器)需要多次查询,每次得到一个指引。实际中,主机到本地DNS是递归查询,本地DNS到其他DNS服务器是迭代查询。

面试题5:HTTPS的TLS握手过程

参考答案:

  1. 客户端发送ClientHello(支持的加密套件、随机数、TLS版本)
  2. 服务器发送ServerHello(选定加密套件、随机数)和数字证书
  3. 客户端验证证书合法性(CA签名、域名匹配、有效期)
  4. 客户端生成预主密钥,用服务器公钥加密后发送
  5. 服务器用私钥解密得到预主密钥
  6. 双方基于预主密钥和两个随机数生成会话密钥(对称密钥)
  7. 后续通信使用会话密钥进行对称加密

十一、模拟测试题

1. HTTP状态码304表示什么含义?

A. 请求成功

B. 页面永久跳转

C. 资源未修改,使用缓存

D. 服务器内部错误

2. DNS查询中,主机向本地DNS服务器发出的查询属于什么类型?

A. 迭代查询

B. 递归查询

C. 反向查询

D. 缓存查询

3. DHCP的四步交互流程依次是?

A. Discover→Request→Offer→Ack

B. Discover→Offer→Request→Ack

C. Offer→Discover→Request→Ack

D. Request→Discover→Offer→Ack

4. FTP协议使用几个TCP连接?数据连接默认端口是?

A. 1个,端口21

B. 2个,端口20

C. 2个,端口21

D. 1个,端口20

5. 以下哪个协议用于接收电子邮件?

A. SMTP

B. FTP

C. IMAP

D. DHCP

参考答案

  1. C。304 Not Found表示资源未修改,客户端可使用本地缓存。
  2. B。主机到本地DNS服务器是递归查询,本地DNS到其他DNS是迭代查询。
  3. B。DHCP采用DORA流程:Discover→Offer→Request→Ack。
  4. B。FTP使用控制连接(端口21)和数据连接(端口20)两个TCP连接。
  5. C。IMAP用于接收和管理邮件,SMTP用于发送邮件。

十二、互动话题

你在实际开发中遇到过哪些HTTP相关的问题?比如跨域、缓存策略、HTTPS证书配置等。欢迎在评论区分享你的踩坑经历,大家一起交流学习。


参考资料

  1. MDN - HTTP | MDN
  2. RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
  3. Cloudflare - What is DNS?
  4. RFC 2131 - Dynamic Host Configuration Protocol
  5. MQTT.org - MQTT Protocol Specification
相关推荐
数据知道2 小时前
指纹浏览器代理中台设计:为每个指纹环境绑定独立出口IP的架构实现
网络协议·tcp/ip·架构
糖果店的幽灵2 小时前
软件测试接口测试从入门到精通:HTTP协议详解
软件测试·网络协议·接口测试·http协议·测试基础
数据知道3 小时前
指纹浏览器:DNS 泄漏防范与 WebRTC 本地 IP 屏蔽的底层实现
爬虫·网络协议·tcp/ip·安全·webrtc·数据采集·指纹浏览器
JustHappy10 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
袁小皮皮不皮12 小时前
3.HCIP OSPF补充知识(优化版)
服务器·网络·数据库·网络协议·智能路由器
努力小周13 小时前
STM32智能安防系统
c语言·stm32·单片机·嵌入式硬件·物联网·计算机网络·pcb工艺
袁小皮皮不皮13 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
梁辰兴14 小时前
计算机网络基础:数据加密模型
网络·计算机网络·计算机·数据加密·计算机网络基础·梁辰兴·数据加密模型
用户03129591334216 小时前
第 10 篇:路由表:数据包的导航仪
网络协议