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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

osip状态机分析「建议收藏」

發(fā)布時間:2023/12/15 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 osip状态机分析「建议收藏」 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

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

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

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

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

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

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

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

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

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

狀態(tài)機ICT(Invite client callout)說明

1、說明:

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

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

狀態(tài)五種狀態(tài)機:

ICT_PRE_CALLING

ICT_CALLING

ICT_PROCEEDING

ICT_COMPLETED

ICT_TERMINATED

ICT_PRE_CALLING:

呼叫前的狀態(tài),系統(tǒng)處于準備狀態(tài)。系統(tǒng)調(diào)用osip_transaction_init函數(shù)后,系統(tǒng)初始化,處于這個狀態(tài)。在這個狀態(tài)下,系統(tǒng)調(diào)用ict_snd_invite,發(fā)送invte請求出去后,系統(tǒng)跳轉(zhuǎn)到ICT_CALLING狀態(tài)。

ICT_CALLING:

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

當系統(tǒng)在此狀態(tài)下接收到1xx消息后,認為對方有響應(yīng),則系統(tǒng)跳到ICT_PROCEEDING狀態(tài)。

ICT_PROCEEDING:

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

ICT_COMPLETED:

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

ICT_TERMINATED:

完成一次呼叫,這是狀態(tài)機的必經(jīng)的最后一個狀態(tài)。狀態(tài)到達這里,就表示了一個狀態(tài)機的完結(jié),也就表示了一個呼叫的完結(jié),無論成功于否,最后都會到達這個終結(jié)狀態(tài)。

系統(tǒng)狀態(tài)切換的函數(shù)見狀態(tài)圖,圖中其它幾個timout事件函數(shù)沒有添加,需要了解的請自己查閱文件。

圖1 ICT狀態(tài)機

圖2 sip完整通話抓包

圖3 sip通話拒接抓包

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。