一. 浏览器生成消息 --探索浏览器内部

从在浏览器中输入网址,到屏幕上显示出网页的内容,在这个只有几秒钟的过程中,很多硬件和软件都在各自的岗位上相互配合完成了一系列的工作。我们将以探索之旅的形式,一起探索这一系列工作中的每一个环节。如下图:
在这里插入图片描述

一. 浏览器生成消息 --探索浏览器内部

1.生成http请求消息

首先在浏览器输入网址,也就是URL,常见的URL如下图:
在这里插入图片描述
之后浏览器会先解析URL,确定下来WEB服务器和文件名,然后根据这些信息来生成发送给服务器的请求消息;

2.向DNS服务器查询web服务器的IP地址

首先IP地址是用来确定数据传输的路线的:
在这里插入图片描述
IP地址的结构如下图:
在这里插入图片描述
查询IP地址只要向DNS服务器发送请求消息并得到回复就行了;所以本地必有一个DNS客户端,被称为DNS解析器;解析器实际上是一段存在操作系统Socket库中的程序,而这个库就是调用网络功能的程序组件集合;

调用解析器的方法如下:
在这里插入图片描述
接下来,浏览器在向Web服务器发送消息时,只要从该内存地址取出IP地址,并将它与HTTP请求消息一起交给操作系统就可以了。

ps:解析器的内部原理
在这里插入图片描述
向DNS服务器发送消息时,我们当然也需要知道DNS服务器的IP地址。只不过这个IP地址是作为TCP/IP的一个设置项目事先设置好的,不需要再去查询了,如下图:
在这里插入图片描述
3.全世界DNS服务器大接力

DNS服务器的基本工作就是接收来自客户端的查询消息,然后根据消息的内容返回响应:
在这里插入图片描述
(a)域名
服务器、邮件服务器(邮件地址中@后面的部分)的名称。
(b) Class
在最早设计DNS方案时,DNS在互联网以外的其他网络中的应用也被考虑到了,而Class就是用来识别网络的信息。不过,如今除了互联网并没有其他的网络了,因此Class的值永远是代表互联网的IN。
(c)记录类型
表示域名对应何种类型的记录。例如,当类型为A时,表示域名对应的是IP地址;当类型为MX时,表示域名对应的是邮件服务器。对于不同的记录类型,服务器向客户端返回的信息也会不同。

虽然图中展示的是表格形式,但实际上这些信息是保存在配置文件中的,表格中的一行信息被称为一条资源记录。

然而,互联网中存在着不计其数的服务器,将这些服务器的信息全部保存在一台DNS服务器中是不可能的,而是将信息分布保存在多台DNS服务器中,这些DNS服务器相互接力配合,从而查找出要查询的信息。

互联网中有数万台DNS服务器,肯定不能一台一台挨个去找。而是将负责管理下级域的DNS服务器的IP地址注册到它们的上级DNS服务器中,然后上级DNS服务器的IP地址再注册到更上一级的DNS服务器中,以此类推。也就是说,负责管理lab.glasscom.com这个域的DNS服务器的IP地址需要注册到glasscom.com域的DNS服务器中,而glasscom.com域的DNS服务器的IP地址又需要注册到com域的DNS服务器中。这样,我们就可以通过上级DNS服务器查询出下级DNS服务器的IP地址,也就可以向下级DNS服务器发送查询请求了。

将根域的DNS服务器信息保存在互联网中所有的DNS服务器中。这样一来,任何DNS服务器就都可以找到并访问根域DNS服务器了。而分配给根域DNS服务器的IP地址在全世界仅有13个,而且这些地址几乎不发生变化,因此将这些地址保存在所有的DNS服务器中也并不是一件难事。实际上,根域DNS服务器的相关信息已经包含在DNS服务器程序的配置文件中了,因此只要安装了DNS服务器程序,这些信息也就被自动配置好了。
在这里插入图片描述
此外,有时候并不需要从最上级的根域开始查找,因为DNS服务器有一个缓存功能,可以记住之前查询过的域名。如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行。相比每次都从根域找起来说,缓存可以减少查询所需的时间。

而原本的注册信息可能会发生改变,这时缓存中的信息就有可能是不正确的。因此,DNS服务器中保存的信息都设置有一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。

4.委托协议栈发送消息

知道了IP地址之后,就可以委托操作系统内部的协议栈向这个目标IP地址,也就是我们要访问的Web服务器发送消息了。向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用Socket库中的程序组件:
在这里插入图片描述
其中套接字相当于数据的出入口;而这一步只是一个委托的操作,具体协议栈怎么完成数据传输在之后讨论;

5. 说明

本文为《网络是怎样连接的》读书笔记,如有错误,还请兄弟们指正,大家一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值