網絡協議之mDNS


DNS(Domain Name System,域名系統)因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,
而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。
DNS協議運行在UDP協議之上,使用端口號53。
在RFC文檔中RFC 2181對DNS有規范說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向緩存進行說明。

一、mDNS
mdns 即多播dns(Multicast DNS),mDNS主要實現了在沒有傳統DNS服務器的情況下使局域網內的主機實現相互發現和通信,
使用的端口為5353,遵從dns協議,使用現有的DNS信息結構、名語法和資源記錄類型。並且沒有指定新的操作代碼或響應代碼。
在局域網中,設備和設備之前相互通信需要知道對方的ip地址的,
大多數情況,設備的ip不是靜態ip地址,而是通過dhcp協議動態分配的ip 地址,如何設備發現呢,就是要mdns大顯身手,
例如:現在物聯網設備和app之間的通信,要么app通過廣播,要么通過組播,發一些特定信息,感興趣設備應答,
實現局域網設備的發現,當然mdns 比這強大的多
1.mDNS 基於UDP 協議
組播地址: 組播地址使用的是D類地址,地址范圍為:224.0.0.0—239.255.255.255
2.mdns工作原理簡單描述:
mdns 使用組播地址為: 224.0.0.251 (ipv6: FF02::FB) 端口為5353,mdns是用於局域網內部的,並且主機的域名為.local 結尾,每個進入局域網的主機,如果開啟了mDNS服務的話,都會向局域網內的所有主機組播一個消息,我是誰(域名),和我的IP地址是多少。然后其他有mdns服務的主機就會響應,也會告訴你,它是誰(域名),它的IP地址是多少。
當然設備需要服務時,就是使用mdns 查詢域名對對應的ip地址,
對應的設備收到該報文后同樣通過組播方式應答,
此時其他主機設備也是可以收到該應答報文,其他主機也會記錄域名和ip 以及ttl 等,更新緩存
比如,A主機進入局域網,開啟了mDNS 服務,並向mDNS服務注冊以下信息:我提供 FTP 服務,我的IP是 192.168.1.101,端口是 21。當B主機進入局域網,並向 B 主機的 mDNS 服務請求,我要找局域網內 FTP 服務器,B主機的 mDNS 就會去局域網內向其他的 mDNS 詢問,並且最終告訴你,有一個IP地址為 192.168.1.101,端口號是 21 的主機,也就是 A 主機提供 FTP 服務,所以 B 主機就知道了 A 主機的 IP 地址和端口號了。
大概的原理就是這樣子,mDNS提供的服務要遠遠多於這個,當然服務多但並不復雜。
3.mDNSResponder與Bonjour的關系:
The mDNSResponder project is a component of Bonjour,
Apple's ease-of-use IP networking initiative:
Bonjour是法語中的Hello之意。它是Apple公司為基於組播域名服務(multicast DNS)的開放性零配置網絡標准所起的名字。
使用Bonjour的設備在網絡中自動組播它們自己的服務信息並監聽其它設備的服務信息。
設備之間就像在打招呼,這也是該技術命名為Bonjour的原因。
Bonjour使得局域網中的系統和服務即使在沒有網絡管理員的情況下也很容易被找到。

舉一個簡單的例子:在局域網中,如果要進行打印服務,必須先知道打印服務器的IP地址。此IP地址一般由IT部門的人負責分配,然后他還得全員發郵件以公示此地址。有了Bonjour以后,打印服務器自己會依據零配置網絡標准在局域網內部找到一個可用的IP並注冊一個打印服務,名為“print service”之類的。當客戶端需要打印服務時,會先搜索網絡內部的打印服務器。
由於不知道打印服務器的IP地址,客戶端只能根據諸如"print service"的名字去查找打印機。

在Bonjour的幫助下,客戶端最終能找到這台注冊了“print service”名字的打印機,並獲得它的IP地址以及端口號。

備注:隨筆中內容來源於網上資料整理,僅供參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM