自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Osip2和eXosip協(xié)議棧的簡(jiǎn)介

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
Osip2是一個(gè)開(kāi)放源代碼的sip協(xié)議棧,是開(kāi)源代碼中不多使用C語(yǔ)言寫的協(xié)議棧之一,而eXosip是Osip2的一個(gè)擴(kuò)展協(xié)議集,如下我們給大家簡(jiǎn)單介紹一下Osip2和eXosip協(xié)議棧的相關(guān)內(nèi)容。

Osip2是一個(gè)開(kāi)放源代碼的sip協(xié)議棧,是開(kāi)源代碼中不多使用C語(yǔ)言寫的協(xié)議棧之一,它具有短小簡(jiǎn)潔的特點(diǎn),專注于sip底層解析使得它的效率比較高。

eXosip是Osip2的一個(gè)擴(kuò)展協(xié)議集,它部分封裝了Osip2協(xié)議棧,使得它更容易被使用。

一、介紹

Osip2是一個(gè)開(kāi)放源代碼的sip協(xié)議棧,是開(kāi)源代碼中不多使用C語(yǔ)言寫的協(xié)議棧之一,它具有短小簡(jiǎn)潔的特點(diǎn),專注于sip底層解析使得它的效率比較高。但缺點(diǎn)也很明顯,首先就是可用性差,沒(méi)有很好的api封裝,使得上層應(yīng)用在調(diào)用協(xié)議棧時(shí)很破碎;其次,只做到了transaction層次的協(xié)議過(guò)程解析,缺少call、session、dialog等過(guò)程的解析,這也增加了使用的難度;再次,缺少線程并發(fā)處理的機(jī)制,使得它的處理能力有限。

eXosip是Osip2的一個(gè)擴(kuò)展協(xié)議集,它部分封裝了Osip2協(xié)議棧,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等過(guò)程的解析,使得實(shí)用性更強(qiáng)。但是eXosip局限于UA的實(shí)現(xiàn),使得它用于registrar、sipserver等應(yīng)用時(shí)極其不容易。另外,它并沒(méi)有增加線程并發(fā)處理的機(jī)制。而且只實(shí)現(xiàn)了音頻支持,缺少對(duì)視頻和其它數(shù)據(jù)格式的支持。

綜合來(lái)說(shuō),Osip2加上eXosip協(xié)議棧仍然是個(gè)實(shí)現(xiàn)Sip協(xié)議不錯(cuò)的選擇。當(dāng)然需要根據(jù)不同的需求來(lái)增加更多的內(nèi)容。

二、Osip2協(xié)議棧的組成

Osip2協(xié)議棧大致可以分為三部分:sip協(xié)議的語(yǔ)法分析、sip協(xié)議的過(guò)程分析和協(xié)議棧框架。

1、Sip協(xié)議的語(yǔ)法分析:主要是osipparser2部分,目前支持RFC3261和RFC3265定義的sip協(xié)議消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定義的PRACK。

遵循RFC3264關(guān)于SDP的offer/answer模式。帶有SDP的語(yǔ)法分析。

支持MD5加解密算法。支持Authorization、www_authenticate和proxy_authenticate。

2、Sip協(xié)議的過(guò)程分析:

主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip協(xié)議描述過(guò)程,圍繞transaction這一層來(lái)實(shí)現(xiàn)sip的解析。

Transaction是指一個(gè)發(fā)送方和接收方的交互過(guò)程,由請(qǐng)求和應(yīng)答組成。請(qǐng)求分為Invite類型和Non-Invite類型。應(yīng)答分為響應(yīng)型的應(yīng)答和確認(rèn)型的應(yīng)答。響應(yīng)型的應(yīng)答是指這個(gè)應(yīng)答僅代表對(duì)方收到請(qǐng)求。請(qǐng)求經(jīng)過(guò)處理后都必須返回確認(rèn)型的應(yīng)答。響應(yīng)型的應(yīng)答有1xx,確認(rèn)型的應(yīng)答包括2xx、3xx、4xx、5xx和6xx。一個(gè)transaction由一個(gè)請(qǐng)求和一個(gè)或多個(gè)響應(yīng)型應(yīng)答、一個(gè)確認(rèn)型應(yīng)答組成。

Transaction根據(jù)請(qǐng)求的不同和發(fā)送/接收的不同可以分為四類:ict、nict、ist和nist。

Ict是指Inviteclienttransaction,就是會(huì)話邀請(qǐng)的發(fā)起方。

Nict是指Non-Inviteclienttransaction,是指非邀請(qǐng)會(huì)話的發(fā)起方。

Ist是指Inviteservertranaction,是指會(huì)話邀請(qǐng)的接收方。

Nist是指Non-Inviteservertransaction,是指非邀請(qǐng)會(huì)話的接收方。

每種類型的transaction都有自己相應(yīng)的狀態(tài)機(jī),Osip2協(xié)議棧根據(jù)狀態(tài)機(jī)來(lái)處理所有的sip事件,所以這部分就是整個(gè)協(xié)議棧的核心。但是因?yàn)镺sip2只做到transaction這一層,所以它可以忽略掉call、registration等應(yīng)用的復(fù)雜性,顯得相當(dāng)簡(jiǎn)單,這就使得需要使用它的應(yīng)用必須要自己處理應(yīng)用的邏輯。必須注意的一點(diǎn)是,transaction的資源在Osip里是由協(xié)議棧負(fù)責(zé)釋放的,但是在Osip2里改成由使用的應(yīng)用負(fù)責(zé)釋放。

下面簡(jiǎn)單的用時(shí)序圖來(lái)描述四種transaction的狀態(tài)機(jī),只著重于描述狀態(tài)間的轉(zhuǎn)換,忽略了調(diào)用的處理函數(shù),也簡(jiǎn)化了很多沒(méi)有狀態(tài)變換的事件。也就是說(shuō),每個(gè)狀態(tài)下定義的事件并沒(méi)有完整的表現(xiàn)在圖中,不要以為這些事件沒(méi)定義或在該狀態(tài)下沒(méi)有處理。

圖中方框里的是狀態(tài)名,箭頭線上的是觸發(fā)狀態(tài)變換的事件名稱。同一個(gè)狀態(tài)下的事件并沒(méi)有時(shí)序關(guān)系。

3、協(xié)議??蚣埽?/strong>

框架并不是指代碼的某一部分,而是指它的構(gòu)成形式。主要有三部分:底層套接字接收/發(fā)送,模塊間通信管道,上層調(diào)用api接口。

Osip2并不實(shí)現(xiàn)底層套接字的接收/發(fā)送,由eXosip實(shí)現(xiàn),現(xiàn)在只支持UDP的鏈路連接。

模塊間的通信管道包括:transaction的消息管道、jevent的消息管道。Transaction的消息管道是驅(qū)動(dòng)其狀態(tài)機(jī)的部件,通過(guò)不斷的接收來(lái)自底層套接字的遠(yuǎn)端信令,或者來(lái)自上層調(diào)用的指令,根據(jù)上述的狀態(tài)機(jī)制來(lái)驅(qū)動(dòng)這個(gè)transaction的運(yùn)轉(zhuǎn)。Jevent的消息管道是eXosip實(shí)現(xiàn)的,用于匯報(bào)底層事件,使得調(diào)用程序能處理感興趣的事件。

上層調(diào)用的api接口大致有兩類:sip協(xié)議的調(diào)用接口和sdp協(xié)議的調(diào)用接口。EXosip封裝了大部分的sip協(xié)議調(diào)用接口,一般來(lái)說(shuō)都不需要直接調(diào)用osip2的接口函數(shù)。接口函數(shù)很多,在這里就不詳述了,函數(shù)定義請(qǐng)參照源代碼部分的注釋。

三、eXosip協(xié)議棧的分析

eXosip是Osip2協(xié)議棧的封裝和調(diào)用。它實(shí)現(xiàn)了作為單個(gè)sip終端的大部分功能,如register、call、subscription等。

EXosip使用UDPsocket套接字實(shí)現(xiàn)底層sip協(xié)議的接收/發(fā)送。并且封裝了sip消息的解釋器。

EXosip使用定時(shí)輪循的方式調(diào)用Osip2的transaction處理函數(shù),這部分是協(xié)議棧運(yùn)轉(zhuǎn)的核心。透過(guò)添加/讀取transaction消息管道的方式,驅(qū)動(dòng)transaction的狀態(tài)機(jī),使得來(lái)自遠(yuǎn)端的sip信令能匯報(bào)給調(diào)用程序,來(lái)自調(diào)用程序的反饋能通過(guò)sip信令回傳給遠(yuǎn)端。

EXosip增加了對(duì)各個(gè)類型transaction的超時(shí)處理,確保所有資源都能循環(huán)使用,不會(huì)被耗用殆盡。

EXosip使用jevent消息管道來(lái)向上通知調(diào)用程序底層發(fā)生的事件,調(diào)用程序只要讀取該消息管道,就能獲得感興趣的事件,進(jìn)行相關(guān)的處理。

EXosip里比較重要的應(yīng)用有j_calls、j_subscribes、j_notifies、j_reg、j_pub、osip_negotiation和authinfos。J_calls對(duì)應(yīng)呼叫鏈表,記錄所有當(dāng)前活動(dòng)的呼叫。J_reg對(duì)應(yīng)注冊(cè)鏈表,記錄所有當(dāng)前活動(dòng)的注冊(cè)信息。Osip_negotiation記錄本地的能力集,用于能力交換。Authinfos記錄需要的認(rèn)證信息。

【編輯推薦】

  1. 嵌入式平臺(tái)中配置雙協(xié)議棧的問(wèn)題
  2. 你知道Linux網(wǎng)絡(luò)協(xié)議棧嗎?
  3. 嵌入式平臺(tái)中配置雙協(xié)議棧的問(wèn)題
  4. 簡(jiǎn)析開(kāi)源協(xié)議棧
責(zé)任編輯:于爽 來(lái)源: hi.baidu.com
相關(guān)推薦

2010-06-17 15:19:52

WAP協(xié)議棧

2010-09-08 11:59:38

藍(lán)牙協(xié)議棧

2010-09-08 09:49:28

藍(lán)牙協(xié)議棧

2010-05-26 14:12:06

IPv6協(xié)議

2010-09-09 13:09:33

協(xié)議棧開(kāi)發(fā)

2011-11-09 14:59:37

LwIP協(xié)議棧

2010-07-06 16:02:30

HART協(xié)議

2011-11-08 21:24:30

SNMP

2010-06-17 15:23:38

WAP協(xié)議棧

2010-09-27 14:10:29

DNS協(xié)議簡(jiǎn)介

2009-12-17 16:55:03

OSPF路由協(xié)議

2010-09-09 13:30:03

Linux網(wǎng)絡(luò)協(xié)議棧

2010-09-08 12:16:18

2010-06-11 14:15:23

WAP協(xié)議棧

2010-09-08 15:34:27

TCP IP協(xié)議棧

2010-09-09 13:19:47

H.323協(xié)議協(xié)議棧開(kāi)發(fā)

2023-10-27 08:58:02

2010-07-02 11:45:09

BitTorrent協(xié)

2010-09-08 15:06:26

藍(lán)牙協(xié)議棧

2010-09-08 14:59:27

藍(lán)牙協(xié)議棧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)