引
打开浏览器,在地址栏输入URL,回车,出现网站内容。这是我们几乎每天都在做的事,那这个过程中到底是什么原理呢?HTTP、TCP、DNS、IP这些耳熟能详的名词都在什么时候起着什么作用呢?在这里整体梳理一遍。
整个过程基本分做下面几个部分:
- 1、域名解析成IP地址;
- 2、与目的主机进行TCP连接(三次握手);
- 3、发送与收取数据;
- 4、与目的主机断开TCP连接(四次挥手);
下面分别进行详细说明。
域名解析成IP地址
首先说什么是域名解析?
我们在浏览器地址栏中输入的都是类似“www.baidu.com”、“www.qq.com”等等容易记忆的英文域名,但这些字母你直接交给整个网络线路去寻找目的主机找得到吗?找不到,因为每个主机在网络中的位置都是以IP标识的,IP才是主机在网络中的位置,域名只是为了方便用户记忆而已,这就要求浏览器能够识别域名并且将其转化为对应的IP地址。
所以浏览器会有一个DNS缓存,其中记录了一些域名与IP的对应关系,供浏览器快速查找需要的IP。但是这个DNS缓存不可能存下所有的域名-IP地址,何况IP地址有时候还会变化,因此当在DNS缓存中没有找到的时候,就要先向DNS服务器请求域名解析,我们常听到的DNS服务器很大的作用就是进行域名解析。
值得一提的是,DNS域名解析时用的是UDP协议。
整个域名解析的过程如下:
- 1、浏览器向本机DNS模块发出DNS请求,DNS模块生成相关的DNS报文;
- 2、DNS模块将生成的DNS报文传递给传输层的UDP协议单元;
- 3、UDP协议单元将该数据封装成UDP数据报,传递给网络层的IP协议单元;
- 4、IP协议单元将该数据封装成IP数据包,其目的IP地址为DNS服务器的IP地址;
- 5、封装好的IP数据包将传递给数据链路层的协议单元进行发送;
- 6、发送时在ARP缓存中查询相关数据,如果没有,就发送ARP广播(包含待查询的IP地址,收到广播的主机检查自己的IP,符合条件的主