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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIP基础协议总结

發布時間:2023/12/10 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIP基础协议总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SIP協議是一個用于建立,更改和終止多媒體會話的應用層控制協議,大量借鑒了成熟的HTTP協議(文本格式編碼,Request消息中的method等),采用基于文本的UTF-8編碼方式,可以承載與UDP或者TCP協議之上(首選UDP)。和Diameter協議類似,SIP也是有一個基礎協議和很多擴展協議,基礎協議在RFC3261中定義,本文主要概括SIP基礎協議的要點。

1.? 基本概念:

·???????? Session:Session簡單的說就是一次通話,從摘機撥號開始到最終的掛機之間所有的SIP消息都屬于一個Session,它們具有相同的Call-Id。

·???????? Dialog:基于Peer-to-Peer,描述了兩端的User Agents在一段時間內的關聯。Dialog用Dialog Id來表示,Dialog Id是由三部分組成的:Call-Id,from中的tag,to中的tag。只有對Invite消息響應的的2xx 和 101-199 消息才能建立一個Dialog。100 Trying相應無法建立Dialog,因為100 Trying中的To屬性沒有tag值。

·???????? Transaction:一個Transction是有一個Request消息和一個或者多個臨時或者最終應答消息構成的。如果對Invite的應答是200 OK,則接下來的ACK消息認為是另一個transaction。

?

2.? SIP網絡實體:

·???????? UA(User Agent):和用戶直接交互的SIP設備,可以是硬件的SIP電話也可以是電腦上具有SIP電話功能的軟件等;發送SIP Request消息的UA即UAC(User Agent Client), 接受SIP Request消息的UA即UAS(User Agent Server), 一個UA通常既是UAC又是UAS。

·???????? Proxy Server:進行消息轉發,負責把消息轉發給最終用戶或者另一個Proxy Server。

·???????? Redirect Server:和Diameter的Redirect Server類似,不進行消息轉發,而是給消息發送方回復一個或者多個地址,建議發送方把消息發往這些地址。Redirect Server返回的地址并不一定就是最終用戶的地址,也有可能是另一個Proxy Server的地址。

·???????? Registrars: 因為SIP需要支持用戶的移動性,所以當用戶改變位置后需要對新位置的終端進行注冊,Registrars接受SIP用戶注冊,從而得知可以從何處找打當前用戶。Registrars通常位于SIP Server(Proxy Server 或者Redirect Server)中。

·???????? Location Server:不是SIP實體,之所以說它不是SIP實體是因為Location Server上面不必運行SIP協議棧,SIP Server和 Location Server之間的通信方式也不是用SIP(比如用LDAP)。Location Server的作用是保存SIP用戶位置數據(IP 或者Hostname),比如當一個SIP用戶向SIP Server注冊之后,SIP Server將該SIP用戶位置信息上傳到Location Server中,當SIP Server收到需要發送給該SIP用戶的消息時,SIP Server再向Location Server詢問該用戶位置信息(IP 或者Hostname)。

?

3.? SIP消息分類:

SIP消息分為如下兩類:

·???????? 請求消息:UAC發給UAS的消息,包括INVITE、ACK、BYE、CANCEL、OPTION和REGISTER消息。

·???????? 響應消息:UAS回應給UAC的消息,包括1xx、2xx、3xx、4xx、5xx、6xx響應消息,每類消息的具體含義如下表:

1xx

進展相應

臨時相應

2xx

成功

最終相應

3xx

重定向錯誤

最終相應

4xx

客戶端錯誤

最終相應

5xx

服務端錯誤

最終相應

6xx

全局錯誤

最終相應

4.? SIP消息格式:

SIP由于是采用文本格式編碼,所以消息格式很簡單,是由Message Header加可選的Message body構成,Message Header 從第二行開始每一行都由“Tag :Valued”格式組成,每一行描述一個屬性。 頭部的屬性有很多,基本協議中定義了一部分,擴展協議也定義了相應的頭部屬性。如果消息中攜帶了Message body,則Message Header和Message body之間用一個空行分割開來;Message body通常有“Content-Type”和“Content-Length”屬性來對Message body進行解釋,例如:
Content-Type: application/sdp
Content-Length: 212

SIP消息也可以攜帶多個Message body,比如可以帶上SDP信息和主叫方的照片,這樣被叫就能看到主叫方的頭像了。

SIP消息在經過Proxy的時候,Proxy只關心Message Header,而不會檢查Message body,所以說Message body對Proxy是透明的。

5.? SDP(Session Description Protocol):

在SIP的Message body中最常見的就是SDP,這里概述一下SDP。Session Description Protocol (SDP) 在RFC 2327中被定義;SDP中攜帶了一些必要信息,以供用戶可以加入一個多媒體會話,比如IP地址,端口號,會話的日期時間等;這有點兒類似電視臺的節目單,有了節目單,我們就可以在指定的時間切換到指定的頻道收看到預期的節目。SDP是單獨定義的,和SIP沒有必然的聯系,SDP信息可以通過各種途徑傳輸比如Email,Webpage等,SIP只是眾多傳輸SDP方式中的一種而已。

1)? SDP語法:

SDP也是用文本格式描述的,一個SDP Description可以包含很多行,每一行的格式如下:
Type = Value
Type只用一個字母來表示;一個SDP Description通常有一個Session-level和多個Media-level信息組成;Session-level信息用來描述整個Session,每個Media-level信息用來描述一個特定的媒體流。Session-level總以”v=0”開頭,Media-level總已”m=<media type> <port number> <transport protocol> <media formats>”開頭,。下面是一個SDP Description的例子,該例子中包含了三個Media-level信息:
v=0
o=Bob 2890844526 2890842807 IN IP4 131.160.1.112
s=SIP seminar
i=A Seminar on the Session Initiation Protocol
u=http://www.cs.columbia.edu/sip
e=bob@university.edu
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVP 31
a=rtpmap:31 H261/90000
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000

該例中o描述該session的發起者是Bob以及他的IP地址;s描述該session的名字;i描述了該session的一般信息;u說明可以從這個URL中獲取和該session相關的更多信息;e描述了該session聯系人的email。C和t描述了什么時間從哪里可以接收到該Session的multicast。m描述了一個媒體流的端口號,傳輸協議,媒體格式等信息。a可以用來對SDP進行擴展,比如雙方如果協商音頻的音量,可以用下面的SDP描述:
m=audio 49170 RTP/AVP 0
a=volume:8
前提是雙方都需要理解volume的含義,如果對方不理解volume,也不會出錯,只是將其忽略。

2)? SDP描述中常見屬性:

v

Protocol version

b

Bandwidth information

o

Owner of the session and session identifier

z

Time zone adjustments

s

Name of the session

k

Encryption key

i

Information about the session

a

Attribute lines

u

URL containing a description of the session

t

Time when the session is active

e

E-mail address to obtain information about the session

r

Times when the session will be repeated

p

Phone number to obtain information about the session

m

Media line

c

Connection information

i

Information about a media line

6.? SIP呼叫流程實例分析:

下圖是一個完整的SIP呼叫消息流示意圖,這里重點關注SIP消息流,下一篇文中將給出一個稍微復雜的例子,那個例子中將重點關注SIP消息的路由和SIP常見頭部字段的含義。

Laura要與Bob通話,Laura撥打Bob的的Public URI:sip:Bob.Johnson@company.com,給Bob一個Invite消息,在Invite消息中攜帶了SDP,表明Laura期望在UDP端口20002上收到包含PCM voice編碼的RTP數據包。Proxy收到這個Invite消息后轉發給Bob,同時給Laura回送一個100 Trying消息(Trying消息是Hop-to-Hop的,不會被轉發)。Bob收到Invite消息后開始振鈴,返回180 Ringing消息給Laura,Laura側會聽到回鈴音。

?

INVITE sip:Bob.Johnson@company.com SIP/2.0

Via: SIP/2.0/UDP workstation1000.university.com:5060

From: Laura Brown <sip:Laura.Brown@university.com>

To: Bob Johnson sip:Bob.Johnson@company.com

Call-ID: 12345678@workstation1000.university.com

CSeq: 1 INVITE

Contact: Laura Brown <sip:Laura@workstation1000.university.com>

Content-Type: application/sdp

Content-Length: 154

v=0

o=Laura 2891234526 2891234526 IN IP4 workstation1000.university.com

s=Let us talk for a while

c=IN IP4 138.85.27.10

t=0 0

m=audio 20002 RTP/AVP 0

?

當Bob摘機后,一個200 OK的最終應答消息會被返回給Laura,消息中攜帶了一個SDP,表明Bob可以在UDP端口41000上接受數據包。Laura收到200 OK后給Bob發送一個ACK消息,確認已經收到200 OK。此時雙方進入通話。

?

SIP/2.0 200 OK

Via: SIP/2.0/UDP 131.160.1.110

Via: SIP/2.0/UDP workstation1000.university.com:5060

From: Laura Brown <sip:Laura.Brown@university.com>

To: Bob Johnson <sip:Bob.Johnson@company.com>;tag=314159

Call-ID: 12345678@workstation1000.university.com

CSeq: 1 INVITE

Contact: Bob Johnson <sip:Bob@131.160.1.112>

Content-Type: application/sdp

Content-Length: 154

v=0

o=Bob 2891234321 2891234321 IN IP4 131.160.1.112

s=Let us talk for a while

c=IN IP4 131.160.1.112

t=0 0

m=audio 41000 RTP/AVP 0

?

當通話結束時,Bob發送一個Bye消息給Laura,Laura隨后回應200 OK給Bob,至此通話結束。

?

參考資料:

1.? “RFC 3261”- Section 4,Section 12,Section 17,Section 24;

2.? “SIP Demystified”- Chapter 4, Chapter 5;

總結

以上是生活随笔為你收集整理的SIP基础协议总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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