日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

osip状态机分析

發布時間:2023/12/13 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 osip状态机分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載于:http://blog.csdn.net/lbc2100/article/details/48342889

OSIP的核心是系統狀態機,在不同情況下,系統處于不同的狀態,在某一狀態下當系統發生某一個動作后(如接受或者發送了消息),狀態機做相應的跳轉。的狀態機在不同的狀態下,對某一動作的響應也是不一樣的。

由于SIP的復雜性,為了降低代碼實現難度,也為了能夠保證代碼的模塊化,Osip把整個SIP的實現分成了四個狀態機,分別是:

(1)ICT (帶invit事件的out處理)

(2)IST (帶invit事件的in處理)

(3)NCT(不帶invit事件的out處理)

(4)NST(不帶invit事件的in處理)

實際上,1和2是一隊連接,1負責一個callout,2負責一個相應的callin,3和4也是一樣,不同之處是他們負責的是不帶invite的請求,比如NOTIFY,SUBSCRIBE等等。下面對這些狀態機做說明。

(1)ICT callout的狀態機,當系統make a call out的時候,系統處于這個狀態機,這個狀態機處理1xx,2xx,3xxx等消息,圍繞這些消息,系統的狀態機切換狀態。

(2)IST callin的狀態機,當系統接收到一個invite請求后,系統處于這個狀態機下,在這個狀態機下,系統發送1xx,2xx消息。可以看到,狀態機1和2負責電話呼叫流程的控制,而3和4負責其它的非呼叫的狀態控制。

(3)NCT 無invite的out請求的狀態機,實際上就是初了invit呼叫的其它狀態處理,比如NOTIFY等等。

(4)NST無invite的in請求的狀態機,和上面的對應,沒什么好講。

這四個狀態機的實現是基本一致的,你理解了其中一個,理解其他三個就沒有任何問題了,在這里我詳細的將第一個,其它的您可以舉一反三。如果看這些東西有困難,建議您先看下RTC3261,熟悉下SIP呼叫流程,這也許對您理解OSIP狀態機有幫助。

狀態機ICT(Invite client callout)說明

1、說明:

本文件的作用是解釋終端callout的時候的狀態控制,它是osip中的四個狀態機中最重要的一個,處理callout的各種事件,比如180,200,timeout等等。文件中的函數是系收發消息的核心處理函數,為狀態機切換服務。其它三個狀態機和此類似。

包含文件:fsm.h、ict_fsm.c、ist_fsm.c、ict.c、ist.c。

狀態五種狀態機:

ICT_PRE_CALLING

ICT_CALLING

ICT_PROCEEDING

ICT_COMPLETED

ICT_TERMINATED

ICT_PRE_CALLING:

呼叫前的狀態,系統處于準備狀態。系統調用osip_transaction_init函數后,系統初始化,處于這個狀態。在這個狀態下,系統調用ict_snd_invite,發送invte請求出去后,系統跳轉到ICT_CALLING狀態。

ICT_CALLING:

已經成功發送invit請求,但還沒有收到遠方的任何響應的時候,系統處于此狀態。在這個狀態下,當timeouta時間到達后,系統會沖發消息,以確保對方可以收到請求包。當timeb時間到達后,系統認為對方無響應,狀態直接跳到ICT_TERMINATED狀態,釋放資源完成此次呼叫。

當系統在此狀態下接收到1xx消息后,認為對方有響應,則系統跳到ICT_PROCEEDING狀態。

ICT_PROCEEDING:

當系統發送invite后,接收到對方的響應(100 trying),系統跳到此狀態。正常接收到200 OK后,系統跳到ICT_TERMINATED,認為完成一次請求。如果接收到3456xxx等請求,系統跳到ICT_COMPLETED,發送ACK給對方(有些不需要發送ACK),設置timeoutd時間,等待D時間到來。

ICT_COMPLETED:

當系統接收到3456xx的時候,系統發送ACK給對方,系統處于此狀態,當timeoutd時間到達后,系統跳到ICT_TERMINATED狀態,完成一次呼叫。

ICT_TERMINATED:

完成一次呼叫,這是狀態機的必經的最后一個狀態。狀態到達這里,就表示了一個狀態機的完結,也就表示了一個呼叫的完結,無論成功于否,最后都會到達這個終結狀態。

系統狀態切換的函數見狀態圖,圖中其它幾個timout事件函數沒有添加,需要了解的請自己查閱文件。

圖1 ICT狀態機

圖2 sip完整通話抓包

圖3 sip通話拒接抓包

總結

以上是生活随笔為你收集整理的osip状态机分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。