为什么有的DNS使用的是UDP而不是TCP?
不邀自来,最近一直在研究《TCP/IP》协议,刚好回答一下这个问题,希望能帮助到你。
域名解析(DNS,Domain Name System ):就是网站的域名解析成对应的IP,IP地址是一串数字,为了方便人们的记忆,通常将某个域名和IP地址绑定,当我们向浏览器输入URL地址的时候,浏览器就会向域名服务器发起请求,域名服务器收到请求后,通过查询绑定映射关系将查询结果返回给浏览器,这样浏览器就获得了URL对应的IP地址,然后访问特定IP地址的资源。下面我么具体讲一下域名解析为什么使用UDP更适合。
1. 域名结构
域名按层级结构进行管理和服务的,目前互联网的域名体系结构中有三类顶级域名,分别如下:
地理顶级域名:像.CN代表中国,.JP代表日本,.UK代表英国等等。
类别顶级域名:共有7个:.COM(公司),.NET(网络机构),.ORG(组织构),.EDU(美国教育),.GOV(美国政府部门),.ARPA(美国军方),.INT(国际组织)。
新增顶级域名:随着互联网的不断发展,新增顶级域名出现了,像.BIZ(商业),COOP(合作公司),.INFO(信息行业),.AERO(航空工业)等
随着互联网的不断发展,这些顶级域名不断扩展,像我国的
.cn
域名下面有设置了.COM,.EDU,.NET
等二级域名,还扩展了一些地域域名,.SH(上海),.BJ(北京)等2. 域名服务器
域名服务就是为域名解析服务的,当前互联网的域名服务器是按照层次为不同层级的域名服务。主要分为以下四类:
根域名服务器:处于最上层的域名服务器,相当于一个国家的首脑,全球有13台域名服务器,这13台域名服务器并不是一个域名对应一台物理服务器的地址,而是作为一个服务器集群的入口。
顶级域名服务器:顶级域名服务器位于根域名服务器的下一级,相当于一个省的省长,他们负责管理顶级域名下注册的二级域名,顶级域名则是由根域名服务器惊醒管理和维护。
权威域名服务器:负责某个地区的域名解析服务,相当于一个省下面的市长,区长,镇长等,顶级域名服务器也可以算作是权威域名服务器,只不过由于其特殊性,我们专门把它划分为一类。因此权威域名服务器通常是指顶级域名以下的管理二级、三级、四级等域名的服务器。
本地域名服务器:
本地域名服务器不同于前面三类域名服务器,当个人PC发出联网请求时,此时的域名解析服务就会发送到本地域名服务器,本地域名服务器负责回答本次DNS请求,或是代替个人PC向不同层级的域名服务器发送查询请求。
3. 域名解析的过程
域名解析大概分为两步:
第一步:向本地域名服务器发起查询请求,请求报文里面含有需要查询的域名;
第二步:本地域名服务器返回DNS响应,响应报文中含有DNS解析的IP地址;
在DNS解析过程中使用的是迭代查询——本地域名服务器向根域名服务器发起查询,根域名服务器告诉本地域名服务器下一步该往哪个域名服务器走,一步步按照域名服务的查询路径找到域名对应的IP返回给请求发起方。4. UDP与TCP
UDP和TCP处于OSI模型的传输层,其是《TCP/IP》协议的重要协议,传输层提供点到点的传输服务,格式化数据流的作用。UDP更适合DNS的主要原因还是TCP和UDP协议的不同。
TCP(Transmission Control Protocol,传输层控制协议):首先传输控制协议TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。他主要通过三次握手和四次挥手,拥塞控制等机制提供可靠的端到端的通信。
UDP(User Data Protocol,用户数据报协议):是一种无连接的不可靠用户数据报传输协议,在传送数据前部和对端建立连接,他只是尽可能的数据报文传输到对端,至于对端能不能完整的收到数据报它不在关心,通常UDP用于对数据报完整性和及时性不是很高的场合像视频传输等。
4. 为什么UDP更适合DNS
有上面的介绍可知,UDP因无连接占用资源少等有点更适合DNS解析,总结一下DNS使用UDP的优点:
UDP基于无连接传输,所以传输效率高;
TCP响应时间=TCP连接时间 + DNS查询时间;UDP响应时间=DNS查询时间;当前互联网对响应速度的要求越来越高,效率为王,UDP因无连接不占用系统资源等有点,使得UDP成为DNS解析快速响应的不二选择。
希望我的回答对你有用,欢迎朋友们批评指正,一起讨论,一起成长。