Http
Http即超文本传输协议,该协议容易和TCP/IP协议产生混淆,http协议是应用层协议,而TCP/IP
协议是传输层协议,http协议是基于tcp/ip协议工作
http包括的版本有:
- HTTP1.0
- HTTP1.1
- HTTP2.0
- HTTP3.0
TIP除了HTTP3.0是基于
UDP协议实现,其他都基于TCP协议实现,1.0和3.0是现在的主流
http特性
首先我们应该知道他最最基础的特点:明文传输,对其内容不进行任何操作。
设计之初,核心需求是高效、简洁为目的,并没有考虑安全问题
在客户端(请求的发送方)和服务器(请求的接收方)之间的传输特点有以下几种:
- 一收一发
- 多发一收
- 一发多收
- 多发多收
一收一发是基本特点,其他操作是基于网络编程中的设计
http报文
http中request报文和response报文结构基本相同
request请求报文
由以下几个部分构成:
IMPORTANT
- 请求行(Request Line): 包含http版本、请求方式、请求地址等基本信息
- 请求头(Request Header): 请求的详细报文说明,key-value格式存储
- 空行
- 请求数据: 这里就是传输的数据,以二进制传输,可以传输空字符串、视频、图片等
URL-资源定位符
我们上网搜索到的所有资源都是有唯一的URL,它指出了文件位于哪个位置以及怎么处理。 所以URL也就我们平常说的网址、地址。
URL基本格式
它的基本格式如下:
协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]
如果学过Restful风格的话,就能一眼看出两者的区别
Method-请求方法
这一部分在请求中是位于请求行中,目的是告诉目的设备我将进行什么类型的操作,当然也可以你说你的,我做我的。
常用请求方法有以下几种:
| 请求方法 | 说明 | 版本号 |
|---|---|---|
| GET | 获取资源 | 1.0/1.1 |
| POST | 传输实体(对象) | 1.0/1.1 |
| PUT | 传输文件 | 1.0/1.1 |
| DELETE | 删除文件 | 1.0/1.1 |
NOTE除了上面4种,还有许多其他方法,OPTIONS,TRACE等
GET和POST
GET和POST方法本质上没有区别, 能用GET的地方一般也能用POST,能用POST的地方,也能用GET。
GET习惯上请求体为空,URL中请求参数不为空;POST习惯上请求体不为空,URL中的请求参数为空。
唯一有的区别就是
可以被缓存,而POST不能被缓存
TIPGET一般会被要求实现幂等,而POST不会被要求。
GET
get方式具有以下特点:
- URL中的请求参数可以为空,也可以不为空
- 请求头中有很多键值对结构
- 请求体一般为空
POST
- URL中的请求参数一般为空,但也可以不为空
- 请求头中有很多键值对结构
- 请求体一般不为空(请求头中的Content-Type表示类型
请求体中的数据类型,Content-Length表示请求体中数据长度)
Https
https是在http基础上对传输的内容进行了加密操作。利用**SSL/TLS协议**对http中明文内容进行加密包装。
思考
- 为什么请求中会有空行?其作用是什么?
1. 请求头中可以包含很多信息,如果不用空行,传输无法知道哪里结束 2. http是依赖tcp协议,tcp是面向字节流的,不设定空行,会引发 粘包问题 - 什么是幂等?
同样的请求被执行一次或多次,最后的结果是一样的,服务器状态也是一样的。GET,PUT,DELETE,HEAD一般是幂等的,而POST不是。只与后端服务器的状态有关,每次请求接收到状态码不一定相同
部分信息可能已经过时










川公网安备51011402000992号