HTTP工作原理及案例解析

网络 网络管理
为了更好地理解 Web 浏览器和 Web 客户端的交互原理,我们可以研究一下浏览器是如何打开网页的。

当在 Web 浏览器中输入一个 Web 地址或统一资源定位符 (URL) 时,Web 浏览器将通过 HTTP 协议建立与服务器上的 Web 服务之间的连接。URL 和统一资源标识符 (URI) 是大多数人认为与 Web 地址相关联的名称。

http://www.cisco.com/index.html URL 是指向特定资源的一个 URL 示例;是服务器上名为 index.html 的一个网页,标识为 cisco.com。 单击各图查看 HTTP 使用的步骤。

Web 浏览器是计算机所使用的客户端应用程序类型,用来连接到万维网并访问 Web 服务器上存储的资源。 与大多数服务器进程一样,Web 服务器以后台服务的方式运行,并支持不同类型的文件。

Web 客户端首先连接服务器,然后发送资源请求,从而访问需要的资源内容。 服务器响应资源请求。浏览器对收到的资源进行解释,并将解释后的数据呈现给用户。

浏览器可以解释并显示很多种数据类型,如纯文本或构建网页的超文本标记语言。 但是,除此之外的其他数据类型需要其他服务或程序的支持,即我们常说的插件。 为便于浏览器识别所接受文件的类型,服务器应指定文件中包含的数据类型。

为了更好地理解 Web 浏览器和 Web 客户端的交互原理,我们可以研究一下浏览器是如何打开网页的。

在本示例中,请使用http://www.cisco.com/index.html URL。

首先,如图 1 所示,浏览器对 URL 地址的三个组成部分进行分析:

  • http(协议或方案)
  • www.cisco.com(服务器名称)
  • index.html(所请求的指定文件名)

然后,如图 2 所示,浏览器将通过域名服务器将 www.cisco.com 转换成到数字地址,用它连接到该服务器。 根据 HTTP 协议的要求,浏览器向该服务器发送 GET 请求并请求 index.html 文件。 服务器,如图 3 所示,将该网页的 HTML 代码发送到浏览器。 最后,如图 4 所示,浏览器解密 HTML 代码并为浏览器窗口格式化页面。

 

在万维网中,HTTP 是一种数据传输协议。同时,它还是现在最常用的应用程序协议。 最初它的开发只是为了发布和检索 HTML 页面;但是 HTTP 的灵活性使其成为分布式、协作型信息系统中一个至关重要的应用程序。

HTTP 是一种请求/响应协议。 当客户端,尤其是 Web 浏览器,发送请求到 Web 服务器时,HTTP 将指定用于该通信的消息类型。 常用的三种消息类型包括 GET、POST 和 PUT(如图所示)。

GET 是一种客户端数据请求消息。 客户端(Web 浏览器)向 Web 服务器发送 GET 消息以请求 HTML 页面。 当服务器收到 GET 请求时,会以一个状态行(如 HTTP/1.1 200 OK)和自己的一条消息做出响应。 来自服务器的消息可能包含所请求的 HTML 文件(如果存在),或者可能包含一个错误或信息性消息,比如“所请求文件的位置已更改”。

POST 和 PUT 消息用于向 Web 服务器上传数据文件。 例如,当用户将数据输入到嵌入网页的表单中时(比如在完成一个命令请求时),会发送 POST 消息到 Web 服务器。POST 消息中包含的是用户在表单中提交的数据。

PUT 用于向 Web 服务器上传资源或内容。 例如,如果用户尝试上传一个文件或图像到网站,一个附加了该文件或图像的 PUT 信息将从客户端发送到服务器。

虽然 HTTP 相当灵活,但不是一个安全协议。 由于消息以明文形式向服务器发送消息,它非常容易被拦截和解读。 与之相同的是,服务器的响应(通常是 HTML 页面)也不加密。

为了在 Internet 中进行安全通信,人们使用安全超文本传输 (HTTPS) 协议来访问或发布 Web 服务器信息。HTTPS 借助验证和加密来保护数据,使数据得以安全地在客户端与服务器之间传输。HTTPS 中还指定了应用层和传输层之间数据通信的附加规则。HTTPS 使用的客户端请求服务器响应过程与 HTTP 相同,但在数据流通过网络传输以前会使用安全套接字层 (SSL) 加密。 由于要对流量进行加密和解密,HTTPS 会在服务器上产生额外的负载和处理时间。

 

责任编辑:赵宁宁 来源: 厦门微思网络
相关推荐

2009-06-04 10:41:52

Struts工作原理

2012-06-29 13:54:11

Java内存原型

2015-10-14 14:11:45

HTTP网络协议

2015-12-02 14:10:56

HTTP网络协议代理原理

2015-12-02 15:29:32

HTTP网络协议代理原理

2010-06-08 12:37:25

HTTP协议工作原理

2015-01-27 14:47:52

http协议

2023-10-17 10:11:50

TCPIP

2009-08-03 12:40:46

ASP.NET编程模型

2018-09-18 10:13:37

2024-05-28 00:00:02

Java线程程序

2020-05-15 08:10:14

HTTP3应用协议

2015-03-17 09:44:08

2010-09-26 10:09:25

dhcp relay工

2011-04-07 15:32:25

2017-05-31 14:43:57

2010-08-27 09:45:49

CSS Sprites

2009-06-05 11:01:23

struts mvcMVC工作原理

2010-09-07 13:04:14

CSS Hack

2011-12-07 14:25:33

JavaNIO
点赞
收藏

51CTO技术栈公众号