为什么域名访问比IP慢

互联网的基础协议是 IP 协议,在IP之上是 TCP/UDP,再往上是 HTTP等应用协议。访问DNS一般来说是很快的,就是一个UDP包来回,但是总要花点时间,所以用域名注定比用IP慢一点。

但是DNS不总是很快的,有时会非常慢,甚至根本就无法使用,这就造成了用域名访问网络会遇到各种不稳定问题。

每台互联网终端设备,比如 PC 手机,都会有一个默认DNS,你在PC上输入

ipconfig /all

就可以看到默认DNS的IP地址。

所谓域名解析服务就是通过查表把 域名换算成IP的过程,访问网络的时候把域名发送到DNS服务器,然后从DNS获取解析后的IP地址,如果DNS服务器上有域名到IP的对照表,那么这个解析就很快,如果没有,DNS服务需要向它的上层服务去询问,这样一层一层问上去,直到找到这个对照表为止,这个过程时间就很不可控了,有时几百毫秒,慢起来10秒钟都可能。

如果访问服务器先采用域名访问很慢,然后通过本地nslookup 获得DNS本地缓存映射(域名-IP),直接用IP地址访问很快,即两次访问使用相同的IP地址,两次访问的客户端为同一台机器,那么两次访问的唯一不同:
第一次DNS,DNS域名解析会介入一次到多次DNS迭代、递归查询,一句话:会有多次RTT延时的引入。第二次IP,直接就IP封包出去了,所以会快的多。但还有一种场景,有多个服务器(域名一样,但IP不一样)提供服务,有的使用电信的IP,而有的使用联通的IP,如果客户端是电信的,那么域名解析最好是电信的服务器,那么客户端和服务器在电信网络里,访问会快,同理联通的客户端则访问位于联通网络的服务器,智能DNS会根据客户端IP来做出以上的决策。但如果客户端位于电信网络,而返回的服务器IP却位于联通,则流量必须经过电信与联通的互联通道,这个通道比较窄,容易堵车、丢包,给用户的感受就是访问特别慢(丢包特别影响性能)。

采用IP访问快,是因为客户端与服务器IP在一个网络,而DNS域名解析的服务器IP与客户端不在一个网络,丢包、延迟大都会造成所说的访问慢。




猜你喜欢

转载自blog.csdn.net/u014042372/article/details/80563694