大白话HTTP/HTTPS协议

1、计算机中什么是协议

在计算机中要与其他设备进行通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种统一的规则。而我们就把这种规则称为协议(protocol)。

2、什么是HTTP

HTTP(HyperText Transfer Protocol ,超文本传输协议严禁的译名应该是超文本转移协议)是用于客户端和服务器之间通讯的协议,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。
在这里插入图片描述
HTTP 协议用于客户端和服务器端之间的通信
HTTP 通过请求和响应的交换达成通信
HTTP 是不保存状态的协议
HTTP 通过URI定位资源

3、URI和URL

URI:统一资源标识符,URI 就是由某个协议方案表示的资源的定位标识符。
URL:统一资源定位符,URL正是使用 Web 浏览器等访问 Web 页面时需要输入的网页地址,如http://www.baidu.com。
URI 用字符串标识某一互联网资源,而 URL表示资源的地点(互联网上所处的位置)。可见 URL是 URI 的子集。
使用URI表示的示例:

ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
4、TCP/IP协议族

通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的。而 HTTP 属于它内部的一个子集。
TCP/IP 协议族里重要的一点就是分层。TCP/IP 协议族按层次分别分为以下 4 层:应用层传输层网络层数据链路层

应用层:决定了向用户提供应用服务时通讯的活动。在该层的协议如FTP、DNS、HTTP等。

传输层:传输层对上层应用层,提供处于网络链接中的两台计算机之间的数据传输。如TCP、UDP等。

网络层:用于处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

数据链路层:又称链路层,用来处理链接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

TCP/IP通信传输流
使用HTTP通信时传输流示例

5、与HTTP关系密切的协议:IP、TCP、DNS

IP协议:负责将数据包传输到指定计算机
TCP协议:提供可靠的字节流服务
DNS协议:负责域名解析,将域名解析为目标ip地址
在这里插入图片描述

6、HTTP的主要版本
  • HTTP/1.0:
    HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端。
  • HTTP/1.1:
    1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。
  • HTTP/2.0:
    负责互联网技术标准的 IETF(Internet Engineering Task Force,互联网工程任务组)创立 httpbis(Hypertext Transfer ProtocolBis,http://datatracker.ietf.org/wg/httpbis/)工作组,其目标是推进下一代 HTTP——HTTP/2.0 在 2014 年 11 月实现标准化。HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。
7、HTTP支持的方法

HTTP/1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP/1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
GET:获取资源
POST:传输实体主体
HEAD:获取报文头部
OPTIONS:询问支持的方法
PUT:从客户端向服务器传送的数据取代指定的文档的内容或传输文件
PATCH:是对 PUT 方法的补充,用来对已知资源进行局部更新 。
DELETE:删除资源
TRACE:追踪路径
CONNECT:要求用隧道协议链接代理

8、HTTP状态码
  • 状态码的类别:
    1XX:Informational(信息性状态码),表示接收的请求正在处理
    2XX:Success(成功状态码),表示请求处理成功
    3XX:Redirection(重定向状态码),表示请求被重定向
    4XX:Client Error(客户端错误状态码),表示客户端有误 如输入地址不存在等
    5XX:Server Error(服务端错误状态码),表示服务端异常
  • 主要状态码详解:
    100 Continue:继续。客户端应继续其请求
    101 Switching Protocols:切换协议。服务器根据客户端的请求切换协议。
    200 OK:请求成功。一般用于GET与POST请求
    201 Created:已创建。成功请求并创建了新的资源
    202 Accepted:已接受。已经接受请求,但未处理完成
    204 No Content:无内容。服务器成功处理,但无可用资源返回。
    206 Partial Content:部分内容。服务器成功处理了部分GET请求。
    301 Moved Permanently:永久重定向,后续请求都会自动匹配新的URI。
    302 Found:临时重定向。但资源只是临时被移动。客户端应继续使用原有URI
    303 See Other:查看其它地址。与301类似。使用GET和POST请求查看
    304 Not Modified:未找到符合附带条件的资源,其实和重定向没有关系。
    307 Temporary Redirect:临时重定向。与302类似。使用GET请求重定向。
    400 Bad Request:客户端请求的语法错误,服务器无法理解
    401 Unauthorized:请求要求用户的身份认证。
    402 Payment Required:保留,将来使用。
    403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
    404 Not Found:最常见的状态码之一,资源或路径不存在。
    405 Method Not Allowed:客户端请求中的方法被禁止。
    406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求。
    408 Request Time-out:服务器等待客户端发送的请求时间过长,超时。
    500 Internal Server Error:服务器内部错误,无法完成请求。
    501 Not Implemented:服务器不支持请求的功能,无法完成请求。
    502 Bad Gateway:充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
    503 Service Unavailable:由于超载或系统维护,服务器暂时的无法处理客户端的请求。
    504 Gateway Time-out:充当网关或代理的服务器,未及时从远端服务器获取请求。
    505 HTTP Version not supported:服务器不支持请求的HTTP协议的版本,无法完成处理。
9、Cookie和Session

由于HTTP是无状态的,因此引入了Cookie技术来解决此问题。
Cookie 技术是通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

Session与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。

随着前后端分离技术的兴起,Cookie和Session逐渐被JWT技术所取代

10、HTTP的首部(也称Headers)
  • 通用首部字段:
    Cache-Control:控制缓存的行为
    Connection:逐跳首部、连接的管理
    Date:创建报文的日期时间
    Pragma:报文指令
    Trailer:报文末端的首部一览
    Transfer-Encoding:指定报文主体的传输编码方式
    Upgrade:升级为其他协议
    Via:代理服务器的相关信息
    Warning:错误通知

  • 请求首部字段:
    Accept:用户代理可处理的媒体类型
    Accept-Charset:优先的字符集
    Accept-Encoding:优先的内容编码
    Accept-Language:优先的语言(自然语言)
    Authorization:Web认证信息
    Expect:期待服务器的特定行为
    From:用户的电子邮箱地址
    Host:请求资源所在服务器
    If-Match:比较实体标记(ETag)
    If-Modified-Since:比较资源的更新时间
    If-None-Match:比较实体标记(与 If-Match 相反)
    If-Range:资源未更新时发送实体 Byte 的范围请求
    If-Unmodified-Since:比较资源的更新时间(与If-Modified-Since相反)
    Max-Forwards:最大传输逐跳数
    Proxy-Authorization:代理服务器要求客户端的认证信息
    Range:实体的字节范围请求
    Referer:对请求中 URI 的原始获取方
    TE:传输编码的优先级
    User-Agent HTTP:客户端程序的信息

  • 响应首部字段
    Accept-Ranges:是否接受字节范围请求
    Age:推算资源创建经过时间
    ETag:资源的匹配信息
    Location:令客户端重定向至指定URI
    Proxy-Authenticate:代理服务器对客户端的认证信息
    Retry-After:对再次发起请求的时机要求
    Server:HTTP服务器的安装信息
    Vary:代理服务器缓存的管理信息
    WWW-Authenticate:服务器对客户端的认证信息

  • 实体首部字段:
    Allow:资源可支持的HTTP方法
    Content-Encoding:实体主体适用的编码方式
    Content-Language:实体主体的自然语言
    Content-Length:实体主体的大小(单位:字节)
    Content-Location:替代对应资源的URI
    Content-MD5:实体主体的报文摘要
    Content-Range:实体主体的位置范围
    Content-Type:实体主体的媒体类型
    Expires:实体主体过期的日期时间
    Last-Modified:资源的最后修改日期时间

  • 为Cookie服务的首部字段
    Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
    Cookie 服务器接收到的Cookie信息 请求首部字段

  • 实例:
    在这里插入图片描述

11、HTTPS的出现
  • HTTP的缺点:
    通信使用明文(不加密),内容可能会被窃听
    不验证通信方的身份,因此有可能遭遇伪装
    无法证明报文的完整性,所以有可能已遭篡改

HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。

与SSL组合之后的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议) 或 HTTP over SSL。它的出现就是为了解决HTTP安全性问题的。
HTTP 加上加密处理和认证以及完整性保护后即是HTTPS
HTTP+ 加密 + 认证 + 完整性保护 = HTTPS
在这里插入图片描述

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。
通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。
在这里插入图片描述
虽然HTTPS解决了HTTP的安全性问题,但是HTTPS 也存在一些问题,那就是当使用 SSL时,它的处理速度会变慢。通常来讲HTTPS比HTTP要慢2到100倍。
因此,在需要对通讯进行加密时我们使用HTTPS协议,在对数据不敏感通讯时使用HTTP为佳。

12、HTTP 与 HTTPS 的区别是什么

安全性质不同:HTTP 是不安全的,而 HTTPS 是安全的。
URL 开头不同:HTTP 以 http:// 开头,HTTPS 以 https:// 开头。
标准端口不同:HTTP 标准端口是 80 ,HTTPS 的标准端口是 443。
加密要求不同:HTTP 无需加密,而 HTTPS 对传输的数据进行加密。
证书要求不同:HTTP 无需证书,而 HTTPS 需要 SSL 证书。
工作效率不同:HTTPS要比HTTP慢,通常来讲HTTPS比HTTP要慢2到100倍。

13、基于HTTP追加的协议
  • 消除 HTTP 瓶颈的 SPDY 协议
    SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规定通信中使用 SSL。
    SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、Cookie 以及 HTTP 报文等。
    使用 SPDY 后,HTTP 协议额外获得以下功能。
    1、多路复用流
    2、赋予请求优先级
    3、压缩HTTP首部
    4、推送功能
    5、服务器提示功能

  • 使用浏览器进行全双工通信的 WebSocket
    WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。其中,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为标准。仍在开发中的 WebSocket 技术主要是为了解决 Ajax 和 Comet 里 XMLHttpRequest 附带的缺陷所引起的问题。
    旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML或图片等任意格式的数据。
    由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。
    WebSocket的主要特点是实时通讯、推送功能、减少通信量

  • 期盼已久的 HTTP 2.0
    HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。
    HTTP/2.0 没有采用文本格式,采用的是二进制格式。
    HTTP/2.0 采用的是完全多路复用机制,而非有序并阻塞的。
    HTTP/2.0 将报头进行压缩,降低了成本。
    HTTP/2.0 服务器主动将响应“推送”到客户端的缓存里面。

  • Web 服务器管理文件的 WebDAV
    WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。它作为扩展 HTTP/1.1 的协议定义在 RFC4918。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值