NAT地址转换技术与SIP 协议交互
扫描二维码
随时随地手机看文章
1、 sip消息与NAT交互密切的字段
-
Via 字段
用于记录消息经过的路径,包含发送方的 IP 地址和端口信息。当 SIP 消息穿越 NAT 时,NAT 设备会修改该字段中的源 IP 地址和端口为其公网侧的 IP 地址和端口。
-
Contact 字段
通常携带终端希望接收后续消息的 IP 地址和端口。如果终端位于 NAT 之后,该字段中的地址信息需要被 NAT 设备转换,以便外部设备能正确将消息发回给终端。
-
SDP(会话描述协议)
包含媒体流的相关信息,如音频、视频的编码格式,以及媒体流传输的 IP 地址和端口。这些地址和端口信息也需要根据 NAT 的转换进行调整,以确保媒体流能在 NAT 设备内外正确传输。
2、 NAT 对 SIP 消息的转换过程
-
内部网络到外部网络
当内部网络中的 SIP 终端发送消息时,NAT 设备会检查消息中的 IP 地址和端口信息。它将消息中源 IP 地址(私有地址)替换为 NAT 设备公网接口的 IP 地址,并为该会话分配一个可用的端口号,同时在 NAT 转换表中记录私有地址与公网地址及端口的映射关系。对于 SIP 消息中的 Via、Contact 和 SDP 等字段中的地址信息,NAT 设备也会进行相应修改,使其与转换后的公网地址和端口一致。
-
外部网络到内部网络
当外部网络中的设备响应 SIP 消息时,消息到达 NAT 设备。NAT 设备根据消息中的目的 IP 地址(即 NAT 设备的公网地址)和端口号,查找 NAT 转换表,找到对应的内部私有地址和端口,然后将消息中的目的地址和端口替换为内部终端的私有地址和端口,再将消息转发给内部的 SIP 终端。
3、 SIP 协议与 NAT 交互的具体情况
-
SIP 会话建立过程中与 NAT 的交互
内部终端 A(私有 IP 地址为 192.168.1.100)向外部终端 B 发起 SIP 会话,发送 INVITE 消息。NAT 设备将 INVITE 消息中的源 IP 地址 192.168.1.100 转换为公网 IP 地址 202.100.100.100,并分配端口号 5000,同时修改 Via 字段和 Contact 字段中的地址信息。外部终端 B 收到 INVITE 消息后,发送 18x(临时响应)和 200 OK 消息。这些消息返回时,NAT 设备根据映射关系将目的地址 202.100.100.100:5000 转换回 192.168.1.100,将消息转发给终端 A,完成会话建立。
-
媒体流协商过程中 SIP 与 NAT 的交互
在 SIP 会话建立后的媒体流协商阶段,内部终端 A 在 SDP 中声明其接收媒体流的端口为私有端口 6000。NAT 设备将 SDP 中的地址信息修改为对应的公网地址 202.100.100.100 和端口号 7000,并记录映射关系。外部终端 B 根据修改后的 SDP 信息,将媒体流发送到 202.100.100.100:7000。NAT 设备收到媒体流数据包后,根据映射关系将目的地址转换为 192.168.1.100:6000,转发给内部终端 A,实现媒体流的正常传输。