从百度开始说
众所周知,www.baidu.com就是百度网站的首页,它凭内容简单成为了不少电脑测试是否可以上网的直接凭据。www.baidu.com是一个域名,在真正通信的时候,域名是不被服务器这个铁疙瘩所识别的,铁疙瘩认识的就是IP地址。公网上的IP地址是唯一的,每个端口号有代表这一个程序进度。于是“ip地址+端口号”的组合就成了确定机器和它进行的程序的唯一识别码,而“ip地址+端口号”的组合名就叫socket。
虽然IP地址表示着机器,但是IP地址不好记,所以就需要域名来代替IP地址。就好比人与人之间打招呼都是称呼名字,而不是称呼对方的***号码一样。但是一个域名是可以有多个IP地址的,比如百度这个www.baidu.com,它作为目前最大的中文搜索引擎,他应该最少有20个主ip地址。
在linux状态下使用#host -t A www.baidu.com,就会反馈两个ip地址,然后分别在浏览器的地址栏里输入这两个ip地址,都会打开百度的首页。本人在写文章之时身处黑龙江省,我想在南方实验上面那个host语句,会得到两个不同的ip地址,这两个不同的ip地址同样也会打开百度的首页。记得在2010年百度被黑掉的五个小时里,四川、福建、江苏、吉林、浙江、北京、广东等省市出现了登陆异常的现象,我想可能是这几个省的主服务器用的是一个服务器,所以ip地址也是同一个了,所以伊朗人一黑就把这几个省的百度服务全黑掉了。
DNS协议的原理
DNS是应用层协议,这一点跟http协议是一样的,它的端口号是53。无论是iso的7层模型还是简化的4层模型,上下层协议的关系都是这样的:上层协议使用下层协议的服务(比如http协议是加载在tcp协议上的),下层协议给上层协议一个接口。
返回来说DNS,DNS的主要用途就是让那些充满了英文字母的域名与充满数字的IP能进行对应,但是要注意这个对应不是一对一的,比如上面百度的例子,www.baidu.com就至少对应了2个不同的IP,其实同样在上面的例子里,180.97.33.107也不一定对应的是百度的首页。这是一个多对多的映射。
这样这个世界就会存在若干个DNS服务器(目前为止是13个),他们什么都不干,专门负责记录那些登记上来的域名,然后给他们分发一个ip地址,同时把ip地址与域名进行绑定。不过由于互联网产业是爆炸式发展,屁大个公司都要弄个网站玩玩,再加上现在许多个人的博客,域名已经成万上亿了,于是这些域名就需要分别进行管理,就被划分成了顶级域名、二级域名和子域名。
举个例子,www.JQK123.net这个网络地址(更高深的说法叫FQDN)里,.net是顶级域名,JQK123是二级域名,前面的www是子域名。
再举个例子,网易新闻的地址是news.163.com,.com是顶级域名,163是二级域名,前面的news就是子域名,代表这个域放的都是新闻内容。如果子域名是bbs,代表这个域存放的网页都是论坛相关的内容。http://baike.baidu.com/view/655511.htm,这个网址的具体含义就是“这个网址遵循http协议的,它的内容是baidu.com这个主服务器下aike域里面view文件夹里的叫655511.htm“。
(未完待续)