如何實現W5200E01-M3中的UPnP(通用即插即用) 端口轉發(一)

這篇應用文章將會介紹WIZnet W5200芯片和基於W5200的模塊上UPnP的一些技術信息。第一,介紹什麼是UPnP。第二,介紹UPnP工作組定義的端口轉發概念。最後,這篇文章會說明W5200芯片如何添加和刪除端口映射。今天為大家分享第一部分.

1. 說明

1.1 概念 請參考Wikipedia

What is UPnP?    

UPnP的概念最早來源於即插即用。即插即用是描述計算機總線特性、設備規格的一個專業術語。利用即插即用可以大大簡化系統的整個硬件組成,而不需要再進行物理設備的配置,也避免了解決資源衝突時用戶的干預[1][2]。整個思路就是:只需要在設備中插入,然後就可以使用。

如今將UPnP將即插即用概念創造性地應用於網絡環境下。UPnP可以自動搜索設備類別。它支持零配置,“隱形”網絡,以及自動檢索功能。這就意味着設備UPnP可以動態加入網絡、獲得IP地址、傳輸性能,從而得到當前設備以及其他設備的性能的相關信息——全自動化、完全零配置網絡支持。

1.2 UPnP結構以及UPnP涉及的步驟

UPnP結構

TCP由客戶端和服務器構成。同樣地,UPnP結構也基於設備和控制點:

設備:

提供服務

例如,UPnP DVD播放器是用來提供DVD播放服務的設備。

記錄設備的狀態.

例如,DVD播放器能夠記錄DVD的播放狀態。

控制點

控制已經定義的設備來執行相應的服務

圖 1. UPnP網絡

為了能夠實現所有的描述,通用即插即主要應用於TCP/IP、DHCP、XML等等現存的一些標準中,從而使這些標準的應用更加廣泛。

UPnP網絡應用的步驟

在UPnP機制下存在6種不同的步驟:

(1)尋址

尋址是通過控制點和設備取得網絡地址的過程。這些控制點和設備先從DHCP服務器上獲得一個IP地址;如果沒有可用的IP地址,將會在169.254的子網上隨機獲取一個自動IP地址。

注意: 在尋址過程中,AutoIP和DHCP都可以協助UPnP控制點和設備取得一個IP地址。但是DHCP要比AutoIP的更為常用和可靠。所以,在這篇應用手冊和基於W5200的模型中,DHCP是獲得IP地址的唯一方法。

 

(2)搜索

控制點可以通過搜索來查找對它們有意義的設備。

當控制點進入網絡時,它們以普通或者特殊方式釋放search packets來搜索and/or服務的設備。搜索完成後,具有合適服務特性的設備或者子設備就會做出響應。

同樣地,UPnP設備首先將會以規律性間隔的方式在網絡上表明自身的存在。控制點監聽這些狀態,檢測這些新的設備並且判斷它們在網絡上的性能表現。

網絡上的其它UPnP設備將會發出通知表明它們提供的服務將不再有效。

注意: 在搜索過程中,無論是Searching或者Advertising都可以幫助UPnP控制點來尋找UPnP設備。在Searching和Advertising這兩種方法相同的情況下,在這篇應用手冊和基於W5200的模型中都是保留了Searching方法,而Advertising方法將被忽略。

(3)描述

UPnP發送搜索包,將控制點送到一個它們能夠檢索Device Description Document(DDD)的位置。DDD包括:

所有嵌入式設備的概述以及一個服務列表。

被稱做服務控制協議定義(SCPD)一個URL。SCPD描述了控制點如何使用這些設備提供的服務。

控制和事件URLs:這些URLs表示控制點必須發送命令來配置UPnP設備,並且利用這些設備所提供的服務。

用來陳述的URL(見第6步).

(4)控制

控制過程允許控制點向設備發送命令。如之前提到的,在DDD中指定發送命令的URL。

(5) 事件

事件過程允許控制點跟蹤設備的狀態變化。控制點首先訂閱合適的服務,隨後設備服務中任何狀態的變化都會以事件的形式發送給已經訂閱的控制點來保證它們的更新。

(6) 陳述

控制點能夠選擇性地為設備顯示一個用戶的界面。用來陳述的URL是在DDD中已經被指定。陳述頁面顯示基於HTML的用戶界面,這樣用戶就可以參考and/or設備的狀態。所以陳述過程是控制過程和事件過程的補充。

注意: W5200扮演了一個UPnP控制點的角色,實際上它並不需要嵌入一個網絡服務器。網絡服務器在UPnP設備中是不可缺少的,所以在本文和基於W5200單片機的模型中,並不支持陳述過程。

 

2. 端口轉發和UPnP

端口轉發

簡單來說,端口發送(另一種說法是NAT遍歷)功能允許創建TCP和UDP協議映射。這些協議應用於外部因特網網關設備(IGD)端口(稱為外部端口)和內部客戶機地址。這裡的內部客戶地址與其中的一個端口相聯繫(分別稱為內部客戶機和內部端口)。

請參考下面的圖形來理解端口轉發的應用:

UPnP和端口轉發

端口轉發是IGD眾多功能中最基本的一個(更多的IGD標準功能可以在UPnP IGD服務模板中找到)。儘管端口轉發功能可以手動完成,但是通過使用UPnP,端口轉發功能默認執行操作。我們可以這樣說,UPnP為用戶實現了端口轉發的更清晰化。

目前,很多類型的P2P軟件都支持UPnP的端口轉發功能,例如Skype、UTorrent以及MSN。如果你對UPnP感興趣,可以登錄IGD的設置頁面找到端口發送列表(見圖4),在列表中你會發現所有的端口映射。大部分的映射都是有UPnP完成,而不是用戶。

圖4. UPnP端口映射列表

更多有關W5200的視頻和博文請看這裡:

W5200相關視頻http://blog.iwiznet.cn/?page_id=484

使用高速SPI以太網控制芯片W5200登錄Telnet服務器(三)http://blog.iwiznet.cn/?p=412

高速SPI以太網控制芯片——W5200 http://blog.iwiznet.cn/?p=366

WIZnet的開源硬件(OSHW)芯片的角色是什麼?

WIZnet的開源硬件(OSHW)芯片的角色是什麼?