浏览器与Web服务器的连接过程(一)

    技术2025-10-02  8

    当输入一个网址时,浏览器会按照一定的规则去分析这个网址的含义,然后生成请求消息;例如在浏览器输入下面的网址: http://www.lab.glasscom.com/sample1.html;在这个链接输入到浏览器后,浏览器生成的请求消息表示“请给我sample1.html这一文件中存储的网页数据”,然后浏览器会将请求消息发送给Web服务器,传输消息是搬运数字消息的机制负责的工作,浏览器会委托操作系统中的网络控制软件将消息发送到服务器

    生成HTTP请求消息

    从输入网址开始 网址,准确的应该叫 URL。也就是http://开头的那一串链接,有各种各样的URL,例如常见的URL有:ftp://、**http://**等,以这些字符为开头的链接具备不同的功能,ftp:// 可以用来上传和下载服务器文件,访问Web服务器时使用http://,根据访问目标的不同,URL的写法也会不同。URL中会包含服务器的域名和要访问的文件的路径名,还会包含用户名和密码、服务器端口号等信息 下图中列举了互联网中几种常见的URL: URL的各种格式

    URL有许多不同的写法,但有一共同的点就是URL开头的文字,就像”http“,"ftp"这些,这部分文字都表示浏览器应当使用的访问方法,可以把这部分理解为访问时使用的协议(protocol)类型。

    浏览器解析URL

    在输入链接到浏览器后,浏览器就对URL进行解析,从而生成发送给Web服务器的请求消息。URL的格式随着协议(也就是链接开头的那串文字)的不同而不同。 下面以访问Web服务器的情况讲述解析过程 根据HTTP规格,URL中包含如下图的几种元素 当对URL进行解析时,需要将链接按照上图的格式将其各个元素进行拆分出来,通过拆分出来的这些元素,浏览器既能够明白URL中表达的含义。

    URL:Uniform Resource Locator,统一资源定位符

    省略文件名的情况

    URL省略文件名的三种情况 (1)有这样的URL,URL结尾是以”/“来结尾的: http://www.lab.glasscom.com/dir/,以”/“结尾的代表 /dir/ 后面本来应该有的文件名被省略。没有了文件名,服务器上会事先设置好文件名省略时需要访问的默认文件名,大多数的Web服务器都以 index.html 之类的文件作为省略文件名时默认的访问文件。比如上面的URL:http://www.lab.glasscom.com/dir/,在没有写明需要访问的文件时,服务器就自动返回index.html之类的文件。 (2)还有一种情况就像这样的:http://www.lab.glasscom.com/,这个URL也是以“/”为结尾,就是说访问一个名叫“/”目录,所以这个也是访问index.html之类的默认访问文件。 (3)还有一种情况,就像这个URL格式:http://www.lab.glasscom.com/whatisthis ,像这样的情况,在We服务器上如果存在名为whatisthis的文件就将作为文件名来处理,如果whatisthis是一个目录就将作为目录名来处理,其实还有一种处理方式就是在开发的时候,像http://www.lab.glasscom.com/whatisthis这样的URL可以使用映射来处理,whatisthis为映射名,将映射到一个文件上

    浏览器的第一步工作就是对URL进行解析

    HTTP的基本思路

    在解析完URL后,浏览器已经知道使用什么协议来访问Webf服务器了,还是之前的例子,在解析完前文提到的URL后,浏览器会使用HTTP协议访问Web服务器。接下来讲讲HTTP的基本思路: 客户端会向服务器发送请求消息。请求消息中包含的内容是“对什么”和“进行怎样的操作”两部分。其中“对什么”就是 URI,URL的内容就是一个存放网页数据的文件名,例如“/dir/file.html”,但URI不仅限与此,还有直接使用“http:”开头的URL作为URI。“进行怎样的操作”的称之为 方法,方法表示需要让Web服务器完成什么样的工作,包括读取URI表示的数据,将客户端输入的数据发送到URI表示的程序等。

    HTTP的主要方法 Web服务器收到请求的消息后,会对其中的内容进行解析,通过URI和方法判断“对什么”“进行什么样的操作”,然后将结果存放在响应消息中,在响应消息的开头有一个状态码,用来表示操作的执行结果成功还是出现了错误,状态码后面是头字段和网页数据。响应消息发送给客户端,客户端收到后从响应消息中读取数据并显示。HTTP的整个工作完成。 在HTTP方法中,最常用的一个方法是 GET 方法。一般访问Web服务器获取网页数据时,使用的就是GET方法。 在请求消息中写上GET方法,然后在URI中写上存放网页数据的文件名“/dir/file.html”,表示我们需要获取“/dir/file.html”文件中的数据,当Web服务器拿到请求消息后,会打开“/dir/file.html”文件并读取里面的数据,然后将读取到数据存入响应消息中,返回给客户端。 在上面的表格中还有一个常用的方法:POST,在表单中填写数据时将其发送给Web服务器时会使用这个方法。使用POST方法时,URI会指定Web服务器中的一个运行程序的文件名,然后在请求消息中除了方法和URI外,再加上传递给应用程序和脚本的数据当服务器收到消息后,Web服务器会将请求消息中的数据发送给URI指定的应用程序,Web服务器从应用程序接收输出结果,会将结果存入响应消息中并返回给客户端

    生成HTTP请求消息

    在对URL进行解析后,浏览器确定了Web服务器和文件名,接下来就是根据这些信息生成HTTP请求消息。 下面说一说HTTP请求消息的格式。 请求消息的第一行称为请求行。请求的重点是最开头的方法,方法告诉Web服务器它应该进行怎样的操作。方法有很多种,这里需要判断出应该选用哪种方法,这个问题的解决关键在于浏览器的工作状态,选用哪种方法是根据场景来确定的;如果是在地址栏上输入地址那么就是使用GET方法,如果是在表单中,那么可能是GET或是POST。 写好方法后,加一个空格,然后写URI。URI部分的格式一般是文件和程序的路径名。/<目录名>/..../<文件名>,请求行的末尾需要加上HTTP的版本号,表示该消息是基于哪个版本的HTTP规格编写的。请求行到此结束。 接下来是消息头。消息头的规格中定义了很多项目,例如日期、客户端支持的数据格式、语言、压缩格式、客户端和服务器的软件名和版本、数据有效期和最后更新时间等。 消息头的各个字段名其含义 写完消息头后,需要加一个空行,然后写上消息体,在使用GET方法的情况下,仅凭方法和URI,Web服务器就能够判断出需要怎样的操作,因此在这种情况下消息体不需要填写任何数据,在消息体结束后整个请求消息结束。当使用POST方法时,需要在表单中填写的信息写在消息体中。

    收到响应消息

    请求发送出去后,Web服务器会返回响应消息。在响应消息中,第一行的内容为状态码 和响应短语 ,用来表示请求的执行结果是成功还是出错。状态码是一个数字,主要用来向程序告知执行的结果;响应短语是一段文字,用来告知执行的结果。 HTTP状态码 返回响应消息后,浏览器会将数据取出并显示,如果网页只有文字,那么这里就已经全部处理完毕,如果网页中有图片等,会在网页中相应的位置嵌入表示图片文件的标签的控制信息。

    标签:编写网页所使用的 HTML 语言中规定的控制信息。例如,当需要在网 页中插入图片时,需要在相应位置嵌入形如 的标签

    由于每条请求消息中只能写一个URI,所以每次只能获取一个文件,如果需要获取多个文件,必须对每个文件单独发一条请求。这里Web服务器并不知道这个URI中有几条请求文件的请求,Web服务器就是对每一条单独的请求返回一条响应而已。 到这里浏览器和Web服务器进行交互的过程就已经全部完成

    Processed: 0.014, SQL: 9