SIP - 請求與響應報頭欄位



接受

Accept 報頭欄位用於指示訊息正文中可接受的訊息 Internet 媒體型別。

  • 該報頭欄位使用 Internet 中常用的型別/子型別格式描述媒體型別。

  • 如果不存在,則假定的可接受訊息正文格式為application/sdp

  • 媒體型別列表可以使用q值引數設定優先順序。

Accept-Encoding

Accept-Encoding 報頭欄位用於指定可接受的訊息正文編碼方案。

  • 編碼可用於確保具有大型訊息正文的 SIP 訊息適合單個 UDP 資料報。

  • 可以使用q值引數設定優先順序。如果 UAC 不接受列出的任何方案,則返回 406 Not Acceptable 響應。如果未包含,則假定的編碼將為text/plain

To

To指示請求的最終接收者。UA 生成的任何響應都將包含此報頭欄位,並附加一個標籤。這是一個必填報頭。

  • 代理生成的任何響應都必須在To報頭欄位中新增一個標籤。

  • To報頭欄位 URI 從不用於路由。

From

From報頭欄位指示請求的發起者。它是用於識別對話的兩個地址之一。

  • From報頭欄位可能包含用於標識特定呼叫的標籤。

  • 它可能包含顯示名稱,在這種情況下,URI 括在<>中。

  • 這是一個必填報頭。

Call-ID

Call-ID 報頭欄位在所有 SIP 請求和響應中都是必填的。它用於唯一標識兩個使用者代理之間的呼叫。

  • Call-ID 在呼叫之間必須唯一。

  • 使用者代理的所有註冊都應使用相同的 Call-ID。

  • Call-ID 始終由使用者代理建立,並且永遠不會被伺服器修改。

  • 它是一個加密隨機識別符號。

Via

Via 用於記錄請求所採用的 SIP 路由,這有助於將響應路由回發起者。

  • 生成請求的 UA 會在其 Via 報頭欄位中記錄自己的地址。

  • 轉發請求的代理會將包含其自身地址的 Via 報頭欄位新增到 Via 報頭欄位列表的頂部。

  • 代理或生成對請求的響應的 UA 會按順序將請求中的所有 Via 報頭欄位複製到響應中,然後將響應傳送到頂部 Via 報頭欄位中指定的地址。

  • 接收響應的代理會檢查頂部 Via 報頭欄位並與其自身地址匹配。

  • 如果不匹配,則響應已被丟棄。

  • 然後刪除頂部 Via 報頭欄位,並將響應轉發到下一個 Via 報頭欄位中指定的地址。

  • Via 報頭欄位包含協議名稱、版本號和傳輸 (SIP/2.0/UDP、SIP/2.0/TCP 等),並且可能包含埠號和引數,例如 received、rport、branch、maddrttl

  • 如果 UA 或代理從與頂部 Via 報頭欄位中指定的地址不同的地址接收請求,則會在 Via 報頭欄位中新增received標籤。

  • UA 和代理會在 Via 報頭欄位中新增分支引數,該引數計算為 Request-URI、To、From、Call-ID 和 CSeq 編號的雜湊函式。

CSeq

CSeq 報頭欄位是每個請求中都需要的報頭欄位。它包含一個十進位制數字,該數字對於每個請求都會增加。

  • 通常,它在每個新請求中增加 1,但CANCELACK請求除外,它們使用其引用的 INVITE 請求的 CSeq 編號。

  • UAS 使用 CSeq 計數來確定順序錯誤的請求或區分新請求(不同的 CSeq)或重傳(相同的 CSeq)。

  • UAC 使用 CSeq 報頭欄位將響應與其引用的請求匹配。

  • 例如,傳送 INVITE 請求然後傳送 CANCEL 請求的 UAC 可以透過 CSeq 中的方法判斷 200 OK 響應是對邀請請求還是取消請求的響應。

Contact

Contact 報頭欄位用於向其他使用者傳達請求發起者的地址。收到 Contact 報頭欄位後,可以快取 URI 並將其用於對話中未來請求的路由。

例如,INVITE 的 200 OK 響應中的 Contact 報頭欄位可以允許確認 ACK 訊息和此呼叫期間的所有未來請求繞過代理並直接傳送到被叫方。

Record-Route

Record-Route 報頭欄位用於強制透過代理路由兩個 UA 之間會話(對話)中的所有後續請求。

通常,Contact 報頭欄位的存在允許 UA 直接傳送訊息,繞過初始請求中使用的代理鏈。

  • 代理將其地址插入 Record-Route 報頭欄位會覆蓋此操作,並強制將來的請求包含一個 Route 報頭欄位,其中包含該代理的地址,從而強制包含此代理。

  • 希望實現此功能的代理會插入包含其自身 URI 的報頭欄位,或將其 URI 新增到已存在的 Record-Route 報頭欄位中。

  • URI 的構造方式使得 URI 解析回代理伺服器。UAS 將 Record-Route 報頭欄位複製到對請求的 200 OK 響應中。

  • 代理會將報頭欄位不變地轉發回 UAC。然後,UAC 會儲存 Record-Route 代理列表以及 200 OK 中存在的 Contact 報頭欄位,以在所有後續請求中用於 Route 報頭欄位。

Organization

Organization 報頭欄位用於指示訊息發起者所屬的組織。

  • 代理也可以在訊息從一個組織傳遞到另一個組織時插入它。

  • 與所有 SIP 報頭欄位一樣,它可以被代理用於做出路由決策,並被 UA 用於做出呼叫篩選決策。

Retry-After

它用於指示資源或服務何時可能再次可用。

  • 在 503 Service Unavailable 響應中,它指示伺服器何時可用。

  • 在 404 Not Found、600 Busy Everywhere 和 603 Decline 響應中,它指示被叫 UA 何時可能再次可用。

  • 它包含以“秒”為單位的時間段。

Subject

可選的 Subject 報頭欄位用於指示媒體會話的主題。

報頭欄位的內容也可以在提醒期間顯示,以幫助使用者決定是否接受呼叫。

Example:
Subject: How are you?

Supported

Supported 報頭欄位用於列出 UA 或伺服器實現的一個或多個選項。

  • 它通常包含在對 OPTIONS 請求的響應中。

  • 如果未實現任何選項,則不包含報頭欄位。

  • 如果 UAC 在 Supported 報頭欄位中列出選項,則代理或 UAS 可以在呼叫期間使用該選項。

  • 如果必須使用或支援該選項,則改為使用 Require 報頭欄位。

Example:
Supported: rel100

Expires

Expires 報頭欄位用於指示請求或訊息內容有效的時段。

  • 當出現在 INVITE 請求中時,報頭欄位會為完成 INVITE 請求設定時間限制。

  • 也就是說,UAC 必須在此時間段內收到最終響應(非 1xx),否則 INVITE 請求將自動取消,並返回 408 Request Timeout 響應。

  • 會話建立後,原始 INVITE 中 Expires 報頭欄位的值無效——必須為此目的使用 Session-Expires 報頭欄位。

  • 如果出現在 REGISTER 請求中,則報頭欄位會為 Contact 報頭欄位中不包含expires引數的 URI 設定時間限制。

  • Expires 也用於 SUBSCRIBE 請求以指示訂閱持續時間。

Example:
Expires: 30

User-Agent

此報頭欄位用於傳達有關發起請求的 UA 的資訊。

session_initiation_protocol_headers.htm
廣告

© . All rights reserved.