Linux:应用层协议详解
发布时间:2026/10/24 2:15:08 锦皓数字建站

摘要梳理应用层核心协议HTTP、HTTPS、DNS包含协议分层、报文格式、版本演进、Cookie/Session、HTTPS加密原理适合后端开发面试复习。一、网络协议分层OSI七层模型 TCP/IP四层模型层级TCP/IP四层协议应用层应用层DNS、HTTP、HTTPS表示层——会话层——传输层传输层UDP、TCP网络层网络层IP、路由数据链路层链路层ETH、ARP物理层——硬件信号辅助技术网络代理技术、NAT/NAPT地址转换技术二、HTTP协议超文本传输协议2.1 HTTP基础概念属于应用层协议传输层底层基于TCP实现。请求‑响应模型客户端发送请求服务端返回响应。HTTP是无状态协议默认短连接。明文字符串协议所有报文都是可读文本。抓包工具Wireshark抓取网卡全部流量覆盖全协议Fiddler代理工具专门抓取HTTP/HTTPS应用层数据2.2 HTTP请求报文格式结构请求首行 请求头部 空行\r\n\r\n 请求正文可选1请求首行格式请求方法 URL HTTP/版本各字段空格分隔末尾\r\n结尾。常用请求方法方法作用GET获取服务器资源参数放在URL查询字符串长度受限约8KB无请求体HEAD和GET一致服务器只返回响应头不返回响应正文POST向服务器提交数据数据放在请求正文长度无限制PUT提交数据多用于修改服务器上已有资源DELETE请求服务器删除指定资源面试重点GET vs HEAD都获取资源HEAD没有响应body用于探测资源是否存在。GET vs POSTGET用于获取参数在URLPOST用于提交参数放请求体GET有长度限制POST无。GET也可以提交数据只是不安全、长度受限。2URL 统一资源定位符完整格式协议类型://用户名:密码域名/IP地址:端口号/资源路径?查询字符串#片段标识符示例[https://www.baidu.com/s?wdC](https://www.baidu.com/s?wdC)字段解释协议类型http://HTTP协议默认端口80https://加密HTTP默认端口443用户名:密码现已废弃现代服务器不再支持。域名/IP定位服务器主机域名会经过DNS解析转为IP地址。端口号定位服务器机器上运行的进程不写则使用协议默认端口。资源路径以/开头定位服务器上具体资源限制客户端访问根目录。查询字符串keyvalkey2val2GET请求携带参数。片段标识符#浏览器页面内部锚点不会发给服务器用于页面内部跳转。URL编码与解码问题URL中如果出现、空格、中文等特殊字符会和URL分隔符号冲突需要编码。编码特殊字节转为%加上两位十六进制。例→%2B不需要编码/. - _ ~ a-z A-Z 0‑9解码读到%读取后面2位十六进制数字还原原始字节。3HTTP协议版本演进版本核心特性HTTP/0.9早期不成熟版本HTTP/1.0基础版本支持GET/HEAD/POST每次请求新建TCP短连接请求完断开基础请求头HTTP/1.1性能大幅提升长连接keep‑alive管线化传输增加PUT/DELETE方法缓存管理缺点队头阻塞前面请求没返回后面即使准备好了也不能返回HTTP/2.0二进制传输多路复用解决队头阻塞头部压缩服务端主动推送资源推送实际业务很少使用3.0放弃推送HTTP/3.0底层抛弃TCP使用QUIC基于UDP头部压缩连接迁移弱网、移动端友好HTTP1.1长连接Connection: keep‑alive短连接Connection: close4请求头key: value键值对格式每行key: value\r\n头部结束用\r\n\r\n。常见请求头Host: www.baidu.com # 目标服务主机 User‑Agent: xxx # 客户端浏览器设备信息 Referer: [https://xxx.com](https://xxx.com) # 当前请求是从哪个页面跳转过来 Accept: */* # 客户端可以接收哪些响应数据类型 Accept‑Language: zh‑CN # 客户端支持语言 Accept‑Encoding: gzip,deflate # 支持的压缩格式 Connection: keep‑alive # 控制长/短连接 Content‑Type: application/x‑www‑form‑urlencoded # 请求正文数据格式 Content‑Length: 123 # 请求正文字节长度 Cookie: xxx # 客户端存储的身份凭证5请求正文POST/PUT/DELETE才有请求正文GET没有。头部结束空行\r\n\r\n之后就是正文内容。2.3 HTTP响应报文格式结构响应首行 响应头部 空行\r\n\r\n 响应正文1响应首行格式HTTP/版本 状态码 状态描述例HTTP/1.1 200 OK状态码五大类1xx 信息类协议切换、提示信息2xx 请求成功200 OK请求完全成功201 Created资源创建成功206 Partial Content断点续传返回部分数据3xx 重定向配合响应头Location使用301 永久重定向资源永久搬家浏览器缓存跳转后续直接访问新地址302 临时重定向资源临时迁移下次访问依旧请求旧地址4xx 客户端错误400 Bad Request请求报文格式错误404 Not Found请求资源不存在5xx 服务器错误500 Internal Server Error服务器内部异常502 Bad Gateway网关/代理拿到无效后端响应504 Gateway Timeout网关后端请求超时2响应头常见响应头Location: /image/a.png # 配合3xx重定向 Set‑Cookie: userIdxxx # 服务器下发cookie给浏览器 Content‑Type: text/html # 响应正文MIME类型告诉客户端如何解析body Content‑Length: 2048 # 响应体字节长度 Cache‑Control: max‑agexxx # 缓存控制3响应正文服务器返回给浏览器的资源可以是html、json、图片、二进制文件。2.4 Cookie、Session、TokenHTTP无状态解决方案HTTP协议本身无状态每一次请求相互独立服务器默认不知道两个请求来自同一个用户因此需要身份管理。Cookie流程服务器通过Set‑Cookie响应头下发数据浏览器保存Cookie之后每次请求自动带上Cookie请求头。缺点每次http明文携带用户身份信息存在隐私泄露风险。Cookie存储在客户端浏览器。Session会话Session是基于Cookie做的改进方案。服务器生成唯一ssid(sessionId)通过Set‑Cookie: ssidxxx发给浏览器。浏览器后续请求带上ssid真实用户信息保存在服务端Session内存/数据库客户端只存ssid字符串。优点敏感数据不放在客户端缺点服务器集群时session共享有成本。Token机制服务器生成一串唯一token字符串映射用户身份状态。token交给客户端本地保存Cookie / localstorage。客户端每次请求携带token服务器校验token完成身份识别。优势适合分布式、前后端分离、移动端场景不需要服务端保存会话数据。三、HTTPS协议HTTPS本质HTTP SSL/TLS加密层底层传输依旧是TCP。HTTP明文传输不安全HTTPS对传输数据做加密、身份认证。 默认端口443HTTPS解决3个核心问题数据加密防止报文被窃听身份认证确认服务器是真实可信服务器防止伪装钓鱼数据完整性报文传输中不能被篡改SSL/TLS握手核心流程身份认证CA证书权威第三方CA机构服务器向CA申请数字证书。证书包含服务器域名信息、CA机构信息、数字签名。客户端操作系统/浏览器预装CA机构的公钥。握手时服务器把证书发送给客户端。客户端校验证书对证书原文做hash计算得到hash值A。使用预装CA公钥解密证书里的数字签名得到hash值B。A与B对比一致代表证书没有被篡改服务器身份可信。混合加密传输非对称加密公钥私钥只用于握手阶段协商会话密钥加解密慢不传输业务数据。对称加密握手协商出的会话密钥业务报文使用对称加密速度快。HTTPS协议TLS握手完整流程1.前提服务端提前生成一对非对称密钥公钥私钥向CA申请证书时提交服务器信息和服务器公钥。CA对服务器信息和公钥做哈希得到摘要用CA自己的私钥加密摘要生成数字签名附加在证书末尾。客户端收到服务端证书后使用本地内置CA根证书的公钥解密证书签名得到哈希摘要A客户端本地对证书内容重新哈希计算得到摘要BA和B相等代表证书没有被篡改服务端可信验证失败直接断开TCP连接。TLS握手流程(TLS1.2)2.Client Hello客户端发送客户端随机数、支持的TLS版本、加密套件列表给服务端。3.Server Hello服务端回复服务端随机数、选定加密套件等到客户端收到之后再返回自己的数字证书。4.客户端校验证书合法性失败断开连接校验成功客户端生成预主密钥Pre‑Master Secret使用服务端公钥加密后发给服务端服务端使用自身私钥解密拿到预主密钥。双方以预主密钥、客户端随机数、服务端随机数共同派生会话对称密钥。双方发送Change Cipher Spec报文通知后续使用对称加密再发送Finished报文校验握手完整性。TLS握手完成后续HTTP报文全部使用对称密钥加密传输。补充HTTP3不再使用TCP使用QUIC(UDP)把TLS加密内置到QUIC协议内部。四、DNS协议DNS域名解析协议应用层协议主要使用UDP也支持TCP。 作用把人类可读域名www.baidu.com翻译成机器识别的IP地址。用户访问域名浏览器首先发起DNS查询。DNS服务器返回域名对应的IP。客户端拿到IP之后才向IP发起HTTP/TCP连接。流程简述浏览器缓存 → 操作系统hosts文件 → 本地DNS服务器 → 根DNS服务器 → 顶级域服务器 → 权威DNS服务器最终拿到IP。域名域名IP地址不好记忆提出的一种服务器查找技术使用便于记忆的字符串代替ip地址一般在通信前需要进行域名解析将域名字符串转换为具体的ip地址在进行TCP连接并通信域名的层级根域名、顶级域名、二级域名、三级域名...顶级域名地域划分.cn .us性质划分.com.org , ....二级域名.qq.com三级域名.zhidao.baidu.com域名服务器的层级根域名服务器 - 顶级域名服务器 - 二级域名服务器 -三级域名服务器 ....域名解析的过程1.查看浏览器缓存2.查看本机host文件3.本地域名解析服务器网络服务运营商电信移动联通等部署在终端位置4.本地域名服务器-根域名服务器-顶级域名服务器-二级域名服务器……(递归查询)5.1本地域名服务器-根域名服务器2本地域名服务器-顶级域名服务器3本地域名服务器-二级域名服务器.......(逐层解析迭代查询)五、重点HTTP1.1长连接keep‑alive队头阻塞HTTP2多路复用解决队头阻塞二进制帧头部压缩HTTP3 QUICUDP。GET和POST区别301永久重定向与302临时重定向。Cookie客户端存储Session服务端存储依赖Cookie携带sessionId。HTTPS不是新协议HTTP套SSL/TLSCA证书做身份校验混合加密非对称协商密钥对称加密业务数据。TLS协议是基于TCP连接进行的必须先建立TCP连接在进行TLS握手DNS域名解析域名转IP后才能进行TCPl连接
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。