1. 各层协议

HTTP既可以基于TCP也可以基于UDP,但一般基于TCP。HTTP/3支持UDP。
UDP是流媒体的最佳协议。

类型 协议 协议职责
网络层协议 IP 路由选择,找到IP对应的主机
传输层协议 客户端:TCP/UDP 把HTTP报文按序号分割成很多小段,保证每个报文段可靠地传给对方。
服务器:接收到HTTP报文段并按序号顺序重组报文
应用层协议 HTTP 客户端:生产针对目标Web服务器的HTTP请求报文
服务器:对Web服务器请求的内容进行处理

下图是HTTP协议在TCP/IP网络中的位置:

ps:这个图,关于APR和RAPR协议到底属于哪层,可以说,在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。

2. HTTP/1.1方法

(1) HTTP/1.1的八种方法:

HTTP方法 说明
PUT 传输文件
GET 获取资源
HEAD 获得报文首部
POST 传输实体主体
DELETE 删除文件
OPTIONS 询问支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理

(2) RESTful规范中,HTTP方法和数据库CRUD方法的对应关系:

HTTP方法 数据库CRUDE方法
PUT Create
GET, HEAD Read
POST Update
DELETE Delete
OPTIONS, TRACE, CONNECT -

参考:https://blog.csdn.net/bksqmy/article/details/81178937

3. HTTP报文

请求和响应报文结构都是由报文首部header field、空行(CR+LF)、报文主体组成。


报文类型 组成部分
请求报文首部 请求行
请求首部,通用首部,实体首部
其他
响应报文首部 状态行
响应首部,通用首部,实体首部
其他

HTTP报文组成部分 各部分说明 案例
请求行 方法method request-URI请求URI 协议/版本 GET / HTTP/1.1
状态行 协议/版本 状态码status code 原因短语reason-phrase HTTP/1.1 200 OK
请求首部 Accept:客户端请求所期待的响应数据类型,MIME Type
Content-Type:发送端(客户端/服务器)发送的实体数据类型,MIME
Accept-Encoding:是压缩传输的内容编码方式
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
通用首部
实体首部
其他 可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等) -

4. MIME和Multipart

MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)
在 MIME 扩展中会使用一种称为多部分对象集合(Multipart)的方法,来容纳多份不同类型的数据。
相应地,HTTP 协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。
在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上Content-type。

  • Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。比如:Content-Type:text/html; 代表发送端发送的数据格式是html。

使用 boundary 字符串来划分多部分对象集合指明的各类实体。

5. 其他说明

(1) 由于HTTP是无状态的,也就是一次性的,一次请求一次响应就结束了。request都是客户端发送的,response都是服务器发送的。
(2) 如果是post请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
(3)
Accept代表发送端(客户端)希望接受的数据类型。比如:Accept:text/xml; 代表客户端希望接受的数据类型是xml类型。
Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。比如:Content-Type:text/html; 代表发送端发送的数据格式是html。
二者合起来, Accept:text/xml; Content-Type:text/html ,即代表接受xml格式,发送html格式。

6.HTTP的发展

HTTP/1 有连接无法复用、队头阻塞、协议开销大和安全因素等多个缺陷
HTTP/2 通过多路复用、二进制流与 Header 压缩等技术,极大地提高了性能,但是还是存在一些问题
HTTP/3 抛弃 TCP 协议,以全新的视角重新设计 HTTP。其底层支撑是 QUIC 协议,该协议基于 UDP,有 UDP 特有的优势,同时它又取了 TCP 中的精华,实现了既快又可靠的协议
原文链接:https://blog.csdn.net/weixin_42831704/article/details/90372420

参考:
https://www.cnblogs.com/loberty/p/11990576.html
https://www.imooc.com/article/34067

posted on 2022-01-13 16:51  西伯尔  阅读(67)  评论(0编辑  收藏  举报