對話啟動協定

會話發起協議（Session Initiation Protocol，縮寫SIP）是一個由IETF MMUSIC工作組開發的協議，作為標準被提議用於建立、修改和終止包括影片、語音、即時通信、在線遊戲和虛擬實境等多種多媒體元素在內的交互式使用者會話。2000年11月，SIP被正式批准成為3GPP信號協議之一，並成為IMS體系結構的一個永久單元。SIP與H.323一樣，是用於VoIP最主要的信令協議之一。

## 協議設計

SIP最早由Henning Schulzrinne和Mark Handley於1996年所設計. SIP的設計目標之一是提供類似公用交換電話網（PSTN）中呼叫處理功能的擴展集。在這個擴展集中，實現類似日常電話的操作：撥號，振鈴，回鈴音或者忙音，只是實現方式和術語有所不同。

SIP也實現了許多七號信令系統（SS7）中更高級的呼叫處理功能，儘管這兩個協議相差很遠。SS7是一個高度集中處理的協議，其特點表現為高複雜度的中心網路結構和無智能的啞終端（傳統的電話機）。SIP則是一個點對點協議，所以它只需要一個相對簡單的（因此也高度可擴展的）核心網路，而將處理工作下放給連接在網路邊緣的智能端點（裝有硬體或軟體的終端設備）。SIP的許多功能在端點中實現，這與傳統的SS7將其在網路核心設備實現的作法大異其趣。

儘管有許多其它的VoIP信號協議存在，SIP的特點在於它的支持者植根於IP團體而不是電信產業。SIP最初由IETF標準化和管理，而H.323VoIP協議則從傳統上與ITU有著更多的聯繫。儘管如此，這兩個組織對兩個協議在某些方面都相互認可。

SIP與許多其它的協議協同工作，僅僅涉及通信會話的信令部分（control message）。SIP報文內容傳送會話描述協議（SDP），SDP協議描述了會話所使用流媒體細節，如：使用哪個IP埠，採用哪種編解碼器等等。SIP的一個典型用途是：SIP「會話」傳輸一些簡單的經過封包的實時傳輸協議流。RTP本身才是語音或影片的載體。

第一個被提議的標準版本（SIP 2.0）在RFC 2543中定義。在RFC 3261中對這個協議有更深入的解釋，儘管目前許多裝置仍然是參考以前的過渡版本而實現的。注意現在的版本還是2.0。

SIP同HTTP相似並採用了後者的一些設計原則：SIP報文是人類可讀的，並且也是採取請求-應答的流程。SIP的倡導者宣稱它比H.323簡單。但是，有些人則保留地認為儘管SIP的原始目標很簡單，現在它已經演變得跟H.323一樣複雜了。SIP借用了許多HTTP狀態碼，如常見的'404 not found'。SIP的發起者說：曾經在網路上出現的急速革新和應用發展的歷史將同樣發生在電話產業上。SIP和H.323對語音通信毫無限制，能夠傳輸從語音到影片的任何通信會話，甚至未來還沒有設想的應用。

## SIP網路單元

### 使用者代理（User Agent）

SIP使用者代理是一個SIP邏輯網路端點，用於創建、發送、接收SIP消息並管理一個SIP會話。SIP使用者代理又可分為使用者代理客戶端UAC（User Agent Client）和使用者代理服務端UAS（User Agent Server）。UAC創建並發送SIP請求，UAS接收處理SIP請求，發送SIP響應。

### 代理伺服器（Proxy）

SIP代理伺服器（PROXY）在網路上位於SIP UAC和UAS之間，用於幫助UAC和UAS間的消息路由。PROXY也可以執行路由策略控制（比如，檢查SIP消息的合法性，確認消息是否被路由允許）。PROXY在轉發SIP消息時，可能根據需要修改SIP消息的某些部分。

### 註冊伺服器（Register）

SIP註冊伺服器用於接收SIP註冊請求，並保存發送註冊請求的UA的位置資訊。

## SIP網路部件

擁有傳統的電話機外表，觸感和形狀的硬體，但使用SIP和RTP通信的終端和設備，已經有多家廠商可以供貨。這些產品中有些可以通過電子配號（ENUM）來把現存的電話號碼翻譯成使用DNS的SIP位址，所以即使你的服務商運營的網路還只是為傳統電話號碼服務的PSTN（並且對你收費），你也可以通過這些電話網絡呼叫其它的SIP使用者。

現在，軟體SIP終端已經非常常見。微軟公司的Windows Messenger使用了SIP。2003年6月，蘋果電腦宣布並向公眾發布了測試版的iChat AV，一個新版的兼容AOL Instant Messenger並支持通過SIP進行音影片聊天的客戶端。

SIP要想成為實用的服務同樣需要代理和註冊網路部件。儘管兩個SIP終端可以不藉由任何SIP基礎設施的支持來進行通信（這也是為什麼SIP被稱為點對點的協議），但是這種方式是不適於實際的公共服務。現在已經有了很多公司提供軟交換系統（如Nortel等公司）。其他的一些以Ubiquity Software和Dynamicsoft為首的公司已經實現了一些基於被提議的標準，建立在JavaJAIN規範上的產品。

來自RFC：

"SIP使用代理伺服器（Proxy server）的部件來協助轉發信令報文到目標使用者目前網路位置，提供使用者認證和授權服務，實現服務提供商的呼叫路由策略，和提供給使用者各種附加功能。"

"SIP同樣提供了註冊功能以允許用戶上傳他們目前的聯網位置供代理伺服器使用。"

"因為註冊動作在SIP協議中扮演重要的角色，掌控使用者註冊資訊的使用者代理伺服器有一個特殊的名字註冊伺服器（registrar）。"

"有一個重要的概念，那就是各種SIP伺服器之間的區別是邏輯上的，而不是物理上的。"

## 即時消息（IM）和Presence

一個基於SIP標準針對及時資訊的擴展，被稱為SIMPLE已經被提議並正在開發中。SIMPLE可以傳遞Presence資訊：被叫使用者是否有意願加入對話？使用終端是否有能力加入對話？Presence資訊的角色如同MSN Messenger和AIM、等IM客戶端中已普遍實現的好友狀態功能。

已經有人在努力把基於SIP的VoIP和Jabber使用的XMPP規範整合在一起。最著名的是將XMPP擴展到整合語音的Google Talk，它計劃整合SIP。Gizmo工程，曾經實現了SIP，現在已經在他們的客戶端和服務中加入了XMPP。

## 商業應用

用於搭載媒體流的實時傳輸協議（RTP）並不能簡單的穿越NAT路由器。大部分SIP客戶端可以通過STUN的協助穿越完全圓錐形和埠限制圓錐形NAT但對於對稱的（symmetric）NAT還是有問題。

一些較新的帶ALG功能的路由器，現在可以識別SIP通信並讓其通過。RTP代理伺服器，一種在上世紀九十年代普遍使用的類似於HTTP代理伺服器的專用於SIP的線速處理器，可以啟用CALEA並穿越老式的無法識別SIP的NAT設備。

正如它的發明者所預見的，SIP的點對點特性無法使用一些網路本身提供的服務。例如，網路不能很容易的支持合法的呼叫偵聽（在美國由法律控制的竊聽，CALEA）。緊急呼叫（在美國呼叫E911）難以路由。因為IP終端本身具有移動性，網路並沒有任何定位的能力，要確定正確的公共服務應答點PSAP很困難。然而，當商業SIP服務商們正準備放棄時，一些實用的解決方案卻在進行試驗。由3GPP和3GPP2等公司開發的標準定義了基本SIP模型的一些應用，這些應用推動了商業化並支持了網路中心的能力，如CALEA。

Vonage和SIPphone等公司是消費SIP的先鋒，他們擁有一個快速增長的使用者基礎。一些較大的公司，如AT&T和Level(3)也不甘示弱。傳統的電信工業（包括朗訊科技和北電網絡）現在都在集中開發基於SIP架構模型和擴展的系統，如3GPP的IP多媒體子系統（IMS）。

一些VoIP電話公司，如BroadVoice，允許用戶使用它們自己的SIP設備，包括兼容SIP的電話機，AsteriskPBX，或者軟電話。新的消費SIP設備市場正在繼續膨脹。

開源團隊開始提供越來越多的建立終端，代理和註冊伺服器所需的技術，既讓這些技術走進了人們的日常生活，又加速了其向全球推廣。SIPfoundry已經開發了多種SIP協議棧，客戶端應用程式和SDK，還有一整套可以與市場上大部分由廠商銷售的IP PBX實現相競爭的IP PBX解決方案。

## 軟體

- 3Com SIP PBX - 基於SIP的企業級IP電話應用套件
- Asterisk開源SIP/IAX PBX
- Brekeke OnDO PBX
- Microsoft Office Live Communications Server
- pbxnsip PBX
- Rostrvm Switchless - 使用SIP的呼叫中心架構
- sipX - 開源的SIP PBX（帶商業支持 Pingtel.）
- FreeSWITCH開源軟交換解決方案
- Micromethod SIPMethod Platform
- Ubiquity SIP應用伺服器
- 3Com VCX IP電話模塊：背靠背使用者代理SIP PBX
- BEA WebLogic SIP伺服器
- Brekeke OnDO SIP伺服器，適用於Windows，Linux，和Mac OS X。用於個人和教育用途免費。
- Cisco SIP代理伺服器
- IPTel.org 免費軟體SIP Express Router路由器
- Pingtel Call Manager（基於SIP Foundry開源）
- FreeSWITCH開源軟交換平台
- ekiga: Ekiga是全功能的SIP和H.323兼容的VoIP、IP電話和影片會議應用程式，它允許您與遠程使用者通過使用SIP和H.323硬體或軟體進行音訊及影片通話。
- GNOME Meeting: H323和SIP客戶端（目前版本1.3-opal）for GNU/Linux。
- Gizmo Project: SIPphone.com提供，適用於Mac OS X，Windows和Linux。
- sipXphone - 一個適用於Windows和Linux的SIP客戶端
- PhoneGaim SIP免費軟體，基於Gaim。
- X-Lite一個流行的Windows和Linux軟電話，可以完全免費使用。
- KCall一個使用Qt庫的Linux軟電話。
- KPhone一個使用Qt庫的Linux軟電話。
- Linphone一個使用GTK庫的Linux軟電話。
- Pingtel SIP soft phone（單使用者版，企業版和用於嵌入式的OEM版。OEM版嵌入到 Earthlink Vling服務中。）
- SJPhone一個免費的SIP客戶端，可以運行在Mac OS X，Windows，PocketPC和Linux上。
- Jajah一個免費的軟體電話，運行在Windows上，Mac OS X和Linux版本稍後推出。
- OpenWengo一個開源的SIP客戶端，運行在Windows和Linux上。Mac OS X和PocketPC版本稍後推出。
- Jami一個開源的SIP客戶端。
- ZAP一個開源的，基於XUL的SIP客戶端。
- SFTF: SIP論壇使用者代理測試框架（開源；由SIP論壇編寫）。
- SIPp:一個開源的SIP測試工具（用於功能和性能測試）。
- Sipsak: sipsak是一個命令行工具，它能夠發送簡單的請求到SIP伺服器（開源）。
- ReSIProcate:開源SIP協議棧。
- OPAL:開源的sip協議棧，同時支持H323和sip
- VOCAL開源SIP協議棧
- osip開源SIP協議棧
- sipx 開源SIP協議棧
- Sofia-SIP一個小巧開源的SIP協議棧（RFC3261），支持WIN32平台

6種SIP協議棧各有千秋，OPAL有發展潛力，VOCAL比較完善，sipX兼容性好，ReSIProcate比較穩定，oSIP小巧而快速，Sofia-SIP簡短、組件化到位。

## 外部連結

- SIP資訊
- ONsip.org –致力於基於SIP的VoIP解決方案的開源團體。
- Henning Schulzrinne合著者的SIP標準協議棧的頁面。
- SIP論壇
- Packetizer的SIP資訊站點
- 匯思通信SIP論壇（中文簡體版）永久失效連結

## 基本資料

- 縮寫符號：SIP
- 用途：VoIP
- 日期：1999年
- osilayer：應用層（第七層）
- 內陸港：5060、5061