想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题。
还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个问题。
这次,小林我带大家一起探究下,一个数据包在网络中的心路历程。
每个阶段都有数据包的「心路历程」,我们一起看看它说了什么?
正文接下来以下图较简单的网络拓扑模型作为例子,探究探究其间发生了什么?
简单的网络模型01孤单小弟——HTTP浏览器做的第一步工作是解析URL
首先浏览器做的第一步工作就是要对URL进行解析,从而生发送给Web服务器的请求信息。
让我们看看一条长长的URL里的各个元素的代表什么,见下图:
URL解析所以图中的长长的URL实际上是请求服务器里的文件资源。
要是上图中的蓝色部分URL元素都省略了,哪应该是请求哪个文件呢?
当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是/index.html或者/default.html这些文件,这样就不会发生混乱了。
生产HTTP请求信息
对URL进行解析之后,浏览器确定了Web服务器和文件名,接下来就是根据这些信息来生成HTTP请求消息了。
HTTP的消息格式一个孤单HTTP数据包表示:“我这么一个小小的数据包,没亲没友,直接发到浩瀚的网络,谁会知道我呢?谁能载我一层呢?谁能保护我呢?我的目的地在哪呢?”。充满各种疑问的它,没有停滞不前,依然踏上了征途!
02真实地址查询——DNS通过浏览器解析URL并生成HTTP消息后,需要委托操作系统将消息发送给Web服务器。
但在发送之前,还有一项工作需要完成,那就是查询服务器域名对于的IP地址,因为委托操作系统发送消息时,必须提供通信对象的IP地址。
比如我们打电话的时候,必须要知道对方的电话号码,但由于电话号码难以记忆,所以通常我们会将对方电话号+姓名保存在通讯录里。
所以,有一种服务器就专门保存了Web服务器域名与IP的对应关系,它就是DNS服务器。
域名的层级关系
DNS中的域名都是用句点来分隔的,比如