- 會話發起協議教程
- SIP - 首頁
- SIP - 簡介
- SIP - 網路元素
- SIP - 基本呼叫流程
- SIP - 訊息傳遞
- SIP - 響應程式碼
- SIP - 報頭
- SIP - 會話描述協議
- SIP - 提供/應答模型
- SIP - 移動性
- SIP - 分支
- SIP - 代理和路由
- SIP 到 PSTN
- SIP - 編解碼器
- SIP - B2BUA
- SIP 有用資源
- SIP - 快速指南
- SIP - 有用資源
- SIP - 討論
SIP - 代理和路由
眾所周知,代理伺服器可以是無狀態的或有狀態的。在本節中,我們將進一步討論代理伺服器和 SIP 路由。
無狀態代理伺服器
無狀態代理伺服器簡單地轉發它接收到的訊息。這種伺服器不儲存任何呼叫或事務資訊。
- 無狀態代理伺服器在轉發 SIP 請求後會忘記該請求。
- 透過無狀態代理伺服器,事務將很快。
有狀態代理伺服器
有狀態代理伺服器會跟蹤它接收到的每個請求和響應。如果需要,它可以在將來使用儲存的資訊。如果它沒有從另一方收到響應,它可以重新傳輸請求。
有狀態代理伺服器在轉發請求後會記住該請求,因此它們可以將其用於高階路由。有狀態代理伺服器維護事務狀態。事務意味著事務狀態,而不是呼叫狀態。
與無狀態代理伺服器相比,有狀態代理伺服器的事務速度並不快。
有狀態代理伺服器可以在需要時進行分支和重新傳輸。(例如:呼叫轉發忙,例如)。
Via 和 Record-route
Record-Route
Record-Route 報頭由希望位於同一呼叫 ID 後續請求路徑中的代理插入請求中。然後,使用者代理使用它來路由後續請求。
Via
伺服器將 Via 報頭插入請求中以檢測迴圈並幫助響應找到返回客戶端的路徑。這僅有助於響應到達其目的地。
UA 本身在傳送請求時生成並將其自己的地址新增到 Via 報頭欄位中。
轉發請求的代理會在 Via 報頭欄位列表的頂部新增一個包含其自身地址的 Via 報頭欄位。
生成對請求的響應的代理或 UA 會按順序將請求中的所有 Via 報頭欄位複製到響應中,然後將響應傳送到頂部 Via 報頭欄位中指定的地址。
接收響應的代理會檢查頂部的 Via 報頭欄位並與其自己的地址匹配。如果不匹配,則會丟棄該響應。
然後刪除頂部的 Via 報頭欄位,並將響應轉發到下一個 Via 報頭欄位中指定的地址。
Via 報頭欄位包含協議名稱、版本號和傳輸(SIP/2.0/UDP、SIP/2.0/TCP 等),幷包含埠號和引數,例如 received、rport、branch。
如果 UA 或代理從與頂部 Via 報頭欄位中指定的地址不同的地址接收請求,則會將 received 標記新增到 Via 報頭欄位中。
UA 和代理會向 Via 報頭欄位新增 branch 引數,該引數計算為 Request-URI、To、From、Call-ID 和 CSeq 編號的雜湊函式。