服务器的响应表明源端口号,针对SIP的STUN解决方案的设计与实现

郭常清:针对SIP的STUN解决方案的设计与实现11期

PC#1的IP配置为192.18.7.128,在此机器上运行STUNClient;在PC#2上安装两块网卡,IP分别配置成192.18.7.1和172.18.7.124,PC#2充当NATServer,由PC#1和PC#2共同组成私网。由PC#3充当STUNServer,安装两块网卡,IP分别配置为172.18.7.10和172.18.7.11,鉴于STUN协议要求使用四个(IP:端口)对来完成对NAT类型的判断,使用端口3478、3479,即可得到(172.18.7.10:3478)(172.18.7.10:3479)(172.18.7.11:3478)(172.18.7.11:3479)等四个(IP:端口)对,PC#4充当公网用户,IP配置为172.18.7.125。分别在PC#1和PC#4上运行所开发的RTCClient进行通话。

2.2NAT所带来的问题

NAT顾名思义就是实现了网络地址的翻译,目前广泛应用于私有地址域与公有地址域的转换以缓解IPv4地址匮乏的问题。由于NAT的存在,那些使用到IP地址的高层应用将受到限制,如图1所示,以PC#1和PC#4之间建立SIP连接的情况为例,当NAT内的PC#1向公网上的PC#4发送INVITE请求时,请求的头为:

INVITE:PC#1@172.18.7.125SIP/2.0

Via:SIP/2.0/UDP192.18.7.128

……(略)

INVITE消息的源IP地址经过NAT后,被翻译为172.18.7.124:45040。然而在SIP协议中,PC#4不会按此地址返回100(Trying)响应,而是按Via中的192.18.7.128:29362返回。由于这是个私有地址,发回的响应无法送到PC#1中,连接无法建立。

同样地,对于SIP所控制的媒体流的传输,有关地址和参数信息保存在SIP消息的SDP消息体中。因此

f633f1dcd5f20fd5b26dadc12fab06d6.png

,除了消息本身,SIP所控制的媒体流的传输也

无法完成。

2.3STUN所定义的NAT类型分类

STUN协议用来帮助位于NAT之后的实体发

现NAT的存在,判断NAT的类型,从而得到由NAT

分配的绑定映射地址。STUN无需对NAT进行改

变,适用于处理在应用程序实体与公网间有多重

NAT的情况。

在实际应用中,UDP在不同类型的NAT中处

理是不一样的。根据NAT工作方式的不同,STUN

协议将NAT分为四类。

FullconeNAT:是指所有来自相同内部IP地址

和端口的请求都映射到某一个相同的外部IP地址

和端口上。此外,任意的外部主机可以通过发送信

息包到内部主机对应的外部IP地址上来发送信息

包(在PC#2上安装软件WinRouteLite4.2,可模拟

出此环境)。

RestrictedconeNAT:是指所有来自相同内部

IP地址和端口的请求都映射到某一个相同的外部

IP地址和端口上。与FullconeNAT不同的是,一个

外部主机只能在内部主机曾经发送过信息包给它

的情况下,才能够发送信息包到该内部主机(IP必

须一致,端口号可以不一样,10.0.0.1:6666->

172.18.7.10:3478,172.18.7.10:3478->10.0.0.1:6666

成功,172.18.7.10:3479->10.0.0.1:6666也成功)

(在PC#2上安装软件WinGateV5.0.2,可模拟出此

环境)。

PortrestrictedconeNAT:类似于restrictedcone

NAT,但是限制的还包括端口。也就是说,只有在内

部主机(通过IP地址和端口号)给外部主机发送过

信息包的情况下,该外部主机才可以发送信息包

给该内部主机,并需要明确地表明原来接收内部

主机信息时的IP地址和端口号(Restrictedcone

NAT不需要相同的端口号,10.0.0.1:6666->

172.18.7.10:3478,172.18.7.10:3478->10.0.0.1:6666

成功,172.18.7.10:3479->10.0.0.1:6666不成功)(在

PC#2上安装软件Sygate4.0,可模拟出此环境)。

SymmetricNAT:指的是所有来自相同内部IP

地址和端口到同一目的地的请求都映射到某一个

相同的外部IP地址和端口上。假如相同的主机使用

相同的源IP地址和端口号发送信息包到另一目的图1硬件拓扑图

1557

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值