avatar

简单入门HTTP

思维导图:
在这里插入图片描述

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: 服务器正忙

常见问题

  1. Http与Https的区别:

    • HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
    • HTTP 是不安全的,而 HTTPS 是安全的
    • HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
    • 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
    • HTTP 无法加密,而HTTPS 对传输的数据进行加密
    • HTTP无需证书,而HTTPS 需要CA机构颁发的SSL证书
  2. URI和URL的区别是什么?

    • URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。

    • URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还提供了如何定位 这个资源。

      URI的作用像身份证号一样,URL的作用更像家庭住址一样。

orm Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还提供了如何定位 这个资源。

 URI的作用像身份证号一样,URL的作用更像家庭住址一样。
文章作者: 舍予
文章链接: https://zshuhan.github.io/2020/06/25/%E7%AE%80%E5%8D%95%E5%85%A5%E9%97%A8HTTP/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 (✿◡‿◡)胖涵
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论