DSTUN-stun協議(rfc3489)的delphi實現版本

開發項目過程中,做語音視頻聊天的時候需要用到些nat穿透技術,發現stun協議沒有DELPHI的版本,於是做了個發佈在sourcefourge上,希望能夠幫助將來使用DELPHI開發stun的朋友 。

http://sourceforge.net/projects/dstun/

rfc3489協議簡介(轉):

Stun協議(Rfc3489、詳見http://www.ietf.org/rfc/rfc3489.txt)將NAT粗略分爲4種類型,即Full Cone、Restricted Cone、Port Restricted Cone和Symmetric。舉個實際例子(例1)來說明這四種NAT的區別:
A機器在私網(192.168.0.4)
NAT服務器(210.21.12.140)
B機器在公網(210.15.27.166)
C機器在公網(210.15.27.140)
現在,A機器連接過B機器,假設是 A(192.168.0.4:5000)-> NAT(轉換後210.21.12.140:8000)-> B(210.15.27.166:2000)。
同時A從來沒有和C通信過。
則對於不同類型的NAT,有下列不同的結果:
Full Cone NAT:C發數據到210.21.12.140:8000,NAT會將數據包送到A(192.168.0.4:5000)。因爲NAT上已經有了192.168.0.4:5000到210.21.12.140:8000的映射。
Restricted Cone:C無法和A通信,因爲A從來沒有和C通信過,NAT將拒絕C試圖與A連接的動作。但B可以通過210.21.12.140:8000與A的192.168.0.4:5000通信,且這裏B可以使用任何端口與A通信。如:210.15.27.166:2001 -> 210.21.12.140:8000,NAT會送到A的5000端口上。
Port Restricted Cone:C無法與A通信,因爲A從來沒有和C通信過。而B也只能用它的210.15.27.166:2000與A的192.168.0.4:5000通信,因爲A也從來沒有和B的其他端口通信過。該類型NAT是端口受限的。
Symmetric NAT:上面3種類型,統稱爲Cone NAT,有一個共同點:只要是從同一個內部地址和端口出來的包,NAT都將它轉換成同一個外部地址和端口。但是Symmetric有點不同,具體表現在:只要是從同一個內部地址和端口出來,且到同一個外部目標地址和端口,則NAT也都將它轉換成同一個外部地址和端口。但如果從同一個內部地址和端口出來,是到另一個外部目標地址和端口,則NAT將使用不同的映射,轉換成不同的端口(外部地址只有一個,故不變)。而且和Port Restricted Cone一樣,只有曾經收到過內部地址發來包的外部地址,才能通過NAT映射後的地址向該內部地址發包。

協議英文版:

http://www.ietf.org/rfc/rfc3489.txt

中文版:

http://blog.chinaunix.net/upfile/070812130404.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章