亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

您當(dāng)前的位置是:  首頁(yè) > 新聞 > 國(guó)內(nèi) >
 首頁(yè) > 新聞 > 國(guó)內(nèi) >

SIP協(xié)議與應(yīng)用場(chǎng)景技術(shù)分享筆記-卷1-rfc3261-1

2018-11-30 14:29:07   作者:james.zhu   來源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  雖然馬上年底了,很多事情需要重新梳理,但是我們的學(xué)習(xí)腳步不能停止。關(guān)于SIP協(xié)議與應(yīng)用場(chǎng)景的技術(shù)分享筆記一直在進(jìn)行中,很多讀者也和筆者打聽最近的編寫情況。本來,筆者希望完成了一個(gè)相對(duì)完整的章節(jié)再來發(fā)布,但是,一些比較新的技術(shù)新人希望盡快了解這些學(xué)習(xí)資源,另外,筆者也考慮微信文章的篇幅問題,不能支持非常長(zhǎng)的篇幅。所以,今天我們開始逐步發(fā)布這些文檔。
  這里,讀者要注意,卷1完全是rfc3261的中文翻譯,如果讀者有其他的版本或者更好的學(xué)習(xí)資源也可以參考其他的資源學(xué)習(xí),筆者正在翻譯的版本可能結(jié)合一些應(yīng)用場(chǎng)景和拓?fù)鋱D,方便讀者更好地了解SIP協(xié)議,所以和rfc3261 官方文檔的格式可能完全不一致,微信格式可能會(huì)造成一些閱讀問題,筆者會(huì)在最終以PDF或者word的格式發(fā)布RFC3261 中文版本,希望讀者耐心等待。
  筆者僅發(fā)布一些最新的rfc3261的前面的章節(jié),可能不完整,也可能和其他作者的比不是太正確,大家取長(zhǎng)補(bǔ)短,也基本不妨礙對(duì)某些知識(shí)點(diǎn)的進(jìn)一步了解。另外,rfc3261本身和其他技術(shù)協(xié)議一樣,完全是非常枯燥的閱讀體驗(yàn),沒有心靈雞湯或者其他勵(lì)志的內(nèi)容匿名煽情,如果讀者想完整閱讀理解了這些協(xié)議的規(guī)范,多多少少需要一點(diǎn)耐心,還要耐得住寂寞。如果讀者已經(jīng)有了一些經(jīng)驗(yàn)的話,結(jié)合協(xié)議本身再次閱讀,會(huì)有一種對(duì)SIP技術(shù)的重新認(rèn)識(shí),使得自己的技術(shù)得以大幅提升。無奈,如果你的才華支撐不了你的夢(mèng)想,只能死磕。所以,還是一步步了解這些枯燥的技術(shù)概念才能逐漸掌握現(xiàn)在的SIP軟交換。
  以下是RFC3261的部分中文學(xué)習(xí)筆記。格式和排版可能不太好看,在最終的PDF版本中會(huì)糾正。希望諒解!
  1、背景介紹
  很多基于網(wǎng)絡(luò)的應(yīng)用軟件都要求可以實(shí)現(xiàn)會(huì)話創(chuàng)建和管理,這里的會(huì)話可以看著是關(guān)聯(lián)多個(gè)參與方交換數(shù)據(jù)的方式。實(shí)際部署這些應(yīng)用軟件是非常復(fù)雜的過程:用戶可能在幾個(gè)終端之間移動(dòng)切換,用戶也可能使用多個(gè)名字,用戶也可能使用不同的媒體,有時(shí)還同時(shí)使用不同的媒體介質(zhì)。目前,有很多不同的協(xié)議被準(zhǔn)許在網(wǎng)絡(luò)上運(yùn)行,這些協(xié)議來傳輸各種形式的實(shí)時(shí)媒體會(huì)話數(shù)據(jù),例如語音視頻,文本信息。 Session Initiation Protocol (SIP) 支持以上所說的這些功能描述和相關(guān)的協(xié)議,它可以支持開啟網(wǎng)絡(luò)的終端(called user agents)來發(fā)現(xiàn)其他的終端,準(zhǔn)許其他終端的某些會(huì)話屬性,終端之間可以共享這些會(huì)話屬性。
  為了查詢到期望的會(huì)話參與對(duì)象,和其他的功能,SIP支持了網(wǎng)絡(luò)主機(jī)設(shè)施設(shè)備創(chuàng)建(稱為代理服務(wù)器),用戶代理可以對(duì)會(huì)話發(fā)送注冊(cè),邀請(qǐng)和其他的請(qǐng)求。SIP是一個(gè)敏捷,通用的工具,它用來創(chuàng)建,修改和結(jié)束會(huì)話,它可以不依賴于正在工作的傳輸協(xié)議,并且無需依賴于各種已建立的會(huì)話類型。
  2、SIP功能概述
  SIP 一種應(yīng)用層的控制協(xié)議,它可以創(chuàng)建,修改和結(jié)束多媒體會(huì)話(會(huì)議),例如網(wǎng)絡(luò)電話呼叫。SIP也可以邀請(qǐng)參與對(duì)象加入到已存在的會(huì)話,例如多方廣播會(huì)議。它可以從當(dāng)前存在的會(huì)話中再加入媒體也可以移除媒體。SIP可以透明支持名稱映射,服務(wù)重新轉(zhuǎn)發(fā)服務(wù),這些服務(wù)功能支持個(gè)人移動(dòng)能力-無論網(wǎng)絡(luò)位置如何,用戶可以在網(wǎng)絡(luò)中保持一個(gè)對(duì)外單點(diǎn)可視的身份。
  SIP支持創(chuàng)建和結(jié)束媒體通信的五個(gè)方面的功能:
  • 用戶定位: 端系統(tǒng)的決定來支持通信;
  • 用戶有效性: 決定被呼叫方是否有意愿決定加入通信;
  • 用戶能力: 決定用戶可使用的媒體和其媒體參數(shù);
  • 會(huì)話創(chuàng)建: "ringing",在呼叫方和被呼叫方之間創(chuàng)建會(huì)話參數(shù);
  • 會(huì)話管理: 包括轉(zhuǎn)發(fā),結(jié)束會(huì)話,修改會(huì)話參數(shù)和調(diào)用服務(wù)。
  SIP 不是一個(gè)單一,垂直集成度通信系統(tǒng)。SIP而是一個(gè)模塊,它可以用來和其他的IETF協(xié)議集成來構(gòu)建一個(gè)完整的媒體架構(gòu)。典型的架構(gòu)如,和實(shí)時(shí)傳輸協(xié)議(RTP)配合,實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)傳輸,提供QoS反饋,使用實(shí)時(shí)媒體協(xié)議(RTSP)來控制媒體流和媒體的發(fā)送控制,媒體網(wǎng)關(guān)控制協(xié)議
 。∕EGACO)(RFC 3015[30]) 來控制網(wǎng)關(guān)對(duì)PSTN網(wǎng)絡(luò)的支持,和會(huì)話描述協(xié)議 (SDP) (RFC 2327[1])來描述媒體會(huì)話。因此,SIP應(yīng)該結(jié)合其他的協(xié)議一起使用對(duì)用戶提供完整的服務(wù)。但是,基本的SIP功能和操作不會(huì)依賴于其他任何協(xié)議。
  SIP 本身不提供服務(wù)。但是,SIP提供基本的操作,這些操作可以支持部署不同的服務(wù)。例如,SIP可以定位一個(gè)用戶,并且對(duì)當(dāng)前定位發(fā)送一個(gè)不透明的對(duì)象。如果此基本操作用來支持發(fā)送一個(gè)寫入SDP的會(huì)話描述,終端可以同意會(huì)話中的參數(shù)。如果同樣的操作用來傳遞一張呼叫方的圖片和此會(huì)話描述,那么就可以在早期部署一個(gè)“caller ID”服務(wù)。就像這個(gè)例子所展示的,一個(gè)單個(gè)基本操作往往被用來提供不同的服務(wù)。
  SIP 不提供會(huì)議控制服務(wù)例如發(fā)言權(quán)控制和發(fā)言,它不能對(duì)會(huì)議發(fā)出命令控制如何管理會(huì)議。SIP可以用來發(fā)起一個(gè)會(huì)話,這個(gè)會(huì)話可以用來支持一些會(huì)議控制協(xié)議。因?yàn),SIP創(chuàng)建的消息和會(huì)話可以傳遞到完全不同的網(wǎng)絡(luò)中,SIP不能也不會(huì)提供任何網(wǎng)絡(luò)資源預(yù)設(shè)的支持能力。
  SIP所提供的服務(wù)的本質(zhì)使得安全性特別重要。對(duì)于對(duì)端來說,SIP提供了一個(gè)安全服務(wù)單元,這些服務(wù)單元包括拒絕攻擊防止服務(wù),認(rèn)證(包括用戶對(duì)用戶,代理對(duì)用戶),集成保護(hù),加密和私有服務(wù)。
  SIP 可以支持IPv4和IPv6兩種網(wǎng)絡(luò)環(huán)境。
  3、術(shù)語
  在本文檔中,關(guān)鍵詞 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 通過BCP 14, RFC 2119[2] 加以解釋,并且說明了遵從SIP部署要求級(jí)別和嚴(yán)格程度。讀者需要根據(jù)關(guān)鍵詞的字面意思來區(qū)分這些規(guī)則的基本和寬泛程度,盡可能最大程度對(duì)應(yīng)SIP協(xié)議的要求。很多時(shí)候,由于開發(fā)人員,特別是對(duì)英文協(xié)議了解不夠,或者對(duì)協(xié)議的理解不同,所以導(dǎo)致一些兼容性問題或者功能不一致等問題。
  4、操作概述
  此部分使用一個(gè)簡(jiǎn)單示例介紹了SIP的基本操作。它實(shí)際上是一個(gè)學(xué)習(xí)輔導(dǎo),沒有包含任何正式的說明。
  第一個(gè)示例顯示了SIP的基本功能:終端定位,希望通信的意愿,創(chuàng)建會(huì)話參數(shù)的協(xié)商和創(chuàng)建會(huì)話后會(huì)話拆線。
  圖表1 顯示了一個(gè)典型的介于兩個(gè)用戶之間的SIP消息交互,兩個(gè)用戶分別是Alice和 Bob。(每個(gè)消息都通過一個(gè)帶字母F的標(biāo)簽來標(biāo)注,文本號(hào)碼說明一個(gè)標(biāo)注號(hào)碼)。在這個(gè)例子中,Alice使用了一個(gè)在PC上運(yùn)行的SIP應(yīng)用程序(作為一個(gè)軟電話)來呼叫Bob,Bob的電話是一個(gè)基于互聯(lián)網(wǎng)的SIP電話。這個(gè)圖例也同時(shí)顯示了,這里有兩個(gè)SIP 代理服務(wù)器介于Alice和BoB之間來支持會(huì)話管理工作。在圖例1中,這種典型的設(shè)置方式我們通常稱之為“SIP 拓?fù)鋱D” "SIP 框架" 。
  Alice使用自己的SIP身份 “呼叫”Bob,這種SIP身份是一種URL類型,我們這里稱之為SIP URL。SIP URLs在Section 19.1中做了定義。它的格式和郵件的格式非常相似,一般都包括一個(gè)用戶名稱和主機(jī)名稱。在這個(gè)例子中,它就是 sip:bob@biloxi.com, 這里biloxi.com是一個(gè)Bob的SIP服務(wù)提供商。Alice可能也具有和Bob的URL同樣的類型,或點(diǎn)擊一個(gè)超鏈接后進(jìn)入一個(gè)地址薄。SIP同樣也提供一個(gè)安全的URL,被稱之為SIPS URL。安全URL的示例為sips:bob@biloxi.com。通過SIPS URL發(fā)起的呼叫可以保證安全,加密的傳輸,它用來傳輸所有從呼叫方到被呼叫方域的所有SIP消息。 從這里,開始,SIP的請(qǐng)求消息安全地發(fā)送到被呼叫方,但是安全機(jī)制依賴于被呼叫方域的安全策略設(shè)置。
  SIP 是基于一種類似于HTTP形式的請(qǐng)求/響應(yīng)事務(wù)處理模式。每個(gè)事務(wù)處理包括一個(gè)啟動(dòng)了特別method方法的請(qǐng)求,或者一個(gè)功能,和至少一個(gè)來自于服務(wù)器端的響應(yīng)構(gòu)成。在這個(gè)例子中,事務(wù)處理是以Alice的軟電話開始,軟電話發(fā)送一個(gè)INVITE請(qǐng)求,攜帶了Bob SIP URL地址。這里,INVITE就是一個(gè)SIP method方法,它指定了一個(gè)執(zhí)行命令,請(qǐng)求方(Alice)想讓服務(wù)器方(Bob)接收這個(gè)請(qǐng)求。這個(gè)INVITE請(qǐng)求中包含了幾個(gè)頭域header fields。Header fields 被命名為屬性值,這些屬性值提供了關(guān)于消息的其他額外信息。在INVITE中的某些屬性表示了呼叫的唯一身份,目的地地址,Alice的地址,和Alice和Bob之間創(chuàng)建會(huì)話所期望的會(huì)話類型的信息。INVITE (F1消息中)可能類似于這樣的流程:
  Figure 1: SIP session setup example with SIP trapezoid
  INVITE sip:bob@biloxi.com SIP/2.0
  Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
  Max-Forwards: 70
  To: Bob
  From: Alice ;tag=1928301774
  Call-ID: a84b4c76e66710@pc33.atlanta.com
  CSeq: 314159 INVITE
  Contact:
  Content-Type: application/sdp
  Content-Length: 142
  (Alice的SDP 消息不顯示)
  文本消息的第一行包含了一個(gè)方法名稱method(INVITE)。 緊接著的是幾行包含一個(gè)header 值域的列表。在這個(gè)示例中,它們包含了最少的要求設(shè)置。這些頭header簡(jiǎn)單描述如下:
  Via 包含了一個(gè)地址(pc33.atlanta.com),Alice希望對(duì)這個(gè)請(qǐng)求獲得響應(yīng)的地址。它也包含了一個(gè)branch參數(shù)來確認(rèn)這個(gè)事務(wù)處理。
  To 包含了一個(gè)顯示名稱(Bob)和一個(gè)SIP或者SIPS URL(sip:bob@biloxi.com) 。Display names在RFC 2822[3]有介紹。
  From 也包含一個(gè)顯示名稱(Alice)和一個(gè)SIP或SIPS URI (sip:alice@atlanta.com),它表示這個(gè)請(qǐng)求的發(fā)起方。這個(gè)header同時(shí)還有一個(gè)一個(gè)標(biāo)簽tag參數(shù),此標(biāo)簽包含了一個(gè)任意字符串(1928301774),這個(gè)字符串被添加到了軟電話的URL。此標(biāo)簽也是為了確認(rèn)身份的目的。
  Call-ID 包含一個(gè)對(duì)這個(gè)呼叫的全局唯一確認(rèn)信息,它是由一個(gè)任意字符串和軟電話主機(jī)名稱或IP地址組合而成。To tag的組合,F(xiàn)rom tag的組合,和Call-ID完整定義了一個(gè)Alice和BoB兩者之間的點(diǎn)對(duì)點(diǎn)的SIP關(guān)系,這種關(guān)系可以看作一個(gè)dialog對(duì)話。
  CSeq 或Command Sequence包含一個(gè)整數(shù)和一個(gè)method名稱。這個(gè)CSeq是一個(gè)增長(zhǎng)的數(shù)值,它是支持每一個(gè)在dialog里新的請(qǐng)求,并且是一個(gè)普通的序列號(hào)碼。
  Contact 包含一個(gè)SIP或者SIPS URI,它用來表示一個(gè)直接的路由去聯(lián)系A(chǔ)lice,通常情況下,它由一個(gè)用戶名稱以及它所在的全限定域名構(gòu)成(FQDN)。 如果使用了全限定域名(FQDN)的話,許多終端系統(tǒng)沒有已注冊(cè)的域名,因此,這里IP地址是允許的。Via頭告訴其他參數(shù)往哪里發(fā)送響應(yīng)消息,Contact告訴其他參數(shù)往哪里發(fā)送將來的請(qǐng)求消息。
  Max-Forwards 最大前轉(zhuǎn)來限定一個(gè)請(qǐng)求到達(dá)目的地的最大跳躍(hop)數(shù)量。它是由一個(gè)整數(shù)數(shù)值構(gòu)成,在經(jīng)過一個(gè)跳轉(zhuǎn)時(shí)會(huì)降低一個(gè)數(shù)值。
  Content-Type 包含一個(gè)信息體的描述,這里忽略。
  Content-Length contains an octet (byte) count of the message body.
  完整的SIP頭域集合在Section 20 中有詳細(xì)的定義。
  會(huì)話的細(xì)節(jié),例如媒體類型,編碼,采樣率等沒有在SIP中進(jìn)行描述。 這些細(xì)節(jié)而是包含在了SIP消息體中,它們通過編碼以后以各種協(xié)議的格式出現(xiàn)。其中一種協(xié)議格式就是 會(huì)話描述協(xié)議-Session Description Protocol (SDP) (RFC 2327[1])。這個(gè)SDP消息(沒有在這里顯示)示例是通過SIP消息來傳輸,傳輸?shù)姆绞筋愃朴陔娮余]件中的附件方式來傳輸,或類似于通過HTTP消息傳輸網(wǎng)頁(yè)頁(yè)面內(nèi)容的方式。
  因?yàn)檐涬娫挷恢繠ob的地址或biloxi.com域名中的SIP服務(wù)器地址,軟電話發(fā)送一個(gè)INVITE 到SIP 服務(wù)器端,這個(gè)SIP服務(wù)器支持Alice的域,atlanta.com。 atlanta.com SIP 服務(wù)器已經(jīng)配置了Alice的軟電話,或者通過DHCP發(fā)現(xiàn)了軟電話地址信息。
  這個(gè)atlanta.com SIP 服務(wù)器是一個(gè)代理服務(wù)器。代理服務(wù)器接收請(qǐng)求,然后作為一個(gè)請(qǐng)求者轉(zhuǎn)發(fā)這些請(qǐng)求。在這個(gè)實(shí)例中,代理服務(wù)器接收到了INVITE請(qǐng)求,然后發(fā)送了一個(gè)100 (Trying) 響應(yīng)給Alice的軟電話。這個(gè)100 (Trying) 響應(yīng)表示這個(gè)INVITE已經(jīng)被收到,代理正在通過路由設(shè)置路由這個(gè)INVITE到其目的地。
  在SIP中,響應(yīng)消息使用一個(gè)三位數(shù)的碼和描述短語作為回復(fù)消息。這個(gè)響應(yīng)消息在Via中包括同樣的To, From, Call-ID, CSeq 和 branch參數(shù) parameter,這些參數(shù)和INVITE中的一樣,這些參數(shù)允許Alice的軟電話關(guān)聯(lián)響應(yīng)消息來發(fā)送INVITE消息。這個(gè)atlanta.com代理服務(wù)器定位到這個(gè)代理服務(wù)器在biloxi.com,它可能執(zhí)行一個(gè)特別的DNS查詢來找到服務(wù)biloxi.com 域的SIP 服務(wù)器。這個(gè)部分的描述在[4]中。 因此,它獲得biloxi.com 代理服務(wù)器的IP地址,然后轉(zhuǎn)發(fā)或者在這里代理其INVITE請(qǐng)求。在轉(zhuǎn)發(fā)這個(gè)請(qǐng)求之前,這個(gè) atlanta.com 代理服務(wù)器添加另外一個(gè)Via頭域,這個(gè)頭域包含自己的地址(這個(gè)INVITE已經(jīng)在第一個(gè)Via包含了Alice的地址)。biloxi.com 代理服務(wù)器收到這個(gè) INVITE消息后,然后回復(fù)一個(gè)帶100 (Trying) 響應(yīng)消息到atlanta.com 代理服務(wù)器,表示它已經(jīng)收到了這個(gè)INVITE消息,正在處理這個(gè)請(qǐng)求。代理服務(wù)器會(huì)查詢一個(gè)定位服務(wù)器,我們稱之為定位服務(wù),定位服務(wù)包含當(dāng)前Bob的IP地址。(我們將會(huì)在下一個(gè)部分看到如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢。)biloxi.com 代理服務(wù)器會(huì)添加另外一個(gè)Via header ,并且攜帶自己的IP地址,這個(gè)地址是對(duì)這個(gè)INVITE請(qǐng)求的,代理轉(zhuǎn)發(fā)這個(gè)請(qǐng)求到Bob的SIP軟電話。
  Bob的軟電話收到這個(gè)INVITE 消息后,對(duì) Bob 發(fā)出提示,告訴他有從Alice來的電話呼叫,Bob決定是否應(yīng)答這個(gè)呼叫,這里Bob的軟電話會(huì)產(chǎn)生振鈴提示。Bob的軟電話提示180振鈴,這個(gè)響應(yīng)消息會(huì)路由根據(jù)相反的方向回到兩個(gè)代理服務(wù)器。每個(gè)代理使用Via header 域值來決定發(fā)送響應(yīng)的地址方向,并且從頂部路由記錄中刪除自己的地址。因此,盡管要求DNS和定位服務(wù)查詢 路由這個(gè)初始的INVITE請(qǐng)求,180(Ringing)響應(yīng)返回到呼叫方時(shí)可以沒有查詢消息或沒有代理服務(wù)器中所保持的狀態(tài)。
  這樣也獲得了一個(gè)合理的響應(yīng)屬性,每個(gè)看到INVITE消息的代理服務(wù)器也可以看到所有對(duì)INVITE的響應(yīng)消息。
  當(dāng)Alice的軟電話收到這個(gè)180 (Ringing)響應(yīng)后,它會(huì)傳遞這個(gè)信息給Alice,傳遞過來的信息方式可以使用一個(gè)回鈴音(ringback tone)或或者在Alice終端屏幕顯示一個(gè)消息。
  參考資料:
  https://www.rfc-editor.org/rfc/pdfrfc/rfc3262.txt.pdf


  關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
  Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
  Asterisk freepbx技術(shù)文檔: www.freepbx.org.cn
  融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
  Asterisk/FreePBX中國(guó)合作伙伴,官方qq技術(shù)分享群(3000千人):589995817
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

相關(guān)熱詞搜索: SIP協(xié)議

上一篇:伊云谷榮登AWS Well-Architected Partners

下一篇:最后一頁(yè)

專題

息烽县| 迭部县| 湘潭县| 醴陵市| 金平| 枣阳市| 讷河市| 望奎县| 绥化市| 平远县| 阿鲁科尔沁旗| 高雄县| 衡水市| 桦南县| 府谷县| 淮北市| 崇州市| 措勤县| 石河子市| 苏州市| 公安县| 九江县| 康马县| 永修县| 闻喜县| 汕尾市| 叶城县| 油尖旺区| 龙陵县| 南丰县| 东港市| 西乌珠穆沁旗| 安塞县| 冕宁县| 陆河县| 铜山县| 建瓯市| 塘沽区| 临猗县| 奉新县| 渝中区|