它們之間具體有以下幾個方面的不同:
- 消息格式的不同,VIA包括對消息內容包括協議名稱,版本,傳輸方式,端口號碼,接收端口,branch 的參數等等。Record-Route則一般僅僅包括協議,IP地址,ftag和lr參數。

- 每個路徑都通過VIA添加呼叫路徑信息,返回時都會移除相應的路徑消息。
- VIA消息可以加密,Record-Route則不能加密。
- Record-Route是由proxy在request中插入header消息,支持同樣的call-id, 為了支持下一個的路由請求。
- VIA則是通過server插入request中來檢測是否產生loop回環,幫助抵達下目的地。
以下部分介紹的是在整個呼叫路由過程中,終端得到的INVITE消息,200 OK 消息和ACK消息。這三種消息根據不同的路由路徑都發生了修改。
- VIA路由以后到返回的整個流程中,每看到一個hop就會添加一個header 記錄。反之,返回一個hop就會移除一個VIA記錄。從整個Request中,我們可以看到從Proxy 1 到 Proxy 2 , 最后抵達的VIA header 消息內容。

- Record-Route會通過Request由終端產生。整個處理過程中的INVITE 消息, 返回的200 OK和ACK中的參數都會有所更新。以下是經過防火墻公網地址的 INVITE message:

返回的200 OK的消息, 在Contact中的地址就是Gateway的IP地址,號碼就是我們最終應答的號碼。

在回復的ACK消息中,Request-URL成為了Gateway的IP地址:

在本章節中,我們介紹了VIA和Record-Rout的區別和相應的記錄信息。在不同的路由節點會發生不同的變化,特別是Route的字段,通過不斷的查詢相關的URL最終找到最終呼叫號碼。用戶可以根據自己的環境來安裝PBX和企業網關進行測試。
請加微信公眾號:asterisk-cn,關注有價值的行業技術分享, 訪問技術論壇:www.issabel.cn/forum 獲得技術幫助。