DNS属于应用层协议
基于UDP/TCP的53号端口传输数据
典型的C/S架构
DNS客户端--通过域名上网的电脑
DNS服务器--完成域名解析的服务器--记录的都是IP地址和域名的映射关系
DNS的工作原理:上网前先根据域名去找DNS服务器查找对应的IP地址,之后再根据IP地址访问服务器
那么何为域名?
www.baidu.com(从右向左看,层次逐渐降低,范围逐渐精准)
域名结构:三级域名,二级域名,根
为了配合这种层次化的域名结构,我们DNS服务器按照联机分布式数据库系统来部署
本地域名服务器(离你最近的服务器)--当一个主机发出DNS请求时,这个查询请求首先发给本地域名服务器(递归查询)
根域名服务器只存顶级域名服务器IP地址(com cn uk us)
顶级域名服务器只存二级域名服务器的IP地址(baidu qq)
DNS请求报文
传输层:源端口 :随机 目标端口:53--UDP
网络层:源IP: 网关给我分配的地址 目标ip:DNS服务器给我的
数据链路层: 源MAC:自己的MAC 目标MAC:网关的MAC地址(通过ARP获取网关对应的MAC地址)--正向ARP
DNS服务器支持的查询方式
递归查询(老板)--一般查找本地的服务器--UDP
当一台电脑访问WW.BAIDU,COM时,电脑先请求一台DNS服务器,如果她知道直接返回告诉她,如果不知道,那么再去找下一台服务器,直到她直到为止,然后再按照原路逐一返回告诉请求电脑
迭代查询(打工人)--TCP--本地服务器去找其他服务器
当一台电脑访问www.baidu.com时,电脑先请求一台DNS服务器,如果她知道,则直接返回告诉她,如果她不知道,则会告诉电脑,你不要找我了,我不知道,10.1.1.1服务器可能知道,你去找她吧,依次循环,直到找到为止
电脑(迭代查询--UDP--53)-->本地DNS服务器(迭代查询--TCP--53)-->根服务器
本地服务器是递归查询,先寻找根服务器(里面存放着各大顶级域名),根据反馈结果再去寻找顶级域名服务器,然后再去找权限域名服务器.......