网络基础

引用
mdns
   mDNS即组播DNS(multicast DNS)。使用5353端口,在内网没有DNS服务器时,就会出现此组播信息。
在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口、包格式和操作语义。
组播DNS是IETF零配置网络(zeroconf)的参与者和DNS扩展(dnsext)工作组共同努力的结果。Zeroconf工作组提出了需求,DNSEXT组受到特许进行细节实现。大部分为mDNS工作的人目前都同时参与两个工作组。
mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信。
苹果的Bonjour就是一个基于mDNS的产品。 

   用mDNS解析名字
   (引自:http://berryfl.diandian.com/post/2012-02-04/15295674)
   局域网中,我们可能习惯用IP地址指定主机。但是,如果使用DHCP分配IP地址,我们就很难事先知道某台主机的IP地址(当然通过配置DHCP服务器可以给某个MAC地址的机器总是分配同一个IP地址,但不是每个局域网我们都能控制),这对局域网内自动化影响很大。使用名字而不是IP地址去指定主机可以解决这个问题。
使用名字涉及到解析名字,毕竟主机最终还是通过IP协议进行通信。Windows时代的做法是NetBIOS,而现代苹果的做法是mDNS。mDNS的原理不复杂,想解析名字的主机在局域网里发一个组播的DNS查询,刚好有这个名字的主机收到后响应。整个过程与ARP类似,但是mDNS是在IP层面,而且mDNS协议设计得很好,可以很自然地看成是DNS协议的补充(报文格式和DNS报文几乎一样)。

具体怎么使用mDNS呢,只需要在主机名后加.local即可,如上图所示。Mac OS X中,默认就会启动mDNSResponder进程,响应mDNS请求;Linux中,大部分发行版也是开箱即可用mDNS,它需要avahi守护进程;Windows中,默认似乎没有响应mDNS的进程,但只要安装iTunes,就会有mDNSResponder.exe。


    JmDNS是multi-cast DNS的一个Java实现并可被用来在本地广域网中实现DNS服务注册与发现。

你可能感兴趣的:(基础)