對話啟動協定

會話發起協議（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 網路單元

2.1 使用者代理（User Agent）

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

2.2 代理伺服器（Proxy）

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

2.3 註冊伺服器（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，Sonus 等許多公司）。其他的一些以 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 使用的 XMPPpresence 規範整合在一起。最著名的是將 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 解決方案。

軟體

SIP 通訊方案：
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 開源軟交換解決方案
SIP 伺服器：
Micromethod SIPMethod Platform
Ubiquity SIP 應用伺服器
3Com VCX IP 電話模組：背靠背使用者代理 SIP PBX
BEA WebLogic SIP 伺服器
Brekeke OnDO SIP 伺服器，適用於 Windows，Linux，和 Mac OS X。用於個人和教育用途免費。
Cisco SIP 代理伺服器
Nortel SIP 多媒體通訊伺服器 5200
IPTel.org 免費軟體 SIP Express Router 路由器
Pingtel Call Manager（基於 SIP Foundry 開源）
FreeSWITCH 開源軟交換平臺
SIP 客戶端：
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 軟電話，可以完全免費使用。
eyeBeam 與 X-Lite 出自於同一家公司，功能更為強大，需要付費使用。
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 一個免費的 Softphone，執行在 Windows 上，Mac OS X 和 Linux 版本稍後推出。
OpenWengo 一個開源的 SIP 客戶端，執行在 Windows 和 Linux 上。Mac OS X 和 PocketPC 版本稍後推出。
SFLPhone 一個開源的 SIP 客戶端。
ZAP 一個開源的，基於 XUL 的 SIP 客戶端。
SIP 測試工具：
SFTF: SIP 論壇使用者代理測試框架（開源；由 SIP 論壇編寫）。
SIPp: 一個開源的 SIP 測試工具（用於功能和效能測試）。
Sipsak: sipsak 是一個命令列工具，它能夠傳送簡單的請求到 SIP 伺服器（開源）。
頻寬 VoIP 測試：Bandwidth.com 提供了一個可以測試網路上 SIP 埠的工具。
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 簡短、元件化到位。