php

网络知识一:Web浏览器

2020-07-02  本文已影响0人  爱学习的代代

在浏览器中输入网址,到屏幕上显示出网页的内容,在这个只有短短几秒的过程中,很多硬件和软件都在各自的岗位上相互配合完成了一系列的工作。
设计到的部分有:

  1. Web浏览器
  2. 协议栈、网卡
  3. 集线器、交换机、路由器
  4. 接入网,网络运营商(略)
  5. 防火墙、缓存服务器
  6. Web服务器

大部分的内容是来源于《网络是如何连接的》,其中会加入自己的一些理解,以及工作中的遇到的一些问题。

第一部分: Web浏览器

  1. web浏览器的作用主要是生成HTTP请求消息
  2. 向DNS服务器查询Web服务器的IP地址
  3. 全世界的DNS服务器大接力
  4. 委托操作系统的协议栈发送消息
1、生成HTTP消息

Q1: 当我们访问https://www.baidu.com/的时候,我们是访问什么?

访问项目根目录下的index.html 或default.html

image.png

Q2: HTTP消息的组成部分
浏览器的作用主要是生成HTTP消息。

Q3: 获取多个图片多个请求?

因为每条请求消息只能写一个URI,所以每次最多只能获取一个文件,如果要获取多个文件,就需要针对每个文件单独发送一条请求。

腾讯门户网站.png

Q4: 浏览器可以发送网络请求吗?

生成HTTP消息后,需要委托操作系统将消息发送给Web服务器。尽管浏览器有解析网址,并生成HTTP消息的功能,但它本身并不具备将消息发送到网络中的功能。

Q5: 什么是子网?什么是网络?

互联网和公司内部的局域网都是基于TCP/IP的思路来设计的。TCP和IP的结构如下图所示,就是有一些小的子网,通过路由器连接起来组成一个大的网络。这里的子网可以理解为用集线器连接起来的几台计算机,我们将他们看成一个单位,称为子网,将子网通过路由器连接起来,就形成了网络。

image.png

Q6: IP地址?

在网络中所有设备都会被分配一个地址,这个地址就相当于现实中的“xx号xx室”, 其中“号”对应的就是分配给整个子网的,而室是分配给子网中的计算机的,这就是网络中的地址。

Q7:消息的发送过程?

  1. 发送者发出的消息首先经过子网中的集线器
  2. 转发到距离发送者最近的路由器上,
  3. 路由器会根据目的地判断下一个路由器的位置
  4. 消息转发的下一个路由器(即消息再次经过子网中的集线器被转发到下一个路由器)
  5. 前面的过程不断重复,消息就被传送到了目的地。

Q8:实际的IP地址?子网掩码怎么来的?

我们知道IP地址是有网络号和主机号构成,但是我们常见的IP地址一般类似于为192.168.1.103这样的,仅凭借这个一串儿数字,我们无法区分那一部分是网络号,那一部分是主机号。

在IP地址的规则里,网络号和主机号总共是32比特,但两部分的具体结构是不固定的。在组件网络时,用户可以自行决定它们的分配关系,因此我们还需要另外的附加信息来表示IP地址的内部结构。这一个附加信息称为子网掩码

image.png

说明:子网掩码位1的部分说明是网络号,子网掩码为0的部分说明是主机号,即IP地址为上图中IP地址为10.1.2.3的网络号为 10.1.2 主机号为3

Note: 主机号部分全部为0或者全部为1代表的两种特殊的含义

Q9: 域名和IP地址并用的理由?
域名是给人使用的,而IP地址是给路由器使用的。如果根据域名来判断数据要发送的位置:IP地址的长度仅为32比特,即四个字节;相比较来说域名最短也要几十个字节,最长甚至可以达到255个字节。使用IP地址只需要处理4字节的数字,而使用域名则需要处理几十个甚至255个字节的字符,这增加了路由器的负担,传送数据也会发费更长的时间。为了填补两者之间的障碍,需要一个机制可以通过域名来查询IP地址,或者通过IP地址来查询域名,这样机器和人都无需做出牺牲的前提下完美解决问题,这个机制就是DNS。

Q10: 查询IP地址


image.png

DNS解析器实际上是一段程序,它包含在操作系统中的Socket库中,Socket库其中包含的组件可以让其他的应用程序调用操作系统的网络功能,而解析器就是和库中的其中一种程序组件。

Q11:全世界的DNS服务器大接力
所有的web服务器的IP地址信息,放在一台DNS服务器是不可能的。将信息分布保存在多台DNS服务器中,这些DNS服务器相互接力配合,从而查找出要查询的信息。

DNS服务器中的信息是按照域名分层次的结构来保存的,可以类比公司的集团、部门、科室。比如:www.lab.glasscom.com。大概就是:‘com事业集团glasscom部lab科的www’。域名使用英文句点分隔,域名越靠右,代表其层级越高。

其中相当于一个层级的部分称为.即com域的下一层是glasscom域, 再下一层是lab域,再下面才是www这个名字。

通过创建下级域的方式分配给不同的集团或公司使用。
比如:qq.com
weixin.qq.com(微信)
y.qq.com(qq音乐)

www.lab.glasscom.com.
根域: 域名最后的. 代表根域,不过一般域名不写最后的那个句点,因此根域往往被忽略。根域的DNS服务器中保存着com、cn等DNS服务器的信息。由于上级DNS服务器保存着所有下级DNS服务器的信息,我们可以根据根域一层一层向下查找任意域的DNS服务器。

既然找到根域的DNS服务器就可以向下查找了? 那怎么找到根域的DNS服务器呢? 这是需要做的另一项重要工作,就是将根域DNS服务器信息保存到存在互联网中所有的DNS服务器中,这样任何DNS服务器就可以找到并访问根域DNS服务器了。

  1. 客户端找到任意一台DNS服务器M
  2. DNS服务器M找到根服务器X
  3. 根服务器在根据域名,一层一层查找到位于下层的某台目标DNS服务器

Note: 分配给根域DNS服务器的IP地址在全世界仅有13个。(其实服务器的数量是很多的...)

image.png

Q12: 通过缓存可以加快DNS服务器的响应。

DNS服务器有缓存功能,会将之前查询过的域名记录下来,下次再去查询IP的时候,可以从缓存中直接获取IP地址。需要注意的是信息被缓存后,原本的注册信息可能会发生变化,这时候缓存中的信息就不正确了,因此DNS服务器中保存的信息都设置有一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。

上一篇下一篇

猜你喜欢

热点阅读