写在前面应用层是离我们最近的网络层也是面试里问得最多的层。说实话我见过太多人学了四年计算机连HTTP和HTTPS的区别都说不清楚更别提DNS解析过程了。今天这篇文章我把应用层所有核心协议一次性讲透。不管你是准备面试还是想真正理解上网这件事这篇都值得你认真看完。建议收藏因为你会发现它早晚用得上。文章目录一、应用层概述C/S架构 vs P2P架构二、HTTP协议详解2.0 HTTP是什么——餐厅点餐类比2.1 HTTP请求方法GET vs POST 详细对比——查快递 vs 寄快递2.2 HTTP状态码速查HTTP状态码的餐厅场景映射2.3 HTTP版本演进2.4 HTTP报文格式2.5 Cookie与Session机制Cookie和Session的会员卡类比2.6 HTTPS与SSL/TLS握手三、DNS域名系统DNS解析的查电话簿类比3.1 域名层次结构3.2 递归查询 vs 迭代查询3.3 DNS记录类型3.4 DNS解析完整过程四、DHCP协议DHCP的自动分配宿舍类比4.1 DHCP四步交互流程4.2 DHCP中继代理4.3 租约机制五、FTP协议5.1 双TCP连接5.2 主动模式 vs 被动模式FTP主动/被动模式的送货类比六、邮件协议对比邮件协议的邮局类比七、SSH与MQTT协议7.1 SSH协议7.2 MQTT协议八、新手常见误区误区1HTTP和HTTPS是两种不同的网误区2GET请求不能传参数误区3Cookie和Session是同一个东西误区4DNS就是域名九、问题与解答十、面试高频考点汇总面试题1浏览器输入URL到页面显示的完整过程面试题2HTTP/1.1、HTTP/2、HTTP/3的核心区别面试题3Cookie和Session的区别面试题4DNS递归查询和迭代查询的区别面试题5HTTPS的TLS握手过程十一、模拟测试题1. HTTP状态码304表示什么含义2. DNS查询中主机向本地DNS服务器发出的查询属于什么类型3. DHCP的四步交互流程依次是4. FTP协议使用几个TCP连接数据连接默认端口是5. 以下哪个协议用于接收电子邮件参考答案十二、互动话题参考资料一、应用层概述应用层是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协议详解HTTPHyperText 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 Content3xx重定向301 永久重定向、302 临时重定向、304 未修改4xx客户端错误400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found5xx服务器错误500 Internal Server Error、502 Bad Gateway、503 Service UnavailableHTTP状态码的餐厅场景映射用餐厅点餐来理解常见状态码状态码餐厅场景实际含义200“菜来了请慢用”请求成功服务器正常返回数据301“这道菜换到3号桌了”资源永久移动到新的URL302“这道菜暂时在3号桌”资源临时移动到新的URL304“菜没变化吃你碗里的”资源未修改用本地缓存400“你点的这是什么我没听懂”请求语法错误服务器无法理解401“请出示会员卡”未授权需要身份验证403“你有会员卡但这道菜你不能点”禁止访问权限不足404“抱歉菜单上没有这道菜”请求的资源不存在500“厨房着火了”服务器内部错误502“厨房服务员和厨师吵架了”网关错误上游服务器无响应503“餐厅爆满暂时不接客”服务不可用服务器过载踩坑提醒401和403的区别经常被问。401是你没登录403是你登录了但没权限。另外304不是错误它表示资源未修改客户端可以用缓存。2.3 HTTP版本演进特性HTTP/1.0HTTP/1.1HTTP/2HTTP/3连接方式短连接长连接keep-alive多路复用多路复用传输协议TCPTCPTCPQUIC基于UDP多路复用不支持不支持管线化有限支持支持头部压缩无无HPACK算法QPACK算法服务器推送不支持不支持支持支持队头阻塞存在存在TCP层面仍有彻底解决HTTP/3用QUIC替代TCP解决了TCP层面的队头阻塞问题。这个点面试经常问一定要记住。2.4 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/xhtmlxml Accept-Language: zh-CN,zh;q0.9 Connection: keep-alive Cookie: session_idabc123HTTP响应报文示例HTTP/1.1 200 OK Server: nginx/1.24.0 Content-Type: text/html; charsetUTF-8 Content-Length: 1234 Set-Cookie: session_idabc123; Path/; HttpOnly Cache-Control: max-age3600 !DOCTYPE html html headtitleExample/title/head bodyHello World/body /html报文结构其实很简单请求行/状态行 头部字段 空行 请求体/响应体。空行是必须的它标志着头部结束。2.5 Cookie与Session机制对比维度CookieSession存储位置客户端浏览器服务器端内存/数据库存储容量最大4KB理论上无限制安全性相对较低可被篡改相对较高生命周期可设置过期时间默认浏览器关闭即失效跨域支持受同源策略限制通过URL重写可跨域Cookie和Session的会员卡类比理解Cookie和Session可以想象成餐厅会员卡系统概念类比说明Cookie你手里的会员卡存储在你的钱包浏览器里上面有你的会员号Session餐厅后台的会员档案存储在餐厅服务器的档案柜里记录你的消费记录、积分Session ID会员卡上的卡号唯一标识餐厅靠这个号找到你的档案去餐厅吃饭的过程你第一次来餐厅没有会员卡首次访问网站服务员给你办了一张会员卡写上卡号A12345服务器创建Session生成Session ID你把会员卡放钱包里浏览器把Session ID存到Cookie里下次你来出示会员卡A12345浏览器自动携带Cookie服务员根据卡号找到你的档案服务器根据Session ID找到Session如果丢了会员卡怎么办如果Cookie被清除了你就没有会员卡了餐厅会给你办一张新的重新创建Session如果餐厅档案柜满了你的档案可能被清理Session过期失效工作流程客户端首次请求服务器服务器创建Session生成Session ID服务器通过Set-Cookie响应头将Session ID返回客户端后续请求自动携带Cookie中的Session ID服务器通过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域名系统DNSDomain Name System域名系统是互联网的电话簿。你输入www.baidu.comDNS帮你把它翻译成110.242.68.66这样的IP地址。DNS解析的查电话簿类比把DNS解析过程想象成查一个电话号的过程DNS组件电话簿类比说明浏览器缓存你的手机通讯录你最近打过的人直接就能找到hosts文件你手写的电话本你自己记在小本子上的号码优先级最高本地DNS服务器114查号台你打电话去问它帮你查根DNS服务器总机“你要查哪个地区的我转接过去”顶级DNS服务器地区分机“你要查哪家公司我转接过去”权威DNS服务器具体公司前台“张三的电话是123456789”完整的查号过程你先翻手机通讯录浏览器缓存——没有再翻手写的电话本hosts文件——没有打114查号台本地DNS服务器——查号台也不知道但知道去问总机总机根DNS说“这是.com的我转接.com地区分机”.com地区分机顶级DNS说“这是baidu.com的我转接baidu公司前台”baidu公司前台权威DNS说“www.baidu.com的电话是110.242.68.66”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.cn3.2 递归查询 vs 迭代查询对比维度递归查询迭代查询查询方式客户端问一次服务器负责查到底客户端反复问服务器每次给一个线索负担分配被查询的服务器负担重客户端或本地DNS负担重实际场景主机→本地DNS服务器本地DNS→根/顶级/权威DNSDNS查询流程图解你的电脑 本地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记录类型记录类型全称作用示例AAddress域名→IPv4地址example.com → 93.184.216.34AAAAIPv6 Address域名→IPv6地址example.com → 2606:2800:220:1::CNAMECanonical Name域名别名www.example.com → example.comMXMail Exchange邮件服务器example.com → mail.example.comNSName Server域名DNS服务器example.com → ns1.example.com3.4 DNS解析完整过程从浏览器输入URL到页面显示完整过程如下浏览器检查缓存先看浏览器自身的DNS缓存有没有记录操作系统检查缓存查看hosts文件和操作系统DNS缓存本地DNS服务器查询向配置的DNS服务器发起递归查询递归/迭代查询本地DNS依次查询根DNS→顶级DNS→权威DNS获取IP地址最终得到目标服务器的IP地址发起TCP连接三次握手建立连接发送HTTP请求构建请求报文并发送服务器处理请求返回HTML/CSS/JS等资源浏览器渲染页面解析HTML→构建DOM树→渲染→显示踩坑提醒DNS解析涉及多级缓存浏览器缓存→OS缓存→路由器缓存→ISP缓存→权威DNS缓存时间由TTLTime To Live值控制。修改DNS记录后可能需要等待TTL过期才能生效这个坑我踩过排查了半天才想起来清缓存。四、DHCP协议DHCPDynamic Host Configuration Protocol动态主机配置协议让你不用手动配置IP地址就能上网。连上WiFi就能用背后就是DHCP在干活。DHCP的自动分配宿舍类比把DHCP想象成学校宿舍管理系统DHCP步骤宿舍管理类比说明DHCP Discover新生入住问哪里有空宿舍新来的学生设备还没地方住广播问谁有宿舍DHCP Offer宿管说3号楼201还空着宿舍管理系统DHCP服务器回复一个可用的宿舍号DHCP Request新生说我要住3号楼201学生确认要这个宿舍DHCP ACK宿管给钥匙说可以入住了住一年确认分配发放钥匙IP地址告知租期完整的新生入住过程你拖着行李到学校不知道住哪设备连上网络没有IP你在大喊“我是新生哪里有空宿舍”DHCP Discover广播宿管阿姨听到后说“3号楼201空着给你留着”DHCP Offer你说“好的我要住3号楼201”DHCP Request宿管阿姨给你钥匙说“住一年到期前记得续住”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协议FTPFile Transfer Protocol文件传输协议是互联网上最早的文件传输协议之一至今仍在广泛使用。5.1 双TCP连接FTP最大的特点是使用两个TCP连接连接类型端口号作用生命周期控制连接21传输FTP命令和响应整个FTP会话期间保持数据连接20主动模式传输文件内容每次文件传输时建立传完关闭5.2 主动模式 vs 被动模式对比维度主动模式PORT被动模式PASV连接发起方服务器主动连接客户端客户端主动连接服务器数据端口服务器用20端口连接客户端随机端口服务器开放随机端口等待客户端连接防火墙友好性差服务器连客户端容易被挡好客户端连服务器通常允许使用场景内网环境互联网环境推荐FTP主动/被动模式的送货类比把FTP的数据传输想象成快递送货主动模式 快递员主动上门送货你在网上买了东西客户端请求文件快递员服务器主动敲门送到你家服务器主动连接客户端的数据端口问题你家小区有保安防火墙不认识这个快递员不让他进结果文件传不过来连接失败被动模式 你去快递点自提你在网上买了东西客户端请求文件快递员说“你来XX快递点取吧”服务器告诉客户端一个端口你主动出门去快递点取客户端主动连接服务器的随机端口保安不会拦你因为是你主动出去的结果文件顺利拿到踩坑提醒现在互联网环境下基本都用被动模式。如果你用主动模式连FTP发现连不上大概率是防火墙把服务器主动发起的连接给挡了。这个坑我踩过折腾了好一阵。六、邮件协议对比协议全称端口号作用特点SMTPSimple Mail Transfer Protocol25/465/587发送邮件推协议只能推不能拉POP3Post Office Protocol v3110/995接收邮件下载到本地可删除服务器副本IMAPInternet Message Access Protocol143/993接收邮件服务器上管理多设备同步简单理解SMTP是寄信的邮筒POP3是取信后销毁的取信方式IMAP是在邮局看信的取信方式邮件协议的邮局类比把邮件系统想象成现实中的邮局协议邮局类比生活场景SMTP街边的邮筒你把信投进邮筒邮局负责帮你寄出去。SMTP只管寄不管收POP3取信后撕掉原件你去邮局取信看完把原件撕了扔垃圾桶。下次来这封信就没了。信只在你手里有IMAP在邮局阅览室看信你去邮局看信但信还留在邮局。你用手机看、用电脑看看到的都是同一批信场景对比POP3你在公司电脑上用Outlook收邮件邮件下载到本地。回家用笔记本登录发现邮箱是空的——因为邮件已经被公司电脑取走了。IMAP你在公司电脑、家里笔记本、手机上登录邮箱看到的邮件完全一样。你在手机上删了一封邮件公司电脑上也会消失。踩坑提醒SMTP只能用于发送邮件不能接收。很多人以为SMTP既能发又能收这是错的。接收邮件用的是POP3或IMAP。七、SSH与MQTT协议7.1 SSH协议SSHSecure Shell是加密的远程登录协议替代了早期不安全的Telnet。端口22加密方式对称加密传输数据非对称加密交换密钥认证方式密码认证、公钥认证常用功能远程登录、文件传输SCP/SFTP、端口转发# SSH远程登录sshuser192.168.1.100# SCP文件传输scpfile.txt user192.168.1.100:/home/user/# SFTP交互式传输sftpuser192.168.1.1007.2 MQTT协议MQTTMessage Queuing Telemetry Transport是物联网领域最流行的通信协议。特性说明传输协议基于TCP设计目标轻量级、低带宽、高延迟环境消息模式发布/订阅Pub/SubQoS级别0最多一次、1至少一次、2恰好一次典型场景智能家居、车联网、工业物联网MQTT的核心思想是发布/订阅模式设备发布消息到某个主题Topic订阅了该主题的其他设备就能收到消息。这种解耦设计特别适合设备数量多、网络不稳定的环境。八、新手常见误区以下是新手最容易搞混的几个概念建议反复看误区1HTTP和HTTPS是两种不同的网错误理解“我访问HTTP网站和HTTPS网站是上了两个不同的互联网。”正确理解HTTP和HTTPS用的是同一个互联网只是HTTPS在HTTP外面加了一层加密外套。就像寄明信片HTTP所有人都能看到内容和寄信封HTTPS内容被密封走的是同一条邮路。误区2GET请求不能传参数错误理解“GET只能获取数据不能带参数带参数必须用POST。”正确理解GET完全可以传参数只是参数放在URL里。www.example.com/search?qhello这个qhello就是参数。POST的参数放在请求体里不在URL上显示。误区3Cookie和Session是同一个东西错误理解“Cookie就是SessionSession就是Cookie。”正确理解Cookie存在你的浏览器里Session存在服务器上。Session ID通过Cookie传递但两者不是一回事。就像会员卡Cookie和会员档案Session卡上有卡号档案在餐厅里。误区4DNS就是域名错误理解“我买了域名就等于有了DNS。”正确理解域名是你注册的名字DNS是负责把名字翻译成IP地址的系统。你买了域名后还需要配置DNS记录A记录、CNAME等告诉别人这个域名对应哪个IP地址。九、问题与解答Q1HTTP和HTTPS有什么区别AHTTPS在HTTP的基础上加了SSL/TLS加密层。HTTP是明文传输数据容易被窃听和篡改HTTPS对传输内容进行加密安全性更高。HTTPS默认端口443HTTP默认端口80。HTTPS需要CA证书部署成本更高。Q2DNS为什么用UDP而不是TCPADNS查询通常数据量很小请求和响应都不到512字节UDP速度快、开销小非常适合这种轻量级查询。但当DNS响应超过512字节时比如DNSSEC会自动切换到TCP。另外DNS区域传输主从DNS同步也用TCP。Q3为什么DHCP Discover要用广播而不是单播A因为客户端此时还没有IP地址不知道DHCP服务器的地址也没有配置网关信息无法发送单播。所以只能用广播目标地址255.255.255.255来寻找网络中的DHCP服务器。十、面试高频考点汇总面试题1浏览器输入URL到页面显示的完整过程参考答案DNS解析浏览器缓存→OS缓存→本地DNS→根DNS→顶级DNS→权威DNS获取目标IPTCP连接与服务器进行三次握手建立TCP连接TLS握手如果是HTTPS协商加密参数建立安全通道发送HTTP请求构建请求报文方法、URL、头部、Cookie等服务器处理接收请求调用后端服务生成响应返回响应状态码响应头HTML内容浏览器解析解析HTML构建DOM树解析CSS构建CSSOM树渲染页面合并DOM和CSSOM生成渲染树布局→绘制→合成执行JS遇到script标签时执行JavaScript建立WebSocket等长连接如有面试题2HTTP/1.1、HTTP/2、HTTP/3的核心区别参考答案HTTP/1.1引入了长连接和管线化但管线化存在队头阻塞问题。HTTP/2通过多路复用解决了HTTP层面的队头阻塞所有请求共用一个TCP连接但TCP层面的队头阻塞仍然存在一个丢包所有流都等。HTTP/3用QUIC基于UDP替代了TCP彻底解决了队头阻塞问题同时0-RTT连接建立也比HTTP/2的握手更快。面试题3Cookie和Session的区别参考答案Cookie存储在客户端Session存储在服务端。Cookie有大小限制4KBSession理论上无限制。Cookie安全性较低可被XSS攻击窃取Session更安全。Session依赖Cookie传递Session ID如果Cookie被禁用需要用URL重写。分布式环境下Session需要做共享如Redis SessionCookie天然支持分布式。面试题4DNS递归查询和迭代查询的区别参考答案递归查询是你帮我查查到告诉我结果客户端只问一次DNS服务器负责一路查到底返回最终结果。迭代查询是你告诉我下一步该问谁客户端或本地DNS服务器需要多次查询每次得到一个指引。实际中主机到本地DNS是递归查询本地DNS到其他DNS服务器是迭代查询。面试题5HTTPS的TLS握手过程参考答案客户端发送ClientHello支持的加密套件、随机数、TLS版本服务器发送ServerHello选定加密套件、随机数和数字证书客户端验证证书合法性CA签名、域名匹配、有效期客户端生成预主密钥用服务器公钥加密后发送服务器用私钥解密得到预主密钥双方基于预主密钥和两个随机数生成会话密钥对称密钥后续通信使用会话密钥进行对称加密十一、模拟测试题1. HTTP状态码304表示什么含义A. 请求成功B. 页面永久跳转C. 资源未修改使用缓存D. 服务器内部错误2. DNS查询中主机向本地DNS服务器发出的查询属于什么类型A. 迭代查询B. 递归查询C. 反向查询D. 缓存查询3. DHCP的四步交互流程依次是A. Discover→Request→Offer→AckB. Discover→Offer→Request→AckC. Offer→Discover→Request→AckD. Request→Discover→Offer→Ack4. FTP协议使用几个TCP连接数据连接默认端口是A. 1个端口21B. 2个端口20C. 2个端口21D. 1个端口205. 以下哪个协议用于接收电子邮件A. SMTPB. FTPC. IMAPD. DHCP参考答案C。304 Not Found表示资源未修改客户端可使用本地缓存。B。主机到本地DNS服务器是递归查询本地DNS到其他DNS是迭代查询。B。DHCP采用DORA流程Discover→Offer→Request→Ack。B。FTP使用控制连接端口21和数据连接端口20两个TCP连接。C。IMAP用于接收和管理邮件SMTP用于发送邮件。十二、互动话题你在实际开发中遇到过哪些HTTP相关的问题比如跨域、缓存策略、HTTPS证书配置等。欢迎在评论区分享你的踩坑经历大家一起交流学习。参考资料MDN - HTTP | MDNRFC 2616 - Hypertext Transfer Protocol – HTTP/1.1Cloudflare - What is DNS?RFC 2131 - Dynamic Host Configuration ProtocolMQTT.org - MQTT Protocol Specification