下文摘自于 《网络是怎样连接的》
链接:https://pan.baidu.com/s/1l40c-T621bbMgx7NL8rAxw
提取码:p9dx
TCP/IP网络是通过IP地址来确定通信对象的,因此不知道IP地址就无法将消息 发送给对方,这和我们打电话的时候必须要知道对方的电话号码是一个道理,因 此,在委托操作系统发送消息时,必须要先查询好对方的IP地址。
可能你会问“既然如此,那么在网址中不写服务器的名字,直接写IP地址不就好了吗 ?”实际上,如果用IP地址来代替服务器名称也是能够正常工作的,然而,就像你很难记住电话号那一样,要记住一串由数字组成的IP地址也是非常困难,因此,相比IP来说,网址还是使用服务器名称比较好。
那么又有人问了:“既然如此,那干脆不要用 IP 地址,而是用名称来确定通信对象不就好了吗?互联网中使用的是最新的网络技术,和电话那种老古董可不一样,这样的功能应该还是做得到的吧?”这样的想法其实并不奇怪 。不过从运行效率上来看,这并不能算是一个好主意。互联网中存在无数的路由器,它们之间相互配合,根据 IP 地址来判断应该把数据传送到什么地方。那么如果我们不用 IP 地址而是改用名称会怎么样呢? IP 地址的长度为 32 比特,也就是 4 字节,相对地,域名最短也要几十个字节,最长甚至可以达到 255 字节。换句话说, 使用 IP 地址只需要处理 4 字节的数字,而域名则需要处理几十个到 255 个字节的字符,这增加了路由器的负担,传送数据也会花费更长的时间 。 可能有人会说:“那使用高性能路由器不就能解决这个问题了吗?”然而,路由器的速度是有极限的,而互联网内部流动的数据量已然让路由器疲于应付了,因此我们不应该再采用效率更低的设计。随着技术的发展,路由器的性能也会不断提升,但与此同时,数据量也在以更快的速度增长,在可预见的未来,这样的趋势应该不会发生变化。出于这样的原因,使用名称本身来确定通信对象并不是一个聪明的设计。
于是,现在我们使用的方案是让人来使用名称,让路由器来使用 IP 地址。为了填补两者之间的障碍,需要有一个机制能够通过名称来查询 IP 地址,或者通过 IP 地址来查询名称,这样就能够在人和机器双方都不做出牺牲的前提下完美地解决问题。这个机制就是 DNS。