在互联网上要想与另外一台主机通信,要知道对方的IP地址,但是IP地址是很难记忆的,

比如百度的一台服务器的IP地址为115.239.210.27,我们在浏览器中输入http://115.239.210.27/就可以访问百度了,但是如果访问一个网站就要记住它的的IP是很蛋疼的事,人们习惯记住有意义的字符串,比如baidu。

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCPUDP端口53。

DNS服务是如何实现的呢?

首先我们的电脑里面都会有一个DNS服务器(Name Server)的IP地址,可以手动设置也可以自动获取,有名的DNS服务器包括google的8.8.8.8 阿里巴巴的223.5.5.5等,查看自己电脑的DNS服务器的IP地址可以在windows命令行下输入ipconfig /all,在linux下面则通过more /etc/resolv.conf查看。

客户端发起访问请求www.163.com:

1.查看本地hosts文件,发现没有www.163.com IP 映射关系,将请求发送给本地DNS服务器( ----递归查询----)

2.本地DNS服务器不包含163.com的权威域,不存在对应的www记录,因此将请求转发到根域名服务器(假如  a.root-servers.net.)

3.根域名DNS服务器会返回负责.com域解析的服务器(假如 a.gtld-servers.net.)给本地DNS服务器,本地DNS服务器再将请求发送给 a.gtld-servers.net

4..com域名服务器只能返回负责163.com域的解析服务器(如 ns1.nease.net.)给本地DNS服务器,本地DNS服务器再将请求发送给ns1.nease.net.

5.由ns1.nease.net.域名服务器返回www.163.com 的 IP映射关系给本地DNS服务器

(2-5过程)----迭代查询----

6.本地DNS服务器将结果保存到本地缓存,并保持TTL时间,同时将结果应答给客户端.

7.当其他客户端再次向本地DNS服务器查询www.163.com时,在TTL时间内,本地DNS服务器不再向根域名服务器转发请求,而是直接从缓存中读取数据应答给客户端. 如果已经超过TTL时间,则本地DNS服务器会再次经历一次上诉2-6的过程.

以后会结合Wireshark分析DNS报文的每个字段详细意思,以及DNS查询的其它细节问题。

【参考文献】

http://magic3.blog.51cto.com/1146917/1354084

http://www.360doc.com/content/11/0809/17/706976_139190573.shtml

http://zh.wikipedia.org/zh/域名系统

最新文章

  1. 再看Ajax
  2. Linux网络配置基础
  3. 我个人结合到老师的来理解的——Asp.net Webform的页面生命周期
  4. 将treeview控件内容导出图片
  5. Runner站立会议02
  6. 第一个Spring demo
  7. 最牛B的编码套路(转)
  8. MVC的Filters(拦截过滤)的Error页面,支持Ajax报错
  9. UVA 11019 Matrix Matcher(ac自动机)
  10. NGUI3.5系列教程之 一些小功能的实现
  11. LeetCode_ Merge k Sorted Lists
  12. NGUI中的Tween的委托使用
  13. 开涛spring3(6.6) - AOP 之 6.6 通知参数
  14. appium实例编写(1)---以ContactsTest.apk 操作为例
  15. Codeforces Round #467 (div.2)
  16. 会话机器人Chatbot的相关资料
  17. AI学习---特征工程【特征抽取、特征预处理、特征降维】
  18. C++11 列表初始化
  19. web app 、native app、hybrid app比较
  20. 【转】深入理解C++的动态绑定和静态绑定 & 不要重定义虚函数中的默认参数

热门文章

  1. C#图解教程 第十三章 委托
  2. 【BZOJ4869】相逢是问候(线段树,欧拉定理)
  3. 【BZOJ3282】Tree (Link-Cut Tree)
  4. 网络防火墙和NAT地址转换
  5. MyBatis映射器元素
  6. Mac下redis的安装 以及配置支持PHP使用redis
  7. Cocos2d-x 集成openinstall(Android)
  8. LeetCode之Easy篇 ——(7)Reverse Integer
  9. 进入PE后不显示硬盘的解决办法
  10. java中equals方法和hashcode方法的区别和联系,以及为什么要重写这两个方法,不重写会怎样