HTTP知识点
各种协议在通信过程中的用处
HTTP 1.1
1. http协议规定,请求从客户端发出,最后服务器响应该请求并且返回。换句话说,一定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
2. http请求报文的构成
3. http响应报文的构成
4. http是无状态协议。
使用http协议,每当有新的请求发送是,就有对应的新响应产生。协议本身不保留之前一切的请求或者响应报文的信息。但是有些场景是需要保持状态的,于是引入了cookie技术(后面再说)。
5. http的请求方法:
- get:从指定的资源请求数据
- post:向指定的资源提交要被处理的数据
- put:上传文件
- head: 请求头部
6. get和post的区别:
get | post | |
---|---|---|
url可见性 | url参数可见,拼接在url后面进行传参 | url参数不可见,通过body体传参 |
缓存性 | 可以缓存 | 不可以缓存 |
后退页面的反应 | 不产生影响 | 重新提交请求 |
传输数据的大小 | 一般不超过2k-4k | 根据php.ini 配置文件设定,也可以无限大 |
安全性 | 不安全 | 比较安全 |
7. http的keep alive:
http协议的初始版本中,每进行一次http通信就要断开一次TCP连接,导致增加通信量的开销。HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。持久连接的好处:
- 减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器的负载;
- 减少开销的这部分时间,使得http请求和响应能够更早的结束,提高web页面的显示速度。
8. http管线化(pipelining):发送请求之后,不用等待响应亦可直接发送下一个请求。
9. cookie: Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
-
通过服务器端发送的响应报文内的Set-cookie首部字段,通知客户端保存cookie;
-
客户端下次就会自动在请求报文中加入cookie值;
-
服务端发现客户端发来的cookie后,会查找对应的客户端,得到状态信息;
10. 状态码:
1xx:信息状态码:接收的请求正在处理
2xx:成功状态码:请求正常处理完毕
- 200 ok:表示从客户端发来的请求在服务器端被正常处理了
- 204 no content:代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
- 206 Partial Content:表示客户端进行了范围请求(请求一部分资源),而服务器成功执行了这部分的GET 请求
3xx:重定向状态码:需要进行附加操作以完成要求
- 301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI
- 302 Found:临时重定向。该状态码表示请求的资源已被分配了新的 URI,希望
用户(本次)能使用新的 URI 访问 - 304 Not Modified: 服务端资源无变化,可使用缓存资源
4xx:客户端错误状态码:服务器无法处理请求
- 400 Bad Request:表示请求报文中存在语法错误
- 401 Unauthorized:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示用户认证失败
- 403 Forbidden:表明对请求资源的访问被服务器拒绝了
- 404 Not Found:表明服务器上无法找到请求的资源
5xx:服务器错误状态码:服务器处理请求出错
- 500 Internal Server Error:表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障
- 503 Service Unavailable:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
11. 首部字段
通用首部字段
请求首部字段
响应首部字段
实体首部字段
12. HTTP的缺点
- 通信使用明文(不加密),内容有可能被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTPS
1. HTTP+ 加密 + 认证 + 完整性保护=HTTPS
通过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。
用 SSL 建立安全通信线路之后,就可以在这条线路上进行 HTTP通信了。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTP Secure,超文本传输安全协议)或 HTTP over SSL。
2. https的混合加密
- 对称加密:用相同的密钥加密解密--->不安全,容易被窃听
- 非对称加密:有一对公钥和私钥,发送方用公钥加密,接收端用私钥解密。(速度慢)
- 混合加密:使用非对称加密来加密传输密钥,然后之后就用该密钥进行对称加密传输
3. https建立ssl连接的过程
- 客户使用 https url 访问服务器,则要求 web 服务器建立 ssl 链接。
- web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
- 客户端和 web 服务器端开始协商 SSL 链接的安全等级,也就是加密等级。
- 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
- web 服务器通过自己的私钥解密出会话密钥。
- web 服务器通过会话密钥加密与客户端之间的通信。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话