第一部分:http协议
1.1. http协议的作用
比较官方的解释是:
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准.http属于应用层协议
简单来说,就是定义了客户端怎么通过互联网从服务端获取数据的方式.
说的通俗一点,这个过程就好像你(client客户端)去超市(server服务端)买东西(你请求的数据) ,你买完了,总要把东西装回来吧,那么http协议就是定义了你从超市到底用什么样的袋子把东西装回来的协议.
1.2.URI和URL介绍
URI (Universal Resource Identifier) 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。而URI包含URL和URN两种定位方式.
URL (Universal Resource Locator) 统一资源定位符(应用广泛),一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。
URN (Universal Resource Name)统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源(用的比较少)。
1.3.HTTP请求和响应基本格式
1.4.http请求内容
(1)请求行内容解析
请求行只有第一行,按照空格分为3段.
第一段:用来说明请求的方式,(这个就好像你买东西时候的方式,用手推车还是手拉筐).
常见的请求方式有GET/POST/HEAD/TRACE/PUT/OPTIONS,当然这里用的最多的还是GET和POST.
GET方法的作用在于从服务器获取资源。
POST方法用于向服务器提交数据
除了GET和POST方法以外,HTTP协议还支持许多其他因特殊目的而建立的方法。需要了解的其他方法如下
HEAD。这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。
TRACE。回显服务器收到的请求,主要用于测试或诊断。
OPTIONS。这种方法要求服务器报告对某一特殊资源有效的HTTP方法(支持的http方法)。
PUT。这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源
第二段:用来说明请求的资源位于服务器的地址
第三段:用来说明http协议的版本
(2)请求头内容解析
参考这个请求,我们来解析一下出现的字段
- Host消息头用于指定出现在被访问的完整URL中的主机名称
- User-Agent这个消息头指浏览器或生成请求的客户端软件有关的信息
- Accept 这个消息头用于告诉服务器客户端愿意接受哪些内容,如图像类型、文档格式等
- Accept-Language 用于声明服务器浏览器可以支持什么语言
- Accept-Encoding 这个消息头用于告诉服务器,客户端愿意接受哪些内容编码
- Referer 这个消息头用于指示提出当前请求的原始URL(从哪个URL跳转过来)
- Cookie 提交此前服务器向客户端发送的其他参数(服务器使用Set-Cookie消息头来设置Cookie,一般用于身份验证)
- Connection 通知通信的另一方,是否在完成HTTP传输后关闭TCP连接.close关闭;keepalive不关闭.
If-Modified-Since这个消息头用于说明浏览器最后一次收到所请求的资源的时间
(3)空行:是必须存在的,用来分开http头和http主体
(4)请求信息主体:根据需要会被填充
1.5.HTTP响应
(1)响应行
每个HTTP响应的第一行由3个以上、空格间隔的项目组成。包括:
- 使用的HTTP版本
- 表示请求结果的数字状态码(状态码解析请向下看)
- 一段文本形式的“原因短语”
(2)响应头
- Server 这个消息头提供所使用的Web服务器软件的相关信息。
- Date 响应返回的时间,GMT代表格林威治时间(北京市位于东8区,计北京时间要加8小时)
- Set-Cookie 这个消息头用于向浏览器发布cookie,浏览器会在随后的请求中将其返回给服务器。
- Expires这个消息头用于向浏览器说明消息主体内容的有效时间。
- Connection 这个消息头用于告诉通信的另一端,在完成HTTP传输后是关闭TCP连接,还是保持连接开放以接收其他消息。
- Content-Type 这个消息头用于规定消息主体的内容类型。(解析:Internet Media Type,互联网媒体类型;也叫MIME类型,在Http协议消息头中,使用Content-Type来表示请求报文中的数据格式类型).
例如,HTML文档的内容类型为text/html - Content-Length 这个消息头用于规定消息主体的字节长度
(3)空行:必须存在,用来区分响应头和响应主体
(4)响应主体:服务器端回复给客户端的数据
1.6.HTTP消息状态码
状态码 | 说明 | 原因短语 |
1XX | Information信息状态码 | 客户端提供信息,接收的请求正在处理 |
2XX | Success成功 | 请求正常并成功提交 |
3XX | Redirection重定向 | 客户端被重定向到其他资源,需要继续操作 |
4XX | ClientError客户端错误 | 请求包含某种错误 |
5XX | ServerError服务端错误 | 服务器处理请求时,遇到错误 |
-
常见状态码解析:
- 100:Continue,客户端应重新发送初始请求,并在请求中附上第一次请求时未提供的(可能很大或者包含敏感信息的)表示。客户端这次发送的请求不会被拒绝
- 200:OK,表示服务器成功执行了客户端所请求的动作
- 201:Created,被创建。当服务器依照客户端的请求创建了一个新资源时,发送此响应代码
- 204:Accept,已接受请求,但是还没处理完成.若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用此响应代码。服务器也可以对GET请求返回此响应代码,这表明“客户端请求的资源存在,但其表示是空的”
- 301:Moved Permanently,永久跳转(重定向)——服务器知道客户端试图访问的是哪个资源,但它不喜欢客户端用当前URI来请求该资源。它希望客户端记住另一个URI,并在今后的请求中使用那个新的URI
- 302:Found,临时跳转,重定向地址或文档已经被找到
- 304:Not Modified,缓存响应。请求的资源没有被修改,服务器不返回任何新的信息。
- 400:Bad Request,错误的请求,客户端请求语法错误,服务端无法解析(比如没有空行)。
- 401:Unauthorized,用户身份未验证。
- 403:Forbidden,没有权限访问服务器的某些资源(服务器已经理解请求,但是拒绝执行)。
- 404:Not Found,请求资源没找到。
- 405:Method Not Allowed,请求方法不允许
- 413:Request Entity Too Large,请求实体太大
- 414:Request URI Too Long,请求URL太长
- 500:Interval Server Error,内部服务器错误
- 502:Bad Gateway,服务器响应超时
- 503:Server Unavailable,服务不可用,无法响应客户端请求。临时服务器维护或负载,暂时无法处理请求(可能会恢复)
第二部分:https协议
2.1 HTTPS协议介绍
1. 由于http协议在传输过程中存在一个致命缺点—-使用明文传输,所以一旦被捕获数据包,比如用户名和密码等敏感信息都可以直接读取到.
也就是你买了个金戒指,但是用透明的塑料袋装的,走在街上是不是担心随时被偷? 使用http协议就相当于让你的原始数据在”裸奔”!!!
所以https协议应运而生.
2. HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,数据即便被捕获,也不能被破解.所以在很多电商/银行/企业等网站,https加密传输就显得尤为重要.
3. HTTPS其实是HTTP+SSL/TLS协议共同实现. HTTPS是在传输层和应用层中间又加入了SSL(安全套接字层),使用这个协议来完成对数据的加密. 而TLS可以看做SSL的升级版.
这里我们不详细研究协议,主要讲协商的大致流程.
2.2 HTTPS协议协商过程
来源:freebuf.com 2020-07-09 01:53:38 by: zhijian
请登录后发表评论
注册