什么是域名解析
在使用浏览器浏览网页时,我们在地址栏输入的是域名而不是IP地址;在写爬虫或其它的网络请求的程序时,我们传给post或get的参数也是一个URL而不是一个域名地址。
但是,在浏览器或其它应用程序/代码生成请求消息并委托操作系统发送出去时,请求消息里的目标地址是IP地址,而不是域名。
因此,前面还有一个步骤,由特定的程序负责把域名转换成IP地址。这个过程就叫作域名解析。
两个核心概念
DNS服务器:这个(群)服务器上存着一张映射表,包含着全世界所有的域名和它对应的IP地址。给它一个域名,它返回你对应的IP地址。英文是Domain Name System 域名服务系统
Socket库:是属于操作系统的 用于调用网络功能的 程序组件的集合。任何应用程序调用操作系统的网络功能时,本质上都是调用了Socket库里的某个程序。域名解析器程序就是属于Socket库。
域名解析的步骤
step1. 浏览器/程序把域名传给域名解析器;
step2. 域名解析器生成一个请求消息,并委托操作系统协议栈把消息发送给DNS;
step3. 协议栈把请求消息发送给DNS;
step4. DNS根据域名,找到对应的IP地址;(具体寻找过程后续探讨)
step5. DNS把IP地址发回给协议栈;
step6. 协议栈把IP地址发给解析器;
step7. 解析器把IP地址发给浏览器/应用程序。
至此,域名解析完成,后续浏览器/应用程序根据收到的IP信息,生成请求消息,这些都是后面的事了。
一个问题
我们发现,域名解析是要向DNS服务器发送请求消息的,那么如何实现知道DNS的IP地址呢?
答案是:事先设置好了,操作系统提前知道这个事儿。