HTTP解析/版本变化/TSL

ARP协议/Address Resolution Protocal地址解析协议:通过IP地址找到MAC地址

查看自己电脑的IP与MAC地址

整体过程

IP协议/Internet Protocol: 网络层用来"标识一台主机在网络中位置"的逻辑编号

IPv4:4段,32位,占用四字节

IPv6:8段,128位,占用2*8=16字节,解决IPv4数量紧缺问题

IP与MAC的关系

IP 用来找网络,MAC 用来找设备

HTTP超文本传输协议

状态码:

1XX:提示消息,目前是协议处理的中间状态,还有后续的操作

2XX:服务器成功处理了客户端请求

3XX:重定向,资源位置有变动,需要客户端重新发送新的请求

4XX:客户端错误,请求错误服务器无法处理

5XX:服务器错误,服务器在处理请求时内部发生错误

HTTP常见字段

|--------------------------|------------------------|-----------------------------------------------------------------------------------------------------------|-------------------------------------|
| 类别 | 作用 | 常用字段 / 示例 | 说明 |
| 请求行(Request Line) | 告诉服务器要做什么 | 方法:GET、POST、PUT、DELETE、PATCH...URL:请求的资源路径HTTP版本:HTTP/1.0、1.1、2 | 描述请求类型、目标资源及协议版本 |
| 请求头(Request Headers) | 携带附加信息(客户端信息、授权、内容类型等) | Host:服务器域名Accept:可接受响应数据类型Content-Type:请求体数据类型Content-Length:请求体长度Connection:长连接机制Content-Encoding:数据压缩方法 | 用于传递客户端信息、身份验证、内容描述等 |
| 请求体(Request Body,可选) | 发送数据给服务器 | - | 常用于POST、PUT、PATCH请求中,传输表单数据、JSON等内容 |

Get/Post:

|----------|------------------------------|---------------------|
| 特性 | GET 请求 | POST 请求 |
| 作用 | 获取资源 | 提交数据 |
| 参数位置 | URL | 请求体(Body) |
| 请求体 | 通常为空 | 可以包含数据(表单、JSON、文件等) |
| 长度 | Http协议本身不会对URL做限制,但浏览器会限制数据量 | 大,几乎无限(受服务器限制) |
| 安全性 | 不安全,敏感数据暴露在 URL | 相对安全,不暴露在 URL |
| 是否缓存 | 可以被缓存 | 不缓存 |

HTTP缓存

有两种实现方式

强制缓存,协商缓存。不过协商缓存时间里在强制缓存上的,也就是说只有强制缓存过期的时候,才会触发协商缓存。

强制缓存

只要浏览器判断数据没有过期,就只直接使用浏览器缓存的数据。

具体实现headers字段:

Cache-Control相对时间/Expires绝对时间,前者优先级大于后者。

协商缓存

通过与服务器协商,判断是否使用本地浏览器缓存。

Last-Modified/If-Modified_Since
  1. 客户端会将上一次服务器响应中的 Last-Modified 作为 If-Modified-Since 放入请求头中发送给服务器。
  2. 服务器收到请求后,会将 If-Modified-Since资源当前的最后修改时间进行比较:
  • 如果资源在该时间之后发生过修改 ,则返回 200 OK 和最新资源;
  • 如果资源在该时间之后未发生修改 ,则返回 304 Not Modified,浏览器直接使用本地缓存。
Etag/If-None-Match
  1. 客户端在首次请求资源时,会缓存服务器返回的资源数据以及 ETag
  2. 当资源再次被请求且强缓存失效时,客户端会在请求头中携带 If-None-Match,其值为上一次响应中的 ETag
  3. 服务器收到请求后,会将 If-None-Match 的值与当前资源的 ETag 进行比较:
  • 若两者一致,说明资源未发生变化,返回 304 Not Modified
  • 若不一致,说明资源已发生变化,返回 200 OK 和最新资源,并更新 ETag

HTTP

|----------|------|--------------|-------------------------|-------------------------------|-------------|------------|
| HTTP 版本 | 发布时间 | 传输层协议 | 连接特性 | 核心改进 | 主要问题 | 典型关键词 |
| HTTP/1.0 | 1996 | TCP | 短连接 | 基本请求/响应模型 | 每次请求都建连,性能差 | 短连接、原始 |
| HTTP/1.1 | 1997 | TCP | 默认长连接***(Keep-Alive)*** | Host 头,多种缓存机制,分块传输,解决请求对头阻塞 | 队头阻塞、连接数受限 | 长连接、缓存 |
| HTTP/2.0 | 2015 | TCP | 单连接多路复用 | 二进制协议、Header 压缩[HPack]、多路复用 | TCP 层队头阻塞 | 多路复用、HPACK |
| HTTP/3.0 | 2022 | QUIC(基于 UDP) | 多路复用 | 解决队头阻塞、0-RTT、连接迁移 | 实现复杂、部署成本高 | QUIC、UDP |

长连接:

管道化技术:

解决了队头阻塞问题,也就是说之前我们在建立长连接后,只能一个一个发送请求,也就是只有服务端应答后,客户端才能发送下一个请求。虽然引入了管道化技术,但是服务端的数据读取还必须是顺序响应,也就是只能请求1处理完之后,请求2才能处理

SSL/TSL

介绍

|--------------------------------|-------------------------------------------|
| 名称 | 含义 |
| SSL (Secure Sockets Layer) | 由 Netscape 早期设计的安全套接层协议,现在已经不安全,已被弃用 |
| TLS (Transport Layer Security) | SSL 的升级版,更安全,现代网络通信用 TLS 1.2 / 1.3 替代 SSL |

主要功能

|---------------------|----------------------------|
| 风险 | TLS/SSL 如何解决 |
| 窃听(Confidentiality) | 非对称加密 + 对称加密(混合加密)保证传输内容加密 |
| 篡改(Integrity) | 摘要算法 + MAC / AEAD,保证数据完整性 |
| 冒充(Authentication) | 数字证书 + CA 验证,保证服务器身份真实 |

相关推荐
Java成神之路-3 小时前
DNS 与 CDN 底层原理深度剖析:从域名解析到内容分发全链路解析
网络·网络协议·tcp/ip
Predestination王瀞潞5 小时前
5.4.3 通信->WWW万维网内容访问标准(W3C):WWW(World Wide Web) 协议架构(分层)
前端·网络·网络协议·架构·www
嵌入式-老费5 小时前
vivado hls的应用(第一个axi接口的ip)
linux·服务器·tcp/ip
liangshanbo12156 小时前
[特殊字符] Yazi 终极指南:从安装到精通 (macOS 专属)
macos
袁庭新6 小时前
M系列芯片Mac上通过Homebrew一键安装/卸载Nginx并上线项目全指南
运维·nginx·macos·袁庭新·袁庭新ai
huohaiyu6 小时前
HTTPS的加密流程
网络协议·http·https
源远流长jerry6 小时前
RDMA 传输服务详解:可靠性与连接模式的深度剖析
linux·运维·网络·tcp/ip·架构
花月C7 小时前
基于WebSocket的 “聊天” 业务设计与实战指南
java·网络·后端·websocket·网络协议
北冥有鱼被烹7 小时前
【vibo经验记录】Mac 配置 Claude Code + 远程 Ollama 完全指南
macos·claude code·openclaw
嵌入式-老费8 小时前
vivado hls的应用(带ddr读取的ip)
服务器·网络·tcp/ip