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

相关推荐
上海云盾第一敬业销售2 小时前
高防IP架构解析与实践分享
网络协议·tcp/ip·架构
YuZou 邹宇2 小时前
macOS 下 STM32CubeMX 无法访问 Desktop / 打不开 .ioc 文件的解决方法
stm32·嵌入式硬件·macos
fy zs2 小时前
传输层协议TCP
网络·网络协议·tcp/ip
xin_nai2 小时前
TCP/IP协议
服务器·网络·tcp/ip
❆VE❆2 小时前
websocket升级:实时通信实现竞价间功能、心跳+重连
网络·websocket·网络协议
qq_白羊座2 小时前
HTTP请求走私攻击
网络·网络协议·http
黑码哥2 小时前
iOS开屏广告多机型屏幕适配最佳实践
macos·ios·cocoa·广告·商业·开屏广告
小李独爱秋2 小时前
计算机网络经典问题透视:流式存储、流式实况与交互式音视频的深度解析
服务器·网络协议·计算机网络·安全·音视频
weixin_443290693 小时前
【华为HCIA路由交换认证指南】第三章 IP地址和子网划分
网络·tcp/ip·华为