HTTP到底是什么?


HTTP简介

HTTP 全称为 Hypertext Transfer Protocol,翻译为中文是“超文本传输协议”的意思,它是互联网中应用最为广泛的一种网络协议。自 1990 年万维网(也就是互联网)诞生以来,HTTP 就成为万维网通信的基础协议。HTTP 协议是由万维网之父蒂姆·贝纳斯·李(Tim Berners-Lee)提出的,随后他还成立了万维网联盟(WWW Consortium),并组织了 IETF(Internet Engineering Task Force)小组来进一步完善和发布 HTTP 协议。
在这里插入图片描述

HTTP 是一个简单的请求/响应协议,通常运行在 TCP(Transmission Control Protocol 的简称,是一种面向连接的、可靠的、基于字节流的传输层通信协议)之上。HTTP 协议指定了客户端能够发送什么样的消息给服务端,以及服务端要做出怎样的响应。

HTTP 协议是基于 B/S 架构(全称为 Browser/Server,中文是浏览器/服务器的意思)进行通信的,协议中服务器端的实现程序主要是 httpd、nginx 等,客户端的实现程序通常是 Web 浏览器,例如 Firefox、Google chrome 等。服务器端的服务是基于 TCP 的,因此为了能够随时响应客户端的请求,服务器会默认监听 TCP 协议的 80 端口,当然后期您也可以修改为其它端口。

HTTP 协议为计算机之间的通信提供了一种标准和规范,它规定了:

  • 如何构造客户端的请求数据(也称报文);
  • 如何将请求数据发送到服务器;
  • 服务器端如何响应客户端的请求。

总的来说,HTTP 协议规定了万维网时代计算机通信的完整流程以及各种细节。

HTTP协议的特点

1) 简单快速

HTTP 协议支持客户端、服务器端模式,简单快速,当客户端向服务器端发送请求时,只需要传送请求方法和路径即可,常用的请求方法有 GET、HEAD、POST 等,每种方法都定义了客户端与服务器之间不同的信息交换方式。

2) 灵活

HTTP 允许传输任意类型的数据对象,包括音频、视频、图片、文本等等。

3) 无连接

HTTP 是无连接的,当服务器接受到来自客户端的请求后,会按顺序依次处理这些请求,处理完成一个就关闭一个,然后开始处理下一个请求。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,随即断开连接,采用这种方式可以节省传输时间。

4) 无状态

HTTP 协议是无状态协议,无状态是指协议对于信息的处理没有记忆能力。也就是说来自同一个客户端的多个请求之间没有上下文关系,每次的请求都是独立的,一次请求的执行情况和结果与它前面的请求或后面的请求没有直接关系。

服务器中并不会保存客户端的状态,也就意味着如果后续处理中需要用到前面的信息,那么您就需要将它重新发送到服务端,这样可能会导致每次连接传送的数据量增大。但从另一方面来讲,如果服务器不需要先前信息时它的响应就会比较快。

HTTP协议的发展历程

1) HTTP/0.9

HTTP/0.9 是 1991 年 HTTP 的原型版本,这个版本的协议存在许多设计缺陷并且只能使用老旧的客户端进行操作。

HTTP/0.9 只支持 GET 方法,而且响应信息中只有数据,没有版本号、状态码、响应头等信息,并且不支持使用 MIME 类型来指定多媒体内容。

HTTP/0.9 原本是用来获取简单的 HTML 数据对象的,所以很快就被 HTTP/1.0 所取代。

2) HTTP/1.0

在 1996 年,TimBerners-Lee 提出了 HTTP/1.0,它是第一个被广泛使用的版本。在此后的不断丰富和发展中,HTTP/1.0 成为最重要的面向事务的应用层协议。其特点是简单、易于管理,符合了大家的需要,得到了广泛的应用。

HTTP/1.0 几乎可以传输任何类型的文件,这使得我们在网页中不仅可以展示文字,还可以展示图像、音频、视频等二进制文件,这为互联网的兴起奠定了基础。

3) HTTP/1.1

HTTP/1.1 是目前我们所使用的版本,它纠正了 HTTP 在设计上的缺陷,规范了语义,引入了重要的性能优化,去除了某些错误的功能。并且它还为更加复杂的 Web 应用程序提供支持。

4) HTTP/2.0

HTTP/2.0 又称为 HTTP/NG,它是下一代 HTTP 协议,目前应用还非常少。HTTP/2.0 使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比 HTTP/1.1 大了好几个数量级。

HTTP/2.0 是一个二进制协议,头信息和数据体都是二进制,并且统称为“帧”(frame),即头信息帧和数据帧。而且 HTTP/2.0 协议允许服务器在未经请求的情况下,主动向客户端发送资源,即服务器推送。

HTTP的工作流程

一次完整的 HTTP 请求与响应的过程(请求和响应缺一不可)称为一个 HTTP 事务,其过程大致可分为四步:

  1. 首先客户端与服务器需要建立连接,比如当我们单击网页中的某个链接时;
  2. 建立连接后,客户端向服务器发送一个请求;
  3. 服务器在接收到请求后,给予相应的响应信息;
  4. 客户端接收到服务器所返回的信息后与服务器断开连接。

提示:如果以上过程中的某一步出现错误,那么服务器会将产生错误的信息返回给客户端。对于用户来说,这些过程都是由 HTTP 自己完成的,我们只要用鼠标点击,等待信息显示就可以了。
客户端与服务器之间的 HTTP 连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要是因为服务器要面向成干上万个网络中用户,而且服务器只能提供有限个连接,所以服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

HTTP 是一种无状态协议,即服务器不保留与客户端连接时的任何状态。这就大大减轻了服务器的记忆负担,从而保持较快的响应速度。HTTP 是一种面向对象的协议,允许传送任意类型的数据对象,它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。

HTTP 规范定义了 9 种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是 GET 和 POST。服务器将根据客户请求完成相应操作,并将最终结果返回给客户端,最后关闭连接。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我了解了。关于您的问题,整个过程可以分为以下几个步骤: 1. 输入URL:当您在浏览器地址栏中输入URL时,浏览器会将该URL发送到域名系统(DNS),通过域名系统将URL转化为IP地址。 2. 发送HTTP请求:浏览器根据URL发起HTTP请求,请求访问Web服务器的特定资源。 3. 服务器响应:当Web服务器接收到请求时,它将处理请求并返回所请求的资源。 4. 浏览器渲染:浏览器收到服务器响应后,它将解析HTML源代码,并根据CSS样式表和JavaScript代码来渲染页面。 5. 页面展示:最终,浏览器将HTML、CSS和JavaScript代码解析完毕后,它会在屏幕上展示出页面内容。 以上就是从输入URL到页面展示的整个过程,希望能够帮到您。 ### 回答2: 当我们在浏览器的地址栏中输入URL时,整个过程可以分为以下几个步骤: 1. DNS解析:浏览器首先会根据URL中的域名(例如www.example.com)进行DNS解析,将域名解析为对应的IP地址。这一步骤是为了找到存放网页的服务器。 2. 建立TCP连接:浏览器通过IP地址与服务器建立TCP连接。TCP协议提供可靠的连接,确保数据的完整性。 3. 发起HTTP请求:一旦建立了TCP连接,浏览器会向服务器发起HTTP请求,请求包括请求方法、请求头、请求体等信息。请求方法可以是GET、POST等,服务器根据请求的不同做出相应的响应。 4. 服务器处理请求并响应:服务器接收到浏览器的请求后,会根据请求的内容进行相应的处理。处理包括读取数据库、执行后端代码等操作。之后,服务器会生成响应对象,包含响应状态码、响应头、响应体等信息。 5. 接收服务器响应:浏览器接收到服务器的响应后,根据响应头中的Content-Type确定响应的数据类型。如为HTML类型,则浏览器会将响应的HTML代码解析成DOM树。 6. 解析页面并渲染:浏览器根据DOM树构建渲染树,并依据CSS样式对各元素进行布局和样式计算,最终生成页面的渲染结果。同时,浏览器也会执行页面中的JavaScript代码。 7. 页面展示:最后,浏览器将渲染好的页面内容显示在用户的视窗中,用户可以看到页面的展示效果。 总结起来,从输入URL到页面展示,经历了DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求并响应、接收服务器响应、解析页面并渲染等多个步骤。最终,浏览器将渲染好的页面内容显示给用户。 ### 回答3: 从输入URL到页面展示,大致经历如下步骤: 1. 域名解析:当我们在浏览器中输入URL后,首先会进行域名解析。浏览器会向DNS服务器发送域名请求,获取该域名对应的IP地址。 2. 建立连接:浏览器通过获取到的IP地址与Web服务器建立TCP连接。这个过程使用的是三次握手协议,确保连接的可靠性。 3. 发送请求:建立连接后,浏览器会发送HTTP请求给Web服务器,请求的内容包括请求的类型(GET/POST等)、地址、头部信息、可能还包括cookie等相关信息。 4. 服务器处理请求:Web服务器收到请求后,会根据请求内容进行处理。处理过程可能包括调取数据库、运行后台程序等动作。 5. 服务器响应:Web服务器根据请求的内容,返回一个HTTP响应给浏览器。响应的内容包括状态码、响应头部、实际的网页内容等。 6. 下载页面资源:浏览器接收到服务器返回的响应后,会开始下载网页的资源,如HTML、CSS、JavaScript、图片等。浏览器会根据响应头部中的Content-Type确定如何解析资源。 7. 页面渲染:当所有的资源下载完成后,浏览器会根据HTML结构、CSS样式,解析并渲染出网页。浏览器会从上到下解析HTML文档,解析过程包括构建DOM树、计算CSS样式、布局页面等。 8. JavaScript执行:在渲染过程中,浏览器会遇到JavaScript代码。浏览器会逐行解析执行JavaScript代码,并根据代码修改DOM树和样式,可能还会触发网络请求等。 9. 页面展示:当页面渲染和JavaScript执行完成后,页面便可以完整地展示给用户了。用户可以看到页面内容,与页面进行交互。 以上仅是一个大致的过程,实际上还有很多细节和额外的步骤,比如缓存机制、重定向、Cookie处理等等。不同的浏览器、服务器也可能会有些许差异。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梁辰兴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值