首页 / HTTP协议深入了解 / HTTP基础知识 / HTTP基础知识:Web客户端和服务器端是如何进行通信的

HTTP基础知识:Web客户端和服务器端是如何进行通信的

Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP是现代全球因特网中使用的公共语言。

HTTP协议:Hyper Text Transfer Protocol 翻译成中文就是,超文本传输协议。当我们使用浏览器浏览网页,网络爬虫对网站进行抓取采集的时候,使用的协议都是HTTP协议。HTTP为客户端的请求和服务器端的应答提供一个标准。这个标准使其在传输过程中确保数据不被损坏或者产生混乱。

当我们使用HTTP客户端浏览网页时,浏览器向服务器发送了一条HTTP请求。服务器然后寻找期望寻找的对象,如果请求成功。则服务器返回对象类型,对象长度等一些信息放在HTTP响应报文中。通过浏览器控制台的Network即可查看请求类型和响应结果。

以本地服务器为例。我在自己的电脑上搭建了PHP的开发环境,然后在浏览器网址输入http://localhost/index.php。通过Network我们可以看到如下图的信息。

从图中我们可以看到请求URL为:localhost/index.php,请求方法Request Method:为GET方法。Status Code 服务器返回的HTTP状态码为200,表示请求成功。Remote Address 请求的远程地址为:locahost:80。

其中Response Headers为服务器响应头部信息,Request headers为请求头部信息。整个流程非常简单,就是客户端请求,然后服务器响应。

A.资源

在这个过程中,请求的localhost/index.php的index.php即为资源。当我们进行http连接的时候,其实就是请求服务器上的资源文件。例如index.html、图片文件、视频文件等静态文件,也有可能是像PHP这类脚本语言所生成的静态文件。总之,进行HTTP请求,就是请求资源(Web Resource)。

B.资源类型

既然有资源,那就有资源类型。HTTP协议会给每种通过Web传输的对象都打上名为MIME类型(MIME Type)的数据格式标签,全称为 Multipurpose Internet Mail Extension,多用途因特网邮件扩展)。MIME Type即为多用途因特网邮件扩展类型。

Web服务器服务器会为所有HTTP对象数据附加一个MIME类型,当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型,例如:显示图片,解析HTML标签,播放视频等。

MIME Type是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔:

  1. HTML格式的文本文档由text/html类型来标记
  2. 普通的ASCII文本文档由text/plain类型来标记
  3. JPEG版本的图片为image/jpeg类型
  4. GIF为image/gif类型
  5. Apple的Quicktime电影为video/quicktime类型
  6. 更多MIME TYPE可以访问 MDN 或者W3c

C.URI (Uniform Resource Identifier,统一资源标识符)

在请求index.php过程中,http://localhost/index.php就可以称为统一资源标识符。统一资源标识符是唯一的,在全球范围内都不会重复。就像域名是唯一的,IP是唯一的一样。

URI统一资源标识符有两种形式,分别为URL和URN。

  1. URL-Uniform Resource Locator 统一资源定位符
  2. URN-Uniform Resource Name 同一资源名

URL统一资源定位符公分为三个部分:

第一部分:方案(scheme),说明访问了资源所使用的协议类型。该部分就是HTTP协议

第二部分:域名 例如 www.baidu.com,www.taobao.com

第三部分:资源 例如index.php,或者在某个目录下,例如:images/a.gif

URN 统一资源名

统一资源名是独立的,和所在位置没有关系。通俗的讲就是资源的命名。

D.事务

一个HTTP事务由一条HTTP请求和一个响应结果组成。这种通信是通过名为HTTP报文的格式化数据块进行的。第一张图即为HTTP报文。

E.方法 HTTP method

每一条HTTP请求都有一个方法,这个方法会告诉服务器执行什么动作,例如:GET,POST,PUT,DELETE,HEAD。经常用到的就是GET和POST。

F.状态码 HTTP State Code

第一张图中我们可以看到,请求成功后的状态码为200。状态码后面的OK为解释性短语。例如404,经常看到Not Found的解释短语。

G.资源集,web复合页面

在一个页面中肯定不会只是一种资源类型,而是包含多种嵌入性资源。例如多张图片,多个视频。而这些资源类型都会有一个响应的HTTP事务。

H.报文 HTTP message

在第一张图中我们看到的就是HTTP报文。HTTP报文即为一行行纯文本字符串。

客户端发送给服务端的报文为Request Message请求报文。

服务端发送给客户端的报文为Response Message响应报文。第一张图片中的General 为响应报文的一部分。

I.TCP/IP 传输控制协议

HTTP协议的传输是要基于TCP/IP协议来进行传输报文的。TCP(Transmission Control Protocol)即为传输控制协议,IP(Internet Protocol)为网络协议地址。TCP/IP传输协议保证了数据的传输的无差错、按需传输、为分段的数据流。

所有的过程协议可以这样阐述:HTTP(应用层) => TCP(传输层) => IP(网络层) => 网络特有的链路接口 (数据链路层)=> 物理网路硬件(物理层)。

J.Web的结构组件(代理,缓存,网关,隧道,Agent代理)

1.代理 proxy,在服务器和客户端之间有一个中间层就是用户代理,这个用户代理会接受所有的HTTP请求,并将这些请求转发给服务器。

2.缓存 cache,web缓存(web cache)或代理缓存(proxy cache)是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档保存起来。如果再次请求,则会调用缓存中的文件。例如:css文件,js文件等。

3.网关 gateway,网关是一种特殊的服务器,是其他服务器的中间实体。例如HTTP/FTP网关会通过HTTP请求接受对FTP URI的请求,但通过FTP协议来获取文档。得到的文档会被封装成一条HTTP报文,发送给客户端。

4.隧道 tunnel,隧道是连接建立之后,在两条连接之间对原始数据进行忙转发的HTTP应用程序。HTTP隧道通常用来在一条或者多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。

5.Agent代理即为用户代理。用户代理代替用户发送http请求。例如浏览器,web爬虫统称为用户代理。

K.总结:Web客户端和服务器端是如何进行通信的


知道了以上知识,接下里笔者在这里总结一下。web客户端和服务器端是如何通信的。首先HTTP基于TCP/IP协议通过客户端代理(浏览器)发送一个HTTP请求。www.example.com:80/index.html。在index.html文件内包含多个资源,每一个资源对应一个HTTP事务,并且每个资源都一个MIME Type。中间代理服务器转发这些请求给源服务器。在此期间,DNS服务器会把域名转为IP地址对服务器进行请求。服务器返回响应报文,客户端浏览器对HTTP报文进行解析后渲染页面,并且根据每个资源MIME Type来进行处理。如果再次访问该资源,一些静态资源会从缓存中直接获取。而无需请求服务器。这就是Web客户端和服务器端进行通信过程的简单阐述。

声明:转载请注明原文地址及作者姓名。 作者:Glary Joker 文章地址://glaryjoker.com/article/5.html
上一篇:已经是最后一篇了

评论

登录后评论.