HTTP协议
本篇文章就HTTP(HyperText Transfer Protocol)协议做一些简单的介绍
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、HTTP基本介绍
HTTP就是超文本传输协议,
超文本协议是一个双向协议
url(统一资源定位符)
url说明了协议,服务器和资源路径
大部分的url都遵循一种标准的格式,该格式有三个部分:
1.URL第一部分的称为一种方案,说明了访问资源所使用的协议的类型,通常就是HTTP协议
2.第二部指出了服务器的因特网地址
3.其余的部分指定了web服务器上的资源
HTTP方法
支持几种不同的请求命令,这些命令被称为HTTP方法,每条HTTP请求都要包含一种方法,该方法会告诉服务器要执行什么动作(例如:获取一个web网页,运行一个网关,删除一个文件),一些常见的HTTP方法
HTTP方法 | 描述 |
---|---|
GET | 从指定的资源中获取数据 |
PUT | 将来自客户端的数据存储到命名的服务器资源中 |
DELETE | 删除服务器中命名的资源 |
POST | 向指定的资源中提交要处理的数据 |
HEAD | 和GET方法相同,但只是返回HTTP报头,不返回文档的主体 |
GET和POST比较
GET | POST | |
---|---|---|
后退按钮/刷新 | 无害 | 数据将会被重新提交 |
书签 | 可收藏为书签 | 不可收藏为书签 |
历史 | 参数会保留在历史中 | 参数不会保留在历史中 |
对数据长度的限制 | 当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符) | 没有限制 |
数据类型 | 只允许ASCLL字符 | 没有限制 |
安全性 | 与POST相比来说,安全性较差,因为要发送的数据在URL中 | 与GET相比较安全,因为数据不会保存在浏览器的历史中和web服务器日志中 |
可见性 | 要传输的数据在URL中对于所有的人是可见的 | 数据不会显示在URL中 |
状态码
1XX临时响应
表示临时相应并需要请求者继续执行
100 |
---|
2XX成功
表示成功处理的状态码
200 |
---|
3XX重定向
要完成请求需要进一步操作,表示请求的资源被重定向到别的路径上
300 | |
---|---|
4XX客户端错误
400 | |
---|---|
5XX服务器端错误
500 | |
---|---|
报文的格式
所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message).请求报文会向web服务器请求一个动作,服务器会将请求的结果返回给客户端.
请求报文的格式:
<method> <request-URL> <version>
<headers>
<entity-body>
响应报文格式:
<version> <statue> <reason-phrase>
<headers>
<entity-body>
- 方法(method)
客户端希望服务器对资源执行的动作,是一个独立的单词.比如HEAD,GET,POST等 - 请求URL(request-URL)
命名了所请求的资源. - 版本(version)
报文所使用的HTTP版本,格式为: HTTP/1.0(可变) - 状态码(status-code)
用三位数描述了请求过程中所发生的情况 - 原因短语(reason-phrase)
数字状态码的可读版本,用以解释数字状态码的含义. - 首部(header)
每个首部都包含一个名字后面跟一个冒号(:)
冒号后面有个可选的空格,首部由一个空行结束用来分隔首部和正文. - 实体的主体部分(entity-body)
实体由任意数据组成
![](https://img-blog.csdnimg.cn/20201019230644593.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzYwMjkx,size_16,color_FFFFFF,t_70#pic_center
HTTP结构
web服务器
web服务器实现了HTTP和TCP连接的管理.
- 简历连接——接受一个客户端连接请求
- 接收请求——从网络中读取一条HTTP请求报文
- 处理请求——对请求报文的进行解释,并采取相应行动
- 访问资源——访问报文中指定的资源
- 构建响应——构建带有正确首部的HTTP响应报文
- 发送报文——将响应发送给客户端
- 记录事物处理的过程——将与已完成的事物有关的内容的记录保存到日志文件中
SSL/TLS建立连接各过程
HTTP/1.1、 HTTP/2、 HTTP/3的演变
- HTTP1.1相较于HTTP1.0
- 使用使用了TCP长连接的形式减少了HTTP/1.0短连接所带来的性能开销
- 支持管道网络传输,只要第一个请求发出去了,不必等待其响应回来,就可以直接发送下一个请求,从而减少了整体的响应时间.
- HTTP/2相较于HTTP/1.1的改进
- 头部压缩
HTTP/2会压缩头部信息,若同时发送多个相同或相似的头部,协议就会消除重复的部分.压缩算法成为HAPCK算法:客户端和服务端同时都维护着一张头部信息的表,所有的字段都会存入表中,生成索引号,以后就不必发送相同的字段了,只需要发送索引号即可.
2.全面采用二进制格式
HTTP/2不再像是HTTP/1.1使用纯文本形式的报文,而是全面使用二进制格式,头信息和数据体都采用了二进制,称为头信息帧和数据帧