VoIP通话之SIP协议
一、前言
作為一名VoIP產品職業開發者,SIP可以說是我工作中接觸最多的一種協議,是時候好好總結一下了。
二、概要
SIP(Session Initiation Protocol)屬于應用層的控制協議,主要用于在一個或多個參與者之間創建,修改和中止會話,與SDP、 RTP/RTCP等協議配合,共同完成IMS中的會話建立及媒體協商。
SIP 的一個重要特點是它不定義要建立的會話的類型,而只定義應該如何管理會話。有了這種靈活性,也就意味著SIP可以用于眾多應用和服務中,包括交互式游戲、音樂和視頻點播以及語音、視頻和 Web 會議。
SIP協議使用客戶端/服務器架構,和HTTP協議有很多類似的地方,消息分兩種:請求和響應。邏輯實體包括:
1、用戶代理(UA)
- User?Agent Client(UAC):用戶代理客戶端是創建新請求,然后使用客戶端事務狀態機發送請求的邏輯實體。
- User Agent Server(UAS):用戶代理服務器是一個邏輯實體,它產生SIP請求的響應。響應接收、拒絕和重定向請求。
2、網絡服務器
- 注冊服務器:接受UA的注冊請求
- 代理服務器:為UA轉發請求或響應
- 重定向服務器:接受SIP請求消息,進行地址映射,將映射后的地址返回給UA
- 定位服務器:為重定向服務器或代理服務器提供被叫用戶的可能位置信息
三、請求消息
常用的請求消息有:
- REGISTER:注冊請求,上報用戶信息,完成號碼綁定。
- INVITE:主叫用戶發起會話請求,邀請其他用戶加入一個會話
- ACK:對請求消息的響應消息進行確認
- BYE:終止一個已經建立的會話
- CANCEL:?取消尚未建立的會話請求,一般是針對INVITE
- OPTIONS:用于查詢服務器的相關信息和功能
- REFER:用于會議和呼叫轉移
- MESSAGE:用來發送即時消息,一般用于擴展私有功能
- INFO:用于會話中信令消息的通訊,一般用來發送DTMF信號
四、響應消息
常見的響應消息有:
- 1xx:臨時響應 –表示已經接收到請求消息,正在對其進行處理?
- 2xx:成功 –表示請求已經被成功接受、處理?
- 3xx:重定向 --表示需要采取進一步動作,以完成該請求
- 4xx:客戶端錯誤 –表示請求消息中包含語法錯誤或者SIP服務器不能完成對該請求消息的處理。?
- 5xx:服務器端錯誤 --表示SIP服務器故障不能完成對正確消息的處理
- 6xx:全局錯誤 --表示請求不能在任何SIP服務器上實現
舉例說明:
- 100試呼叫(Trying)
- 180振鈴(Ringing)
- 181呼叫正在前轉(Call is Being Forwarded)
- 200成功響應(OK)
- 302臨時遷移(Moved Temporarily)
- 400錯誤請求(Bad Request)
- 401未授權(Unauthorized)
- 403禁止(Forbidden)
- 404用戶不存在(Not Found)
- 408請求超時(Request Timeout)
- 480暫時無人接聽(Temporarily Unavailable)
- 486線路忙(Busy Here)
- 504服務器超時(Server Time-out)
- 600全忙(Busy Everywhere)
五、注冊過程
?
六、通話過程
七、VoIP系統搭建
1、服務器
常見的開源SIP服務器有:Asterisk、FreeSWITCH、Yate、Opensip等,
如果想要搭建Asterisk可以參考我這篇文章:VoIP服務器Asterisk安裝及部署。
2、客戶端
SIP客戶端推薦Linphone,Android、IOS、Mac、Windows全平臺支持,雖然界面做的丑了些,但是功能很全。
谷歌應用商店里還有一款APP,這里大力推薦一下:Calls,設計精致且功能強大。
八、wireshark分析
開發流媒體協議,wireshark是不可或缺的神器,使用wireshark分析網絡抓包可以讓我們更清晰的了解sip協議。
在過濾規則中加入sip,然后點擊菜單中的通話 > VoIP通話 > 流序列,即可清楚的看到sip通話整個流程信令的傳輸。
?
?
總結
以上是生活随笔為你收集整理的VoIP通话之SIP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windbg在Managed App中设
- 下一篇: 传统蒙文字体_关于传统蒙古文网页的国际标