| Timer | 值 | 適用 | 說明 |
|---|---|---|---|
| T1 | 預設 0.5s | 17.1.1.1 | 預估的來回時間 (RTT) |
| T2 | 4s | non-INVITE 請求 INVITE 回應 | 最大重送間隔 |
| T4 | 5s | non-INVITE Client Transaction | 訊息停留在網路的最大時間 |
| A | T1, 2*T1, ... | INV 請求 | UDP 請求重送間隔 |
| E | T1, 2*T1, ... (最大 T2) | non-INV 請求 | |
| G | 17.2.1 | INVITE 回應的重送間隔 | |
| B | 64*T1 | Client Transaction | 等候回應逾時 |
| F | |||
| H | 64*T1 | 17.2.1 | 等候 ACK |
| D | UDP: > 32s TCP/SCTP:0 | INVITE Client Transaction | 等候重送的回應 |
| K | UDP: T4 TCP/SCTP:0 | Non-INVITE Client Transaction | 等候重送的回應 |
| I | UDP: T4 TCP/SCTP:0 | 17.2.1 | 等候重送的 ACK |
| J | UDP: 64*T1 TCP/SCTP:0 | 17.2.2 | 等候重送的非 INVITE 請求 |
| C | > 3min | 16.6 bullet 11 | Proxy INVITE transaction 逾時 |
2019年7月20日 星期六
SIP Timers
2019年7月19日 星期五
SIP Option Tags
option-tag 是 SIP 的擴充選項,例如 100rel 等,本身是不超過 20 字元的 alphanum 字串 (在 SIP ABNF 定義 option-tag = token),用在信頭欄位 Require、Proxy-Require、Supported 和 Unsupported 來表示是否支援及採用。
擴充選項的支援及採用
UAC 在 Supported 放可支援的 option-tag、或在 Require 放 UAS 必須支援的 option-tag、或在 Proxy-Require 放 Proxy 必須支援的 option-tag。Proxy 如果不支援 Proxy-Require 的 option-tag,回 420。UAS 如果不支援 Require 的 option-tag,回 420。UAS 需要的 option-tag 沒列在 Supported,回 421。UAS 採用的 option-tag,列在回應的 Require。
- 發請求表示可支援的或必須支援的 option-tag。
- Supported 列支援的 option-tag。
- Require 列 UAS 必須支援的 option-tag。
- Proxy-Require 列 Proxy 必須支援的 option-tag。
- CANCEL 和失敗 INVITE 的 ACK 不用 Require 和 Proxy-Require。
- 成功 INVITE 的 ACK 只能包含 INVITE Require 和 Proxy-Require 有的 option-tag。
- UAC 如果收到 420 Bad Extension,應該嘗試再次請求,但這次略過列在回應 Unsupported 的 option-tag。
- 檢查 Proxy-Require,如有不支援回 420 Bad Extension。
- 忽略 CANCEL 和失敗 INVITE 的 ACK 的 Proxy-Require。
- 檢查 Require,如有不支援回 420 Bad Extension。
- 需要某 option-tag 才能進行,但 Supported 沒列,回 421 Extension Required。
- 忽略 CANCEL 和失敗 INVITE 的 ACK 的 Require。
- 成功 INVITE 的 ACK 只能包含 INVITE Require 有的 option-tag。
- 採用時,回應含 Require 列啟用的 option-tag。
相關信頭欄位
Proxy-Require
告訴 Proxy 必須支援哪些 option-tag 才能處理請求。proxy 可新增、不能加密。
Proxy-Require = "Proxy-Require" HCOLON option-tag *(COMMA option-tag)
範例:
Proxy-Require: foo
Require
必須支援的 option-tag,用在請求、421 Extension Required、或在其它回應表示採用。Proxy 可新增、不能加密。
Require = "Require" HCOLON option-tag *(COMMA option-tag)範例:
Require: 100rel
Supported (k)
在請求是 UAC 告訴 UAS 支援哪些 option-tag。在 SIP OPTIONS 回應是 UAS 告訴 UAC 支援哪些 option-tag。空白表示所有都不支援。在 RFC2543 沒有。INVITE 及其 2xx 回應應該要有。
Supported = ( "Supported" / "k" ) HCOLON [option-tag *(COMMA option-tag)]範例:
Supported: 100rel
Unsupported
用在 420 Bad Extension,告訴 UAC 不支援的 option-tag。
Unsupported = "Unsupported" HCOLON option-tag *(COMMA option-tag)範例:
Unsupported: foo
相關回應碼
420 Bad Extension
不當擴充。
Proxy 不認得 Proxy-Require 或 UAS 不認得 Require 列的某些 option-tag。回應必須含有 Unsupported 表示不支援的 option-tag 有哪些。UAC 應該再次嘗試請求,但這次略過列在回應 Unsupported 的 option-tag。
例如: UAC->UAS: INVITE sip:watson@bell-telephone.com SIP/2.0
Require: 100rel
UAS->UAC: SIP/2.0 420 Bad Extension
Unsupported: 100rel
421 Extension Required
需要擴充。
UAS 需要特定 option-tag 處理請求,但沒列在請求的 Supported。421 回應含 Require 表示需要的 option-tag。罕用。
擴充選項
全部註冊的擴充選項及相關 RFC 參見 IANA。參考
RFC 3261SIP header Via
所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...
-
列出目錄的檔案。 opendir(目錄) 或 fdopendir(fd) 開啟一個 directory stream (DIR),包含此目錄的所有檔案 (含目錄)。readdir(DIR *) 自 directory stream 取得一個檔案,用 struct direct ...
-
-l:輸出 Long Listing 格式,包括下列資訊: 檔案 type and permissions:有 10 個字母,第 1 個字母是 file type: -:一般檔案 b:block device c:character device d:direct...
-
APRS(Automatic Packet Reporting System)字面翻是「自動封包回報系統」,其實是「自動位置回報系統』,是業餘無線電結合全球衛星定位系統 (GPS),以 AFSK AX.25 通訊模式回報給世界各地的 APRS 接收電台,電台再透過網際網路上傳到 ...