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