SIP 協議中的定時器

SIP(Session Initiation Protocol) 是一種信令協議,廣泛用于建立、維持和終止多媒體會話(如VoIP通話)。作為基于UDP等不可靠傳輸的協議,SIP 通過多個定時器機制來確保消息的可靠傳輸和狀態機的正常運行。

本文將詳細介紹 SIP 中常用的定時器定義、用途及默認值,主要參考自 RFC 3261。


一、定時器分類概覽

SIP 協議中定時器主要服務于 事務層(Transaction Layer),分為以下兩類:

  • INVITE 事務定時器:用于 INVITE 請求(建立會話)

  • 非 INVITE 事務定時器:如 REGISTER、OPTIONS、BYE 等請求


二、常用定時器詳解

1. Timer A

  • 適用類型:INVITE 客戶端事務(基于UDP)

  • 作用:初始請求超時重傳間隔,指數退避。

  • 默認值T1,一般為 500ms,之后每次翻倍。

  • 示意:發送 INVITE → 無響應 → 500ms → 重傳 → 1s → 重傳 → 2s …


2. Timer B

  • 適用類型:INVITE 客戶端事務

  • 作用:整個事務的最大超時時間,超過則報錯。

  • 默認值64*T1(約 32s)

  • 觸發條件:如果在 Timer B 期間沒有收到任何最終響應(如 200 OK),事務失敗。


3. Timer C

  • 適用類型:INVITE 客戶端事務(TCP 或 TLS 場景)

  • 作用:等待 2xx 最終響應的超時定時器(一般由UA層管理)

  • 默認值:通常實現設為 180s

  • 說明:TCP 無需重傳,但仍需等待響應。


4. Timer D

  • 適用類型:INVITE 服務端事務(UDP)

  • 作用:等待 ACK 的最大時間

  • 默認值32s(當使用 UDP 時,避免重復發送響應)

  • 說明:防止服務端在沒有收到 ACK 的情況下過早刪除事務。


5. Timer E

  • 適用類型:非 INVITE 客戶端事務

  • 作用:請求重傳時間,指數退避

  • 默認值T1 初始,最大不超過 T2(4s)


6. Timer F

  • 適用類型:非 INVITE 客戶端事務

  • 作用:最大等待時間

  • 默認值64*T1(32s)


7. Timer G

  • 適用類型:INVITE 服務端事務

  • 作用:2xx 以下響應重傳間隔

  • 默認值T1,指數退避


8. Timer H

  • 適用類型:INVITE 服務端事務

  • 作用:最大等待 ACK 的時間

  • 默認值64*T1(32s)


9. Timer I

  • 適用類型:INVITE 服務端事務(完成狀態)

  • 作用:事務完成后進入終止狀態前的延遲(UDP)

  • 默認值T4(默認 5s)


10. Timer J

  • 適用類型:非 INVITE 客戶端事務

  • 作用:等待最終響應確認的時間

  • 默認值64*T1(32s)


11. Timer K

  • 適用類型:非 INVITE 服務端事務

  • 作用:事務完成狀態進入終止狀態前的延遲

  • 默認值T4

  • T4


三、默認常量定義

名稱默認值描述
T1500msRTT 基準單位
T24s非 INVITE 重傳最大間隔
T45s網絡層最大響應延遲(用于完成狀態)


四、工程實踐建議

  1. Timer T1 可調節:可以根據網絡延遲配置為 250~1000ms。

  2. TCP/WS場景中 Timer A/G/J 不使用:無需重傳。

  3. 調試時開啟事務日志:如 FreeSWITCH/Sofia 中啟用 sofia tracelevel 9

  4. 使用 Wireshark 驗證定時器觸發點


五、總結

SIP 協議通過定時器機制補償了 UDP 的不可靠性,同時也控制事務狀態機的生命周期。理解這些定時器的定義及作用,對于調試通話建立失敗、消息重傳、事務掛起等問題具有重要價值。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85988.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習深度學習】偏置項(Bias)概念

目錄 前言 一、先說結論:偏置項是“默認起點” 二、類比理解 類比 1:老師給學生的“基礎分” 類比 2:預測房價時的“固定成本” 三、沒有偏置項的模型,會有什么問題? 四、在神經網絡中,偏置項是神經…

使用數組 海選女主角

問題描述 面試那天,剛好來了m * n個MM,站成一個m * n的隊列,副導演Fe(OH)2為每個MM打了分數,分數都是32位有符號整數。 一開始我很納悶:分數怎么還有負的?Fe(OH)2解釋說,根據選拔規則&#xff…

從0開始學習R語言--Day29--社交網絡分析

在探尋數據之間的關系時,由于數據類型的限制,很多時候我們可以從數據的現實角度出發去選擇方法,而不是一昧地從頭嘗試不同方法去分類。假如我們用的是傳染病在市面上的傳播路徑數據,亦或是病毒對于基因的感染模塊,就可…

一款基于 React 的開源酷炫動畫庫

React Bits 是一個開源的交互式 React 組件庫,包含一系列動畫化、交互式且完全可定制的 React 組件,用于構建令人驚艷且難忘的用戶界面,可幫助開發者在 React 應用中輕松實現各種動畫效果。它提供了超過70種動畫組件,分為文本動畫…

深入理解前端理念bundleless

Bundleless 是一種新興的前端開發趨勢,它的核心思想是減少或完全去除傳統的打包步驟,直接利用瀏覽器對現代 JavaScript 特性(尤其是 ES 模塊)的原生支持。這一趨勢背后的推動力包括現代瀏覽器的進步、開發者對更快開發反饋的需求以及更簡單的開發流程。以下是對 bundleless…

馬斯克YC技術核彈全拆解:Neuralink信號編譯器架構·星艦著陸AI代碼·AGI防御協議(附可復現算法核心/開源替代方案/中國技術對標路徑)

一、Neuralink技術棧深度剖析 ? 神經信號編譯架構(基于已公開專利US20220369936) 關鍵算法實現: # 運動意圖解碼核心(簡化版) import numpy as np from sklearn.ensemble import RandomForestClassifierclass Neura…

【RK3568 嵌入式linux QT開發筆記】 二維碼開源庫 libqrencode 交叉靜態編譯和使用

本文參考文章:https://blog.csdn.net/qq_41630102/article/details/108306720 參考文章有些地方描述的有疏漏,導致筆者學習過程中,編譯的.a文件無法在RK3568平臺運行,故寫本文做了修正,以下僅是自我學習的筆記&#xf…

git本地裸倉庫的“激活”:在同一臺 Linux 服務器上創建工作區

大家好!在之前的文章中,我們探討了 Git 裸倉庫(Bare Repository)的概念,它是沒有工作目錄,只包含 .git 目錄內容的特殊倉庫格式,非常適合作為中心化的代碼集散地或備份。我們也了解了 git clone…

如何排查在docker中運行軟件的故障:Docker故障排查可視化指南,三招鎖定問題根源

很多剛接觸Docker的朋友常覺得故障排查很神秘。其實只需關注CPU、內存、磁盤這三大資源指標!Linux終端雖強大但不夠直觀,下面教你用可視化工具輕松監控: 一、宿主機全局監控:FinalShell 掌控全局 連接宿主機 打開FinalShell&…

【論文筆記】【強化微調】T-GRPO:對視頻數據進行強化微調

tulerfeng/Video-R1: Video-R1: Reinforcing Video Reasoning in MLLMs [🔥the first paper to explore R1 for video] 1. 引述 在強化微調中,像 GRPO、DAPO 這樣的方法都是對文本或者圖片進行微調思考,所以這類微調方法不對時序信息做處理&…

【Unity】動畫系統

0 前言 早些時間學動畫系統時的筆記,實際還沒學完,后續計劃會慢慢補全吧。 1 動畫 通常來說動畫都是動畫師來做的,不過Unity也能實現簡單的動畫效果。PS:官方文檔中,將動畫稱之為動畫剪輯。 1.1 創建動畫 首先在Unit…

C++二級指針的用法指向指針的指針(多級間接尋址)

指向指針的指針是一種多級間接尋址的形式,或者說是一個指針鏈。 指針的指針就是將指針的地址存放在另一個指針里面。 通常,一個指針包含一個變量的地址。當我們定義一個指向指針的指針時,第一個指針包含了第二個指針的地址,第二個…

【格與代數系統】示例

【格與代數系統】格與代數系統匯總 例1 設是由誘導的代數系統,則其上的二元運算滿足(ABCD) A. B. C. D. 代數系統滿足交換律、冪等律、吸收律、結合律 例2 是(ABCD) A.有界格 有界格:有最大、最小元…

Stable Diffusion 項目實戰落地:手機壁紙制作-第一篇 從零基礎到生成藝術品的第一步!

大家好!歡迎來到《StableDiffusion實戰-手機壁紙制作》系列的第一篇! 在這一篇文章里,我們將一起探索如何用StableDiffusion(SD)這款強大的工具,快速制作出炫酷的手機壁紙。 如果你對生成藝術、AI繪圖感興趣,那你一定不能錯過! 你能做什么?你將做什么! 在之前的系…

WEB3開啟 Hardhat 自動驗證有什么意義

這是個非常好的問題,尤其是你在學習 Web3 后端開發時,理解為什么要啟用 Hardhat 自動驗證合約源碼,會讓你開發流程更完整、更專業。 ? 一句話總結: 開啟 Hardhat 自動驗證的意義是:讓你的合約在區塊鏈瀏覽器&#xff…

Qt窗?的學習(一)

Qt窗?是通過QMainWindow類來實現的。 QMainWindow是?個為??提供主窗?程序的類,繼承?QWidget類,并且提供了?個預定義的 布局。QMainWindow包含?個菜單欄(menubar)、多個?具欄(toolbars)、多個浮動窗?(鉚 接部…

C++ 面試題常用總結 詳解(滿足c++ 崗位必備,不定時更新)

📚 本文主要總結了一些常見的C面試題,主要涉及到語法基礎、STL標準庫、內存相關、類相關和其他輔助技能,掌握這些內容,基本上就滿足C的崗位技能(紅色標記為重點內容),歡迎大家前來學習指正&…

git提交的腳本無執行權限怎么辦

問題描述 自己寫的小項目,沒有在服務器安裝 Jenkins 進行項目部署,為了圖方便,在項目中編寫了一個 deploy.sh 腳本文件用來執行項目部署。但是在服務器上 pull 下來之后發現腳本文件沒有執行權限,通過 chmod 命令進行賦權&#x…

004.chromium編譯進階-啟動時傳入cookies

一、目標: 實現傳入參數--set-cookies[{"domain":"https://baidu.com","name":"AAAA","value":"111"},{"domain":"https://baidu.com","name":"BBB","…

【數據庫復習】

數據庫復習題 一、填空題1.數據庫系統一般由(數據庫)、應用系統、(數據庫管理系統)、(數據庫管理員)和用戶構成。2.數據模型通常由(數據結構)、(數…