RFC3261(5 协议结构)
?SIP是一個分層的協議,也就是說SIP協議由一組相對無關的處理層次組成,這些層次之間只有松散的耦合。協議分成不同層次來描述是為了能夠更清晰的表達,在同一個小節里對功能的公共要素進行交叉描述。本協議并沒有規定一個具體的實現。當我們說一個要素”包含”某一個層,我們的意思是這個要素符合這個層定義的規則。
不是SIP的每一個要素都包含所有層。此外,SIP定義的元素是邏輯上的,而非物理元素。一個物理的實現可以實現不同的邏輯元素,甚至是針對每個事務。
SIP最底層是它的語法和編碼層。編碼方式是采用擴展的Backus-Naur?Form?grammar(BNF范式)。完整的BNF描述在25節;?第7節有簡要的SIP消息結構描述。
????第二層是傳輸層。它定義了一個客戶端如何發送請求和接收應答,以及一個服務器如何接收請求和發送應答。所有的SIP要素都包含傳輸層。第18節有傳輸層的描述。
????第三層是事務層。事務是SIP的基本組成部分。事務是客戶端事務向服務端事務發送的一個請求(通過傳輸層),以及服務器事務向客戶端事務的所有針對該請求的應答。事務層處理應用層的重發,匹配請求的應答,以及應用層的超時。用戶代理客戶端(UAC)完成的任何任務都是由一組事務構成的。有關事務的討論在第17節有描述。用戶代理包含一個事務層,來實現有狀態的代理服務器。無狀態的代理服務器并不包含事務層。事務層包含一個客戶組件(可以認為是一個客戶事務)和一個服務器組件(可以認為是一個服務器事務),他們都可以用一個有限狀態機來處理特定的請求。
????在事務層之上是事務用戶(TU)。每一個SIP實體,除了無狀態代理,都是一個事務用戶。當一個TU發出一個請求,它首先創建一個客戶事務實例,并且通過它發送請求,這包括了目標IP地址、端口號、以及發送請求的設備。TU可以創建客戶事務,也可以取消客戶事務。當客戶取消一個事務,它請求服務器終止正在處理的事務,并且回滾狀態到該事務開始前的狀態,并且產生指定的該事務的錯誤報告。這是由CANCEL請求完成的,這個請求構成了自己的事務,但是參考了被取消的事務(第9節)。
????SIP要素,用戶代理客戶端和服務器、無狀態和有狀態代理服務器和注冊服務器,包含一個可以互相區別的核心。這個核心,除了無狀態代理服務器,都是事務用戶。盡管UAC(用戶代理客戶端)和UAS(用戶代理服務端)的核心的行為依賴于Method,對所有的Method來說,有幾個公共的原則(第8節)。對UAC來說,這些規則約束請求的建立;對UAS來說,這些規則約束請求的處理和應答。由于注冊服務在SIP中是一個重要的角色,所以UAS處理REGISTER請求有一個特別的名字:注冊服務器。第10節描述了UAC和UAS對REGISTER實現的核心行為。第11節描述了UAC和UAS對OPTIONS的核心行為,這個OPTIONS用來決定UA的處理能力。
????在對話中,有其他的請求會被發送。一個對話是一個持續一定時間的兩個用戶之間的端到端的SIP關系。對話使得兩個用戶代理之間的信息有序,而且請求被正確的路由。在這個規范中,只有INVITE請求可以用來建立對話。當一個UAC在一個對話中發出請求的時候,它不僅遵循第8節描述的一般UAC規則而且也遵循對話中(mid-dialog)的請求規則。第12節講述了對話并且討論了對話的創建和維持,以及在對話中(mid-dialog)創建一個請求。
?
????SIP中最重要的方法就是INVITE方法,它用來在不同的參與者中創建會話。一個會話由一組參與者,以及他們之間用于通信的媒體流組成。第13節講述了這些會話的創建初始化過程,以及創建一個或一組對話。第14節講述了在對話中使用INVITE請求來改變會話的屬性。最后,第15節,講述了如何終止會話。
????第8、10、11、12、13、14、15節講述了完整的UA核心(第9節描述了取消,在UA核心和代理核心中使用)。第16節講數了代理服務器,代理服務器用于在兩個UA之間做消息路由使用。
轉載于:https://www.cnblogs.com/share-everything-i-do/archive/2012/10/22/RFC3261-5.html
總結
以上是生活随笔為你收集整理的RFC3261(5 协议结构)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超级史诗灯光人舞蹈,神作!
- 下一篇: 黑马程序员-10 IO流2 File,p