DSTUN-stun协议(rfc3489)的delphi实现版本

原创 2007年09月28日 17:03:00

开发项目过程中,做语音视频聊天的时候需要用到些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

rfc3489(STUN).txt

  • 2009年05月12日 15:37
  • 117KB
  • 下载

STUN(RFC3489)的NAT类型检测方法

原文地址:http://hi.baidu.com/wkmtwbxondbjorq/item/3a16150d78fda2e93599028a 在现实Internet网络环境中,大多数计算机主机都位于...

Stun协议RFC5389

  • 2012年07月28日 10:32
  • 80KB
  • 下载

STUN协议,探测NAT类型(实现过程一)

STUN协议,探测NAT类型(实现过程一)1, STUN客户端(101:10)向STUN服务器(404:40)发送请求,要求得到自身经NAT映射后的地址(202:20):       a,收不到服务器...
  • hack8
  • hack8
  • 2011年07月08日 21:57
  • 1224

NAT类型的判断(RFC3489)

NAT网络分为4大类型:1、Full Cone NAT

RFC1867协议客户端实现

转载地址:http://blog.csdn.net/chen77716/article/details/387831 RFC1867协议作为HTTP协议的附加协议,详细描述了File Uploa...

按照RFC3984协议实现H264视频RTP打包

http://bbs.chinavideo.org/viewthread.php?tid=7575 相信有不少人和我一样,希望实现H264格式视频的流媒体播放。但是对于一个新手来...

按照RFC3984协议实现H264视频RTP打包(附源代码)

原文地址:http://blog.chinaunix.net/uid-22670933-id-1771653.html 相信有不少人和我一样,希望实现H264格式视频的流媒体播放。但是对于一...
  • sdvch
  • sdvch
  • 2015年05月28日 23:07
  • 705

按照RFC3984协议实现H264视频RTP打包(附源代码)

原文地址:http://blog.chinaunix.net/uid-22670933-id-1771653.html

按照RFC3984协议实现H264视频RTP打包(附源代码)

一、本示例代码在我的电脑上实现了对标准H264码流的RTP打包发送到本机的1234端口,用VLC播放器从1234端口能接收到该码流并实时播放。代码附有详细的注释,应该很容易理解(前提是大家稍微对RFC...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DSTUN-stun协议(rfc3489)的delphi实现版本
举报原因:
原因补充:

(最多只允许输入30个字)