SIP协议学习1
SIP協議是由IETF提出的在IP網絡上進行多媒體通信的應用層控制協議。采用分層的方法來創建服務,是應用層上的一個控制協議,用來創建,修改和終止有多個參與者的多媒體會話進程。參與會話的成員可以通過組播,單播或者兩者結合的方式進行通信。可以用來邀請一個新的成員加入其中,也可以創建全新的會話。一般情況下,sip協議使用RTP協議傳送音頻和視頻流,使用SDP協議進行媒體描述。
????? SIP協議首先要建立呼叫信道,由服務器的IP地址和端口號建立客戶和服務器端的呼叫信道,客戶端在發出自己的請求消息中的參數告訴服務器端它自己的媒體通道的IP地址和端口號,然后服務器端在發出最終響應的時候,客戶端和服務器端的媒體信道建立起來了。當服務器端接收到客戶端發來的確認消息后,他們才開始通信。
????? SIP協議采用文本格式的client/server工作方式,是一個請求應答的協議,該協議定義了多個執行相應功能的網絡實體。這些網絡實體通常包含:用戶代理UA和網絡服務器NS,UA又分為用戶代理客戶端UAC和用戶代理服務器UAS,UAC負責發起SIP呼叫請求,UAS負責對呼叫請求作出響應。網絡服務器主要為客戶代理提供注冊,認證,鑒權和路由等服務。根據其功能不同,網絡服務器可分為代理服務器,重定向服務器和注冊服務器三種。
?????????? 代理服務器主要完成消息的轉發
?????????? 重定向服務器接收SIP請求,把請求中的源地址映射成多個或零個新地址,返回給客戶端UAC.
?????????? 注冊服務器接收客戶端的注冊請求,完成用戶地址的注冊。
?
?
?
?
SIP支持三種呼叫方式:(1)由客戶端像服務器端直接呼叫
(2)由UAC在重定向服務器的輔助下進行重定向呼叫
(3)由代理服務器代表UAC向被叫發起呼叫
Sip把一個呼叫分為三個階段:呼叫建立,呼叫保護,呼叫釋放。
?
?
?
????? 首先要建立呼叫信道,即一個TCP/UDP連接。因此,由服務器的IP地址和端口號建立客戶端與服務器端之間的呼叫信令道。然后,客戶端向服務器端發送消息INVITE消息,如果服務器段同意呼叫,發送(2),(3)消息。其中,1xx狀態碼表示請求已收到,正在處理中,200表示請求已經完成。這時,如果客戶端突然不想參加此次會話,可以向服務器發送BYE。
????? 圖中3xx相應只會在用重定向服務器出現的時候,表示對請求的重定向處理,4xx響應表示客戶端的請求有語法錯誤不能被服務器執行。5xx響應表示服務器出錯,不能執行合法請求。6xx響應表示所有服務器出錯,不能執行合法請求。當客戶接受3xx,4xx,5xx響應后,可根據響應中的消息修改消息,并重發請求。當客戶端接受6xx響應后,結束此次呼叫。
| 消息 | 用法 |
| INVITE | 呼叫一個用戶代理,傳送一次呼叫。 |
| ACK | 確認呼叫。 |
| BYE | 終止呼叫。 |
| CANCEL | 終止還未OK的呼叫。 |
| REGISTER | 提供一項注冊服務,帶有一個聯系地址和可以用來代替的別名。 |
| OPTIONS | 詢問一個用戶代理的“能力”(例如,該用戶代理能夠識別的消息和編碼)。 |
響應消息:
| 消息 | 用法 |
| 100 Trying | 消息已收到,但是最終用戶代理尚未進行處理。請等待。 |
| 180 Ringing | 最終用戶代理已經收到消息,正在提示用戶。請等待。 |
| 200 OK | 最終用戶已經接受消息。 |
| 301 Moved Permanently & 302 Moved Temporarily | 用戶代理的地址已經改變,新的永久或臨時地址位于Contact字段中。 |
| 400 Bad Request | 普通錯誤消息。客戶端不能識別消息。 |
| 401 Unauthorized & 407 | 請使用證書重試。 |
| 404 Not Found | 要聯系的用戶不存在或尚未注冊。 |
| 408 Request Timeout | 另一方沒有響應。這意味著SIP消息永遠不會OK。所有重試都將被丟棄。這并不意味著電話響太長時間(電話可以永遠響鈴)。 |
消息使用類似的頭字段類型
| 頭字段 | 用法 |
| From | SIP請求的發送者。 |
| To | SIP請求的接受者。這通常與SIP URI相同(可以是一個“別名”或一個實際地址)。 |
| Contact | 用戶代理的實際地址。 |
| Call-ID | 代表兩個用戶代理之間的完整呼叫或對話。所有相關的SIP消息都使用同一個Call-ID。例如,當一個用戶代理收到一條BYE消息,根據Call-ID,它就知道要掛斷哪次呼叫。 |
| CSeq | 消息的順序編號。這在一次對話或一個Call-ID中是惟一的。這用于區別新的消息和“重試消息”。當一條初始消息沒有及時OK時,重試就會進行,并會定時發送。 |
| Content-Type | 消息內payload的MIME類型。 |
| Content-Length | payload的大小,以字節為單位。信封和payload之間由一空行隔開。 |
?
總結
- 上一篇: 苹果发布全新MacBook Air笔记本
- 下一篇: nginx 怎么重新编译安装mysql,