http笔记

peter | 2025年08月03日 00:41 | 0 次品读

HTTP笔记

基本构成

HTTP(HyperText Transfer Protocol)是用于客户端和服务器之间通信的协议。HTTP消息包括请求和响应,每种消息都包含一些常见的字段。以下是一些HTTP请求和响应中常见的字段:

HTTP 请求字段

1. 请求行

  • 方法:请求方法,如GETPOSTPUTDELETE等。
  • URL:请求的资源路径。
  • HTTP版本:使用的HTTP协议版本,如HTTP/1.1HTTP/2
示例
GET /index.html HTTP/1.1

2. 请求头

  • Host:指定请求的主机名和端口号。
  • User-Agent:客户端的用户代理信息,通常包括浏览器类型、版本和操作系统信息。
  • Accept:客户端可以处理的内容类型。
  • Accept-Language:客户端可以处理的语言。
  • Accept-Encoding:客户端可以处理的编码方式,如gzipdeflate
  • Content-Type:请求体的媒体类型,如application/jsonapplication/x-www-form-urlencoded
  • Content-Length:请求体的长度。
  • Authorization:认证信息,通常用于基本认证或Bearer认证。
  • Cookie:客户端的cookie信息。
示例

复制

Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
Authorization: Basic QWxhZGprakdFRF93ZSBoYW5nZmFr
Cookie: session_id=1234567890

3. 请求体

  • 请求体:包含请求的数据,如表单数据、JSON对象等。对于GET请求,请求体通常为空。
示例
name=John&age=30

HTTP 响应字段

1. 状态行

  • HTTP版本:使用的HTTP协议版本,如HTTP/1.1HTTP/2
  • 状态码:HTTP状态码,如200404500等。
  • 状态消息:对状态码的简短描述,如OKNot FoundInternal Server Error
示例
HTTP/1.1 200 OK

2. 响应头

  • Content-Type:响应体的媒体类型,如text/htmlapplication/json
  • Content-Length:响应体的长度。
  • Server:服务器的软件信息。
  • Date:响应生成的日期和时间。
  • Last-Modified:资源的最后修改时间。
  • ETag:资源的唯一标识符,用于缓存验证。
  • Expires:响应的过期时间。
  • Cache-Control:缓存控制指令,如max-ageno-cache
  • Set-Cookie:设置客户端的cookie信息。
  • Location:重定向的URL。
示例

复制

Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Server: Apache/2.4.1 (Unix)
Date: Mon, 27 Jul 2009 12:28:53 GMT
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Expires: Mon, 27 Jul 2009 12:29:53 GMT
Cache-Control: max-age=60
Set-Cookie: session_id=1234567890; Expires=Wed, 09 Jun 2021 10:18:14 GMT;
Location: http://example.com/newpage

3. 响应体

  • 响应体:包含服务器返回的数据,如HTML页面、JSON对象等。
示例

复制

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

HTTP/1.1

  1. 第一个思路是,通过缓存技术来避免发送 HTTP 请求。客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期,客户端发送请求的时候带上响应数据的摘要,服务器比对后发现资源没有变化,就发出不带包体的 304 响应,告诉客户端缓存的响应仍然有效。
  2. 第二个思路是,减少 HTTP 请求的次数,有以下的方法:
  3. 将原本由客户端处理的重定向请求,交给代理服务器处理,这样可以减少重定向请求的次数;
  4. 多个小资源合并成一个大资源再传输,能够减少 HTTP 请求次数以及 头部的重复传输,再来减少 TCP 连接数量,进而省去 TCP 握手和慢启动的网络消耗;
  5. 按需访问资源,只访问当前用户看得到/用得到的资源,当客户往下滑动,再访问接下来的资源,以此达到延迟请求,也就减少了同一时间的 HTTP 请求次数。
  6. 第三思路是,通过压缩响应资源,降低传输资源的大小,从而提高传输效率,所以应当选择更优秀的压缩算法。

RSA加密

四次握手

  1. 第一次:打招呼
  2. 第二次:验证证书,有根证书,中间证书形成的证书链,通过哈希算法和密钥生成签名,通过公钥解密和哈希算法在客户端行程两个值,比较两个值是否相等
  3. 第三次,发送随机数,双方生成会话秘钥
  4. 第四次,发送两个消息做验证

img

ECDHE加密

对称加密:对称加密密钥

img

HTTP/2

头部压缩,二进制帧,多路复用

多路复用(Multiplexing)

多路复用是一种计算机网络和通信领域中的技术,用于在一个通信信道上同时传输多个独立的数据流或信号。它允许多个发送者共享同一通信信道,从而提高信道的利用率和传输效率。

在HTTP/2中,多路复用是其核心特性之一,允许多个请求和响应在同一TCP连接上同时进行。每个请求和响应都被拆分成多个帧,这些帧可以交错传输,但根据帧首部的流标识可以重新组装。

HTTP/2的多路复用特点

  1. 单个TCP连接:HTTP/2针对同一个域名只建立一个TCP连接,所有HTTP请求都通过这个TCP连接来完成。
  2. 帧和流:HTTP/2将每个请求切割为更小的帧,有header帧和body帧,并且给同一个请求的帧分配相同的streamId,模拟实现了流的传输。
  3. 并行传输:单个连接可以承载任意数量的双向数据流,单个连接上可以并行交错的请求和响应,之间互不干扰。
  4. 乱序传输:数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
  5. 优先级:每个请求都可以带一个31bit的优先值,0表示最高优先级,数值越大优先级越低。

HTTP/3

改用udp协议,uqic协议防止丢包问题

品评论坛

登录后方可发表评论。


评论列表 (1)
kaisashala 2025年08月04日 22:33

不明白但是觉得很厉害——不明觉厉