你的柔情我不懂之Wed浏览器是如何工作的

The First:首先我们先来理解几个名词概念
互联网(Internet):凡是能彼此之间通信的设备组成的网络就叫互联网。互联网根据通信距离的远近和覆盖范围的宽广分为广域网(最远最广),城域网(其次),和局域网(最短最小)
以太网:一种计算机局域网的实现技术
因特网(Internet):是由千万台设备组成的网络。因特网使用TCP/IP协议让不同的设备可以彼此通信。但是使用TCP/IP协议的网络并不一定是互联网。
因特网提供的服务一般包括:www(万维网)服务、电子邮件服务(outlook),远程登录服务(QQ),文件传输服务(FTP),网络电话等等。
万维网:只要应用层使用了HTTP协议,就称为万维网。
总的来说就是互联网中包含着因特网,而因特网中有包含着万维网。我们生活在一个彼此互联的因特网的世界,我们每天使用不同的通过各种协议完成的网络设备,比如使用HTTP或者HTTPS协议的Wed应用,使用SMTP协议的邮件系统等等。
The Second:万维网( World Wide Web)框架
Wed 是一个遍布全球的计算机网络,网络中的计算机都使用HTTP的通信标准进行彼此间通信。
Web 信息存储于被称为网页的文档中,而网页则储存在Wed 服务器上,与之相对应的是类如浏览器的Wed 应用,被称为Wed 客户端。
我们通过Wed 客户端与服务器进行交互,完成我们的网上冲浪,而这一过程借助的就是PHP等服务器端的脚本语言。
The Third:接下来我们通过一次完整的网上访问来具体了解一下Wed 的工作过程
我们的探索之旅从在浏览器中输入网址开始,我们先来介绍一下网址,或者准确来说应该叫URL(统一资源定位符)。实际上来说它就是以http:// 开头的一串东西,当然,网址还可以以其他一些文字开头,例如“ftp:”“file:”“mailto:”等。这些文字实际上也就是浏览器应当使用的访问方法,或者说应当使用的协议。
之所以有各种各样的URL,是因为我们通常使用浏览器来访问Wed服务器,但是实际上来说浏览器并不只有这一个功能,它也可以用来在FTP服务器上下载和上传文件,同时也具备电子邮件客户端的功能。所以说它需要一些东西来判断应该使用其中的那些东西来访问相应的数据,而各种不同的URL就是用来干这个的,访问Wed服务器时用“http:”,访问FTP服务器时用“FTP:”。
根据访问目标的不同,URL的写法也会不同,在访问Wed服务器时,URL中会包含服务器的域名和要访问的文件的路径名等,具体格式如下图:
图片1.png
对于一个网址(这里仅讨论Wed服务器),浏览器要做的第一步工作就是对URL进行解析从而生成发送给Wed服务器的请求消息,具体的解析过程如下图所示:
图片2.png
Wed 服务器端
图片3.png
解析完URL之后,我们就知道应该要访问的目标在哪里了。接下来,浏览器会使用HTTP协议(超文本传输协议)来访问Wed服务器,那么HTTP协议又是怎么一回事呢?实际上HTTP协议的基本思路很简单,它定义了客户端和服务器之间交互的消息内容和步骤。首先客户端会向服务器发送请求消息,消息中包含的内容是“对什么”和“进行怎样的操作”两个部分。其中“对什么”的部分称为URI(统一资源标识符),例如“/dir1/file1.html”。也可以直接使用“http:”开头的URL来作为URI,换句话说就是这里可以写各种访问目标,而这些访问目标统称为URI。
接下来“进行怎样的操作”的部分称为方法,表示需要让Wed服务器完成怎样的工作,其中最常见的两种方法为GET和POST。
HTTP 基本思路
图片4.png
HTTP 的主要方法
图片5.png
这里再重点说一下GET方法和POST方法,一般当我们访问Wed服务器获取网页数据时,使用的就是GET方法。所谓的一般的访问过程,就是在请求消息中写上GET方法,与服务器之间的一些交互数据的传递通过URL地址进行,这在一定程度上增加了信息泄露的风险。而当我们在网上商城填写收货地址或者填写一些网上问卷时,经常会使用POST方法,很明显POST方法传递数据过程中,数据一般是不可见的,安全性更高一些,这也是其与GET方法最大的区别。另外强调一点,不管是GET方法还是POST方法,我们都可以借助表单来填写数据,而方法的区分只是在请求消息中进行标识的。
收到请求消息后,Wed服务器会对其中的内容进行解析,通过URI和方法来完成自己的工作,然后将结果存放在响应消息中,在响应消息开头会有一个状态码,用来标识Wed服务器执行相应工作的结果,我们浏览网页时常见到的404错误就是代表服务器找不到我们所请求的网页文件。其他状态码如下:
图片6.png
HTTP消息的格式:
图片7.png
客户端发送请求给服务器,服务器执行请求并返回执行结果,这就像我们去图书馆借书一样,你向图书管理员说,请给我一本书名叫什么什么的书,图书管理员需要先找到这本书在哪里,然后再拿出来给你。我们平时的上网过程其实简单来说都是这样完成的,但是这里还有两个问题需要给大家说明一下。

The Last:两个问题
第一个问题:世界上的Wed服务器那么多,我们是如何找到他们的?
其实很简单,比如我们要访问百度的一个页面,我们在浏览器中输入“http://api.map.baidu.com/lbsapi/getpoint/index.html”,实际上根据我们前面所说的,这个时候我们是要访问百度下的一个网页文件,而“api.map.baidu.com”就是我们要访问的存放有该网页文件的Wed服务器名,有了服务器名,浏览器还需要借助一个特殊的DNS服务器来解析这个服务器名,并以此来找到该服务器名的具体IP地址,因为我们知道IP地址是每一个主机在网络上的具体标识,这里我们可以ping 一下这个服务器名,来看一下它的IP地址:
图片8.png
可能平时我们会遇到这样一种情况,在访问百度时只需要输入“http://www.baidu.com”就行了,并没有指定要访问的具体的网页文件。
其实这里涉及到URL的省略问题:
(a)http://www.lab.glasscom.com/dir/
我们可以这样理解,以“/”结尾代表/dir/后面本来应该有的文件名被 省略了。根据URL的规则,文件名可以像前面这样省略。 不过,没有文件名,服务器怎么知道要访问哪个文件呢?其实,我们 会在服务器上事先设置好文件名省略时要访问的默认文件名。这个设置根 据服务器不同而不同,大多数情况下是index.html或者default.htm之类的 文件名。因此,像前面这样省略文件名时,服务器就会访问/dir/index.html 或者/dir/default.htm。 还有一些URL是像下面这样只有Web 服务器的域名的,这也是一种 省略了文件名的形式。
(b)http://www.lab.glasscom.com/
这个URL也是以“/”结尾的,也就是说它表示访问一个名叫“/”的 目录 A。而且,由于省略了文件名,所以结果就是访问/index.html或者 /default.htm这样的文件了。
(c)http://www.lab.glasscom.com
这次连结尾的“/”都省略了。像这样连目录名都省略时,真不知道到 底在请求哪个文件了,实在有些过分。不过,这种写法也是允许的。当没 有路径名时,就代表访问根目录下事先设置的默认文件 A,也就是/index. html或者/default.htm这些文件,这样就不会发生混乱了。 不过,下面这个例子就更诡异了。
(d)http://www.lab.glasscom.com/whatisthis
前面这个例子中,由于末尾没有“/”, 所以whatisthis应该理解为文件 名才对。但实际上,很多人并没有正确理解省略文件名的规则,经常会把 目录末尾的“/”也给省略了。因此,或许我们不应该总是将whatisthis作 为文件名来处理。一般来说,这种情况会按照下面的惯例进行处理:如果 Web 服务器上存在名为whatisthis的文件,则将whatisthis作为文件名来处 理;如果存在名为whatisthis的目录,则将whatisthis作为目录名来处理 B。
第二个问题:前端,后台和数据库之间的关系
实际上这并不是一个问题,咱们可以把它当成是一个完整的结构来看:
图片9.png
到这里我们的探索就完成了,实际上来说我们搭建的本地PHP环境,使我们本地主机成为了一台服务器,然后通过访问“http://localhost:8088/”,我们的主机相当于又扮演了客户端的角色,与自己本地的网页文件进行了交互。
欢迎访问阿威的博客https://www.cnblogs.com/TWX521/ 

欢迎访问阿威的简书https://www.jianshu.com/u/316a5e2577c0

专注技术与交流,stay hungry stay foolish

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Do NOT follow this link or you will be banned from the site!