Fork me on GitHub

HTTP知识点

各种协议在通信过程中的用处

image

HTTP 1.1

1. http协议规定,请求从客户端发出,最后服务器响应该请求并且返回。换句话说,一定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

2. http请求报文的构成

image

3. http响应报文的构成

image

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后,会查找对应的客户端,得到状态信息;

    image

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. 首部字段

通用首部字段

image

请求首部字段

image

响应首部字段

image

实体首部字段

image

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 服务器通过会话密钥加密与客户端之间的通信。
posted @   zerozhupan  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
目 录 X
各种协议在通信过程中的用处
HTTP 1.1
1. http协议规定,请求从客户端发出···
2. http请求报文的构成
3. http响应报文的构成
4. http是无状态协议。
5. http的请求方法:
6. get和post的区别:
7. http的keep alive:
8. http管线化(pipelinin···
9. cookie: Cookie 技术···
10. 状态码:
11. 首部字段
12. HTTP的缺点
HTTPS
1. HTTP+ 加密 + 认证 + 完···
2. https的混合加密
3. https建立ssl连接的过程