关于传输层上的TCP和UDP,有以下有趣的事实证明了上述情况。
1)UDP速度更快。TCP很慢,因为它需要3次握手。DNS服务器上的负载也是一个重要因素。DNS服务器(因为它们使用UDP)没有保持连接。
2)DNS请求通常非常小,非常适合UDP段。
UDP和TCP
udp和TCP是网络通信的两种基本协议。这两种协议各有优缺点。TCP采用连接通信方式,可以传输多个数据包,保证多个数据包的传输顺序,防止数据包丢失。TCP是一种高可靠性的传输方式。然而,TCP传输延迟的问题是显而易见的,它一次只能向一个连接的主机发送请求。TCP不适用于需要实时和多方通信的场合。UDP是一种非连接传输方法。它除了传输数据什么也不做。UDP的传输速度很快,但很容易丢失数据包。UDP更适合于单个数据包的传输。数据包的大小为512字节,传输速度非常快。同时,UDP还可以同时向网段中的多台主机发送数据包,这也使得UDP受到许多需要实时、多方通信的应用的青睐。为了提高UDP数据传输的可靠性,人们还开发了基于UDP的实时传输协议,如RTP。
DNS的过去和现在的生命依赖于IP地址,但IP地址不容易记住。因此,人们给网络上的主机起了一些更容易记住的名字。最初,这些名称保存在一个名为hosts TXT text file的文件中,此方法仍然保留。例如,在Linux上,该文件保存在/etc/hosts下。为了共享这些信息,人们将主机Txt保存在FTP服务器上,并通过匿名访问实现统一管理。然而,文件数量迅速增加,FTP服务器应接不暇。因此,在20世纪80年代初,DNS标准(RFC1034和rfc1035)被制定出来,以实现域名的分布式管理。
DNS
域名服务器使用的协议同时使用TCP和UDP。UDP用于域名解析。此时,一个UDP数据包就足够了。可以充分发挥延迟小、响应快的优点。当客户端或辅助DNS需要与主DNS上的域名列表缓存同步时(通常每3小时一次),会使用TCP协议,因为此时的数据远远大于UDP数据包的大小。
随着IPv6的使用,域名解析的数据包已超过512字节,因此使用UDP进行域名解析并不那么可靠。面对这一新课题,人们正在研究扩展UDP协议的方法。
这个问题,首先要解释一下dns的作用。dns是域名服务的缩写,用于将www.xxx.com此类网址或者域名翻译成ip地址的互联网基础服务,当然反过来翻译也可以。最主要的原因是互联网的任何访问都是基于ip地址的,但是ip地址不方便记忆,域名方便记忆,所以互联网使用者记住域名就好了,翻译的事情交给dns。这种网络基础协议使用非常之频道,几乎打开每个网页都要使用一次,甚至是多次。所以协议设计必须简单,高效。否则提供这种服务的服务器开销会非常大,组网的成本也会变得非常大。使用udp最大的好处就是不需要进行三次握手,将tcp的最低5次交互获取信息,变为2次交互获取信息。此外dns报文设计的也极为简单,几乎没什么验证或者加密的协议字段,而且完全使用明文,这都是为了减小其在提供服务时的网络开销。但是该协议使用到现在的弊病也非常明显,就是因为在udp协议层和应用层没有加密,dns解析报文非常容易被劫持,篡改。后续的dns协议将使用tcp协议,高层使用https。