基于STM32和W5500的UPnP自動端口映射功能實現(xiàn)
實現(xiàn)這些場景的網(wǎng)絡設備都要基于一種叫端口映射的網(wǎng)絡技術。端口映射就是路由器將外網(wǎng)某一個端口與內(nèi)網(wǎng)中某個設備的IP地址和端口號建立起一一對應關系。內(nèi)網(wǎng)主動訪問外網(wǎng)時,路由器主動建立了映射關系,內(nèi)外網(wǎng)間就可以通信。但是外網(wǎng)要主動訪問內(nèi)網(wǎng)是不可行的,因為不知道內(nèi)網(wǎng)的設備IP和端口,只能和路由器外網(wǎng)通信。路由器可以進行手動配置端口映射,但是便攜式設備經(jīng)常移動,內(nèi)網(wǎng)的IP地址也是不是固定的,每次使用都要手動配置路由器顯然是個麻煩的事情。本文就為你講解如何使用UPnP協(xié)議實現(xiàn)網(wǎng)絡設備自動配置路由器進行端口映射。
一、UPnP協(xié)議簡介
UPnP(Universal Plug and Play,即插即用)是各種各樣的智能設備、無線設備和個人電腦等實現(xiàn)遍布全球的對等網(wǎng)絡連接(P2P)的結構。使用UPnP達到的效果是任何設備一旦連接上網(wǎng)絡,所有在網(wǎng)絡上的設備馬上就能知道有新設備加入,這些設備彼此之間能互相通信,更能直接使用或者控制它,一切都不需要人工設置。
1.1 UPnP結構
服務、設備和控制點是UPnP網(wǎng)絡的基本組件,如圖1:
圖 1 UPnP組件圖
? 設備(Device):家電、手機、智能設備、無線設備、電腦等等都可以稱之為設備。
? 服務(Service):是指設備在不同情況下的動作和設備的狀態(tài)。
? 控制點(Control Point):指的是可以發(fā)現(xiàn)并控制其他設備的控制設備。在UPnP網(wǎng)絡中,設備可以和控制點合并為同一臺設備。
1.2 UPnP工作流程
UPnP定義了設備之間、設備和控制點、控制點之間通信的協(xié)議。完整的UPnP有設備尋址、設備發(fā)現(xiàn)、設備描述、設備控制、事件通知和基于HTML的描述等幾部分構成。UPnP協(xié)議最底層是TCP/IP協(xié)議,UPnP實現(xiàn)的工作流程如圖2所示:
圖2 UPnP實現(xiàn)的工作流程
尋址:就是找個可用IP地址。一般都采用DHCP服務,使設備自動得到一個IP地址。
發(fā)現(xiàn):加入到網(wǎng)絡中,設備會定期的以組播的方式表明自身的存在以及告知(Advertise)它提供的服務;控制點則是網(wǎng)絡中廣播search packets來發(fā)現(xiàn)具有某些服務的設備,具有該服務的設備以單播的方式應答。
描述:控制點可以從發(fā)現(xiàn)消息中得到設備描述的URL(可以認為是瀏覽器地址),通過URL取回設備描述的信息。
控制、事件和展示則是控制點獲取描述之后進行的各種通信交互。其中控制是控制點對設備進行的操作;事件為設備向控制點定期發(fā)送其感興趣的信息,展示可以認為是設備的一個功能,它給控制點一個URL,可以登錄到設備的網(wǎng)頁服務器。
評論