NAT地址轉(zhuǎn)換技術(shù)與SIP 協(xié)議交互
1、 sip消息與NAT交互密切的字段
-
Via 字段
用于記錄消息經(jīng)過(guò)的路徑,包含發(fā)送方的 IP 地址和端口信息。當(dāng) SIP 消息穿越 NAT 時(shí),NAT 設(shè)備會(huì)修改該字段中的源 IP 地址和端口為其公網(wǎng)側(cè)的 IP 地址和端口。
-
Contact 字段
通常攜帶終端希望接收后續(xù)消息的 IP 地址和端口。如果終端位于 NAT 之后,該字段中的地址信息需要被 NAT 設(shè)備轉(zhuǎn)換,以便外部設(shè)備能正確將消息發(fā)回給終端。
-
SDP(會(huì)話描述協(xié)議)
包含媒體流的相關(guān)信息,如音頻、視頻的編碼格式,以及媒體流傳輸?shù)?/span> IP 地址和端口。這些地址和端口信息也需要根據(jù) NAT 的轉(zhuǎn)換進(jìn)行調(diào)整,以確保媒體流能在 NAT 設(shè)備內(nèi)外正確傳輸。
2、 NAT 對(duì) SIP 消息的轉(zhuǎn)換過(guò)程
-
內(nèi)部網(wǎng)絡(luò)到外部網(wǎng)絡(luò)
當(dāng)內(nèi)部網(wǎng)絡(luò)中的 SIP 終端發(fā)送消息時(shí),NAT 設(shè)備會(huì)檢查消息中的 IP 地址和端口信息。它將消息中源 IP 地址(私有地址)替換為 NAT 設(shè)備公網(wǎng)接口的 IP 地址,并為該會(huì)話分配一個(gè)可用的端口號(hào),同時(shí)在 NAT 轉(zhuǎn)換表中記錄私有地址與公網(wǎng)地址及端口的映射關(guān)系。對(duì)于 SIP 消息中的 Via、Contact 和 SDP 等字段中的地址信息,NAT 設(shè)備也會(huì)進(jìn)行相應(yīng)修改,使其與轉(zhuǎn)換后的公網(wǎng)地址和端口一致。
-
外部網(wǎng)絡(luò)到內(nèi)部網(wǎng)絡(luò)
當(dāng)外部網(wǎng)絡(luò)中的設(shè)備響應(yīng) SIP 消息時(shí),消息到達(dá) NAT 設(shè)備。NAT 設(shè)備根據(jù)消息中的目的 IP 地址(即 NAT 設(shè)備的公網(wǎng)地址)和端口號(hào),查找 NAT 轉(zhuǎn)換表,找到對(duì)應(yīng)的內(nèi)部私有地址和端口,然后將消息中的目的地址和端口替換為內(nèi)部終端的私有地址和端口,再將消息轉(zhuǎn)發(fā)給內(nèi)部的 SIP 終端。
3、 SIP 協(xié)議與 NAT 交互的具體情況
-
SIP 會(huì)話建立過(guò)程中與 NAT 的交互
內(nèi)部終端 A(私有 IP 地址為 192.168.1.100)向外部終端 B 發(fā)起 SIP 會(huì)話,發(fā)送 INVITE 消息。NAT 設(shè)備將 INVITE 消息中的源 IP 地址 192.168.1.100 轉(zhuǎn)換為公網(wǎng) IP 地址 202.100.100.100,并分配端口號(hào) 5000,同時(shí)修改 Via 字段和 Contact 字段中的地址信息。外部終端 B 收到 INVITE 消息后,發(fā)送 18x(臨時(shí)響應(yīng))和 200 OK 消息。這些消息返回時(shí),NAT 設(shè)備根據(jù)映射關(guān)系將目的地址 202.100.100.100:5000 轉(zhuǎn)換回 192.168.1.100,將消息轉(zhuǎn)發(fā)給終端 A,完成會(huì)話建立。
-
媒體流協(xié)商過(guò)程中 SIP 與 NAT 的交互
在 SIP 會(huì)話建立后的媒體流協(xié)商階段,內(nèi)部終端 A 在 SDP 中聲明其接收媒體流的端口為私有端口 6000。NAT 設(shè)備將 SDP 中的地址信息修改為對(duì)應(yīng)的公網(wǎng)地址 202.100.100.100 和端口號(hào) 7000,并記錄映射關(guān)系。外部終端 B 根據(jù)修改后的 SDP 信息,將媒體流發(fā)送到 202.100.100.100:7000。NAT 設(shè)備收到媒體流數(shù)據(jù)包后,根據(jù)映射關(guān)系將目的地址轉(zhuǎn)換為 192.168.1.100:6000,轉(zhuǎn)發(fā)給內(nèi)部終端 A,實(shí)現(xiàn)媒體流的正常傳輸。