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 验证,保证服务器身份真实 |

相关推荐
专注VB编程开发20年6 小时前
c#Modbus上位机开发-一次读10个地址和100个地址速度一样
网络·网络协议·tcp/ip
米丘11 小时前
HTTP/3 传输层 QUIC 协议
网络协议·http3
liulilittle12 小时前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信
2401_8734794014 小时前
如何用IP离线库阻断挖矿和僵尸网络?DNS层防护实战指南
网络·网络协议·tcp/ip·ip
TechWayfarer14 小时前
IP精准定位服务在保险行业的接入实践:区域需求洞察与精准服务
数据库·python·tcp/ip·flask
light_in_hand15 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
hai31524754315 小时前
九章编程法 · HTTP转发代理网关【终极完美版·矩阵步进交换】
人工智能·网络协议·线性代数·http·矩阵·极限编程
顾喵17 小时前
VME总线详解:原理、架构、时序、协议、迭代、调试与实战应用
linux·网络协议
AI行业学习17 小时前
CC‑Switch v3.16.1 免费下载(Windows+macOS+Linux)、使用方法【2026.6.11】
linux·开发语言·windows·python·macos·前端框架·html
一个人旅程~17 小时前
如何进行win11右键菜单优化(poweshell命令行与bat自动脚本方式)
windows·经验分享·macos·电脑