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
作者:西伯尔
出处:http://www.cnblogs.com/sybil-hxl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。