上一节留下了一个问题,浏览器会不会直接访问到该地址?
虽然浏览器能够解析网址并生成HTTP消息,但是浏览器本身并不具备将消息发送到网络中的功能,这一步需要委托操作系统来完成。
在此之前,需要知道该把消息发到何处,需要一个地址,这个地址不是域名,而是IP地址,通过IP地址才可以找到所要发送的服务器的位置,从而将消息发送到服务器,所以在发送消息之前需要先根据域名去查询IP地址。(这里简单说明一下,发送者发出的消息首先会经过子网中的集线器,转发到举例发送者最近的路由器上,然后,路由器再根据消息的目的地判断下一个路由器的位置,将消息发送到下一个路由器,直到消息被发送到目的地)
如何根据域名去查询IP地址呢,当然是DNS啦。
DNS:Domian Naem System,域名服务系统。将服务器名称和IP地址进行关联
通过DNS查询IP地址的操作叫做域名解析,负责执行解析的操作叫做解析器,解析器实际上就是一段程序,它包含在操作系统的Socket库中。
浏览器调用解析器,Socket库中的解析器开始运行,生成要发送给DNS服务器的查询消息,并将消息发送给DNS服务器(发送消息这个操作并不是由解析器自身完成的,需要委托给操作系统内部的协议栈来执行),通过网卡将消息发送给DNS服务器,当DNS服务器收到查询消息后,根据消息中的查询内容进行查询(过程待写),将IP地址写入响应消息并返回给客户端。消息经过协议栈被传递给解析器,然后解析器读取出消息取出IP地址,并将IP地址传递给浏览器