思维导图:

HTTP介绍
HTTP概念
超文本传输协议(HTTP, HyperText Transfer Protoco1) 是互联网上应用最为广泛的一种网络协议。用于产生客户端浏览器和服务器之间交换的数据。
HTTP使用统一资源标识符(URL,Uniform Resource Identifiers)去建立连接和传输数据。
特点:
① 面向事务的客户服务器协议
② 无状态:服务器不保存任何有关客户端过去所发请求的信息
③无连接:每次连接只处理一个请求
HTTP工作原理
HTTP协议工作于C/S架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(WEB服务器)发送所有请求。
其中Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80。
与HTTP关系密切的协议
DNS:域名解析协议,负责对域名进行解析。访问某个网页,我们往往是通过域名(www.abc.com)进行访问,但计算机只认识主机地址(192.168.xx.xx)。这时就需要DSN去把域名转换为主机地址
TCP:TCP协议采用了三次握手的方式来保证数据的准确运输
IP:传输数据包,找到通信目的地地址。IP协议把我们的产生的数据包发送给对方,IP地址指明了节点被分配的地址,但IP地址可能会变换,我们可以使用ARP协议来将IP地址反射为MAC地址
消息结构
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
●请求行 :声明请求方法、主机域名、资源路径&协议版本。请求行的组成=请求方法 请求路径 协议版本;注意:空格不能省;
●请求头 :声明客户端、服务器/报文的部分信息。使用方法:采用“header(字段名):value(值)”的方式;
●请求体:存放需发送的数据信息。
客户端请求:
GET /hello.txt HTTP/1.1 //请求行
User-Agent: Mozilla/5.0
Host: www.abc.com //以上两行都是请求头
服务器响应消息
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
●状态行:声明协议版本,状态码,状态码描述。组成:状态行有协议版本、状态码&状态信息组成;
●响应头: 声明客户端、服务器/报文的部分信息。使用方式:采用“header(字段名):value(值)”r的方式;
●响应体:存放需发送的数据信息。使用方式:和请求体是一致的,同样分为:任意类型的数据交换格式、键值对形式和分部分形式;
服务端响应:
HTTP/1.1 200 OK //状态行
Date: Mon, 24 Jul 2020 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Accept-Ranges: bytes
Content-Type: text/plain
请求方法
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请请:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
- GET:获取数据
- POST:提交数据
- HEAD:获取报头
- PUT:传输文件
- DELETE :删除文件
- CONNECT:要求用隧道协议连接代理
- OPTIONS:询问支持的方法
- TRACE:追踪路径
- PATCH:对资源进行部分修改。PUT 也可以用于修改资源,但是只能完全替代原始资源。
状态码
- 1XX
信息,服务器收到请求,需要请求者继续执行操作
100:继续。客户端应继续其请求
101:切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 - 2XX
表示请求成功
200:正常处理
204:成功处理,但服务器没有新数据返回,显示⻚面不更新
206: 对服务器进行范围请求,只返回一部分数据 - 3XX
表示重定向,需要进一步的操作以完成请求
301: 请求的资源已分配了新的URI中,以后应使用新的URL地址。【永久重定向】
302: 请求的资源临时分配了新的URI中,URL地址没变【临时重定向】
303: 与302相同的功能,但明确客户端应该采用GET方式来获取资源
304: 发送了附带请求,但不符合条件【返回未过期的缓存数据】 - 4XX
表示客户端错误,请求包含语法错误或无法完成请求
400: 请求报文语法错误了
401: 需要认证身份
403: 没有权限访问
404: 服务器没有这个资源 - 5XX
表示服务器错误,服务器在处理请求的过程中发生了错误
500: 内部资源出错了
503: 服务器正忙
常见问题
-
Http与Https的区别:
- HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
- HTTP 是不安全的,而 HTTPS 是安全的
- HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
- 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
- HTTP 无法加密,而HTTPS 对传输的数据进行加密
- HTTP无需证书,而HTTPS 需要CA机构颁发的SSL证书
-
URI和URL的区别是什么?
-
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
-
URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还提供了如何定位 这个资源。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。
-
orm Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还提供了如何定位 这个资源。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。

