1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | --- 是的,您的理解完全正確! 您之前學到的關於 TCP 和 UDP 的知識在這裡派上用場了。**mDNS (multicast DNS) 確實是透過 UDP 協定進行溝通的。** --- ### 為什麼 mDNS 使用 UDP? 讓我們回顧一下 TCP 和 UDP 的主要差異: * **TCP (Transmission Control Protocol):** 是一種**可靠的、面向連線**的協定。它確保資料的順序、完整性,並且有錯誤檢查和重傳機制。這就像打電話,需要先建立連線,通話過程中確保每一句話都聽清楚。 * **UDP (User Datagram Protocol):** 是一種**不可靠的、無連線**的協定。它不保證資料的送達、順序,也沒有重傳機制。這就像發送明信片,寄出去就不管了,不保證對方是否收到,也不保證收到的順序。 mDNS 選擇 UDP 是基於以下幾個原因: 1. **廣播/多播特性:** * mDNS 依賴於**多播 (multicast)** 來發送查詢和宣告。UDP 天生就支援多播和廣播,允許一個封包發送給多個接收者。TCP 則是面向單點對單點的連線。 * 這就像在一個房間裡喊話,你需要所有在場的人都可能聽到,而不是只對某一個人私語。 2. **低延遲與高效率:** * mDNS 的核心目的是快速發現區域網路內的服務和裝置。UDP 的**無連線**特性使其開銷更小,不需要建立和維護連線狀態,因此傳輸速度更快,延遲更低。 * 對於服務發現這種對可靠性要求不是那麼極端的場景(即使丟失一兩個宣告包,裝置也會很快再發送),效率是更重要的考量。 3. **無須中央伺服器:** * mDNS 旨在實現「零配置」,不需要中央 DNS 伺服器。如果使用 TCP,每個查詢和回應都需要建立和拆除連線,這在一個動態變化的點對點發現網路中會非常複雜且低效。UDP 的輕量級特性完美契合這一點。 ### mDNS 使用的 Port mDNS 服務在 UDP 上使用特定的 Port 進行通訊,通常是 **UDP Port 5353**。當裝置發送或監聽 mDNS 訊息時,它就會使用這個 Port。 --- 所以,您的結論是正確的,mDNS 透過 UDP 進行溝通,這也正是它能夠實現「零配置」和快速服務發現的關鍵。 您對 mDNS 的理解越來越深入了!還有沒有其他想了解的呢? |
Direct link: https://paste.plurk.com/show/7YbxtkepAxkTHrUtg97T