DNS域名解析协议
例子:我现在想要浏览一个网站,它在背后做了什么事呢?假设浏览http://www.baidu.com 网站。
浏览网站其实也就是数据传输的过程,即封装与解封装的过程
封装:应用层:http协议头部
传输层:TCP协议头部,目标端口80,源端口随机的一个口
网络层:ip协议头部,在路由表中找目的ip对应的路由,找到对应的接口,然后得 到相应的IP地址,假设198.168.1.1,目的ip:主机会给DNS服务器发送一 个域名解析请求,然后DNS服务器将解析的结果ip发给主机,主机将这个 ip作为目的ip进行封装,这里返回的ip就是100.1.1.1。
数据链路层:MAC协议头部,源MACaa,目的MAC:看路由表,根据本网段和跨网段 进行选择,这里假设bb。
然后到物理层转换为比特流,这样就封装完成了,就可以发出去了。
百度服务器收到数据后,解封装,解封装到传输层时,看到是80接口,就会去找是哪个进程开放,然后就会连这个进程,
现在只知道域名http://www.baidu.com,要将域名解析为ip地址,
域名需要解析为ip
解析顺序如下:
1、先找本地文件
Linux:/etc/hosts
Windows:C:\Windows\System32\drivers\etc\hosts
打开windows中hosts文件如下:
#为注释的不用看
格式为:IP地址 域名
在cmd中ping www.baidu.com,结果如下:
在hosts文件中加一行172.16.3.36 www.baidu.com,再去在浏览器中地址栏输入: www.baidu.comji就可以得到如图所示的结果:
解析的IP地址为172.16.3.36
2、再找本地的DNS缓存
3、最后找网络上的DNS服务器(DNS服务器上记录了什么域名对应什么IP地址)
**Windows:**在主机上配IP地址时,会配DNS服务器地址如图(配这个地址的目的就是为了有域名解析的时候就发给他们,让他们解析域名对应什么ip):
默认是两个DNS服务器地址,也可以加多个,点击高级即可
Linux:配置DNS地址:vim /etc/resolv.conf
在文件中写:nameserver 114.114.114.144(这个是自己配的DNS服务器地址)
还可以加第二个nameserver 8.8.8.8
还可以加第三个nameserver 9.9.9.9
加多个是为了更好地解析,越靠前优先级越高,最多是三个,即使写100个也只是用前三个。
网络上有很多DNS服务器,每个省都有,还区分移动的,电信的,联通的,为了更快地解析,好几个省共用一个DNS服务器。
在主机和DNS服务器之间进行传输数据时也是需要封装和解封装的。
为什么需要域名解析协议呢?
因为在网络层封装的必须是ip地址,所以要将域名解析为IP地址。
有些地址做了规则,只能通过域名访问,不能通过ip地址解析。
我们也可以在网络内部搭建一个DNS服务器,学校就可以。