HTTP协议基础及发展历史

一、五层模型

HTTP协议基础及发展历史

1.物理层—数据链路层—网络层

  1. 物理层主要作用是定义物理设备如何传输数据
  2. 数据链路层在通信的实体间建立数据链路连接
  3. 网络层为数据在结点之间传输创建逻辑链路

2.传输层

  • 向用户提供可靠的端到端(End-to-End)服务
  • 传输层向高层屏蔽了下层数据通信的细节

3.应用层

  • 为应用软件提供了很多服务
  • 构建于TCP协议之上
  • 网络传输相关细节

二、HTTP—报文

1.HTTP—报文—起始行分析

HTTP协议基础及发展历史

2. HTTP方法

  • 用来定义对于资源的操作
  • 常用有GET、POST等
  • 从定义上讲有各自的语义

3. HTTP CODE(状态码)

  • 定义服务器对请求的处理结果
  • 各个区间的CODE有各自的语义

三、三次握手

1.HTTP和TCP

TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。

HTTP与TCP关系示意图:

HTTP协议基础及发展历史

2…三次握手

三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化***为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的***和确认号,交换TCP窗口大小信息。

刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。
进行三次握手:

  • 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化*** ISN。此时客户端处于 SYN_SENT 状态。

    首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。

  • 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化*** ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。

    在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。

  • 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。

在socket编程中,客户端执行connect()时,将触发三次握手。

三次握手图片示例:

HTTP协议基础及发展历史

三次握手动态图片示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSh3cGz0-1597968993227)(https://s1.ax1x.com/2020/08/20/d3vssK.gif)]

四、HTTP协议发展历史

1. HTTP/0.9

  • ​ 只有一个命令GET
  • ​ 没有HEADER等描述数据的信息
  • ​ 服务器发送完毕,就关闭TCP连接

2. HTTP/1.0

  • ​ 增加了很多命令
  • ​ 增加status code和header
  • ​ 多字符集支持、多部分发送、权限、缓存等

3. HTTP/1.1

  • ​ 持久连接
  • ​ pipeline
  • ​ 增加host和其他—些命令

4. HTTP/2

  • ​ 所有数据以二进制传输
  • ​ 同一个连接里面发送多个请求不再需要按照顺序来
  • ​ 头信息压缩以及推送等提高效率的功能

五、URI、URL、URN

  • URI :Uniform Resource Identifier,统一资源标识符;
  • URL :Uniform Resource Locator 统一资源定位符;
  • URN :Uniform Resource Name,统一资源名称。

​ 每个Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

HTTP协议基础及发展历史

上图显示了URI 是怎样指示HTTP 协议去访问Joe 商店服务器上的图片资源的。给定了URI,HTTP 就可以解析出对象。URI 有两种形式,分别称为URL 和URN。

统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

1.URL的标准格式:

  1. URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP 协议(http://)。

  2. 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。

  3. 其余部分指定了Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。

    现在,几乎所有的URI 都是URL。

2.URI

​ URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。比如,不论因特网标准文档RFC 2141 位于何处(甚至可以将其复制到多个地方),都可以用下列URN 来命名它: urn:ietf:rfc:2141

3.URN

源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。比如,不论因特网标准文档RFC 2141 位于何处(甚至可以将其复制到多个地方),都可以用下列URN 来命名它: urn:ietf:rfc:2141

3.URN

URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN需要一个支撑架构来解析资源的位置。

相关文章: