HTTP概述

HTTP概述

web通信

HTTP是现代全球因特网中使用的公共语言,Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。且因为HTTP使用的是可靠的数据传输协议(TCP),能够确保数据在传输过程中不会被损坏或产生混乱。

HTTP请求过程

最常见的HTTP客户端就是Web浏览器,如chrome、edge等,Web内容存储在Web服务器上,因使用HTTP协议,也会被称为HTTP服务器。

大致了解了通信过程,那么客户端是怎么发起请求?请求又是怎么找到对应的服务器?服务器又是怎么返回内容给客户端的呢?

报文格式

在互联网体系结构中,各层中报文在不同层中以不同的形式传递,因为不同报文格式不一样,每一层都需要协议来规定统一,这个协议的报文格式就是用来统一的工具,这样为了易于机器的传递与理解。

在应用层中的HTTP协议中便定义了请求报文和响应报文

报文格式包含以下三个部分:

  1. 起始行 : 在请求报文中说明要做什么,在响应报文中说明出现什么情况
  2. 首部字段 : name :value
  3. 主体 : 请求主体包含了发送给服务器的数据,响应主体装载了返回给客户端的数据。

说明了通信规则后,让我们来看看是怎么进行通信的。

在这里插入图片描述

连接

在互联网体系结构中,某一层不需要知道它的下一层是如何实现的,仅需要知道该层通过层间接口所提供的服务。HTTP是应用层协议,将联网的细节交给了通用、可靠的因特网传输协议TCP/IP

那么如何建立一条TCP/IP连接呢?

在HTTP双方通信之前,需要用网际协议(IP)地址端口号在客户端和服务器之间建立一条TCP/IP连接。这个地址和端口号的信息就在URL中。如

http://202.108.22.5:80/index.html

http://baidu.com:80/index.html

http://baidu.com/index.html

如果是使用域名,则会从DNS服务器中获取到对应的IP地址

如果URL中没有端口号,默认为80

在这里插入图片描述

资源

我们经常上网获取资源,这个资源也就是Web资源,储存在Web服务器中。资源分为

静态资源: 文本文件、HTML文件、JPEG以及AVI等

动态资源: 根据需要生成的内容

Web服务器会为所有HTTP对象附加一个MIME(Multipurpose Internet Mail Extension)类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,来确定应该如何处理该对象。

每个资源都需要有个名字(标识),以便于你在茫茫的网络海洋中找到你想要的资源。

URI

URI(Uniform Resource Identifier,统一资源标识符)是一种概念,可以定位到唯一资源的名字都可以称为URI。目前URI有两种形式:URL、URN

URL

URL(Uniform Resource Location,统一资源定位符),是资源标识符最常见的形式,它描述了一台特定服务器上的某资源的特定位置。大部分的URL都遵循以下的标准格式

  • URL的第一部分被称为方案,说明了访问资源所使用的协议类型。如http://, https://
  • 第二部分是服务器的因特网地址
  • 剩余部分指定了Web服务器上的某个资源

http:// (方案) www.baidu.com (因特网地址 ) /zhidao/index.html (资源)

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

URN

URN(Uniform Resource Name,统一资源名),作为特定内容的唯一名称使用,与资源的所在地无关。使用这些位置无关的URN,就可以将资源四处转移,还可以通过原有URN定位,另外还可以使用多种网络访问协议来访问资源。

当然,URN不可能平白无故的就可以定位到四处移动的资源位置,它需要一个支撑架构来解析资源的位置,而这类架构的缺乏延缓了URN的应用进度。但URN确实为未来带来些期待,大家可以不用担心因网站的迁移,导致访问原有珍藏的URL,得到的却是404页面了。

协议版本

我们展望了未来,现在也来回顾一下历史。

主要说一下目前使用的HTTP版本

HTTP/1.0

1.0是HTTP第一个得到广泛使用的版本。1.0 中添加了版本号、各种HTTP首部、一些额外的方法,以及对多媒体对象的处理。1.0 规定浏览器与服务器只保持短暂的链接,浏览器的每次请求都需要与服务器建立一个TCP连接。请求一个资源所需的时间是该资源的传输时间 + 两倍往返时间RTT(一个RTT用于TCP连接,一个RTT用于请求和接收资源)

这也就意味着,每请求一个资源就要有两倍的RTT开销,而如今的服务器往往需要同时服务于大量客户的请求,每一次链接下载都导致两倍RTT的开销。另外,客户端和服务器每一次建立新的TCP连接都需要分配缓存和变量。这种非持续连接会使服务器的负担很重,这也是1.0的主要缺点。

HTTP/1.1

1.1协议较好地解决了这个问题,它是用持续连接,也就是服务器在发送响应后,仍然在一段时间内保持这条连接,使同一个客户端和该服务器可以继续在这条连接上传输后续的HTTP请求报文和响应报文。目前一些流行的浏览器的默认设置就是使用1.1的协议。

HTTP/1.1协议的持续连接有以下两种工作方式

非流水线方式:客户端在收到前一个响应之后才能发起下一个请求,因此在TCP连接建立猴,客户端每访问一次对象对咬用去一个RTT时间,相比于1.0节省了一次建立TCP连接所需要的一个RTT时间。但这种方式有个缺点,即服务器在发送完一个对象后,连接就处于空闲状态,浪费了服务器资源。

流水线方式:客户端在收到服务器的响应报文前,就可以接着发送新的请求。一个接一个的请求报文抵达服务器之后,服务器就可以连续的发回响应报文。这样的工作方式使的TCP连接中的空闲时间减少,减少了摸鱼时间,那么下载资源的效率自然就提高了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值