對話啟動協定

會話發起協議（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，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設備市場正在繼續膨脹。
開源團隊開始提供越來越多的建立終端，代理和註冊服務器所需的技術，既讓這些技術走進了人們的日常生活，又加速了其向全球推廣。 SIPfoundrydate=20110104200352 已經開發了多種SIP協議棧，客戶端應用程序和SDK，還有一整套可以與市場上大部分由廠商銷售的IP PBX實現相競爭的IP PBX解決方案。

**軟件**
 SIP通信方案：
**  3Com SIP PBX - 基於SIP的企業級IP電話應用套件date=20101225213208 
**  Asterisk開源SIP/IAX PBXdate=20110224084542 
**  Brekeke OnDO PBXdate=20201202061934 
**  Microsoft Office Live Communications Server
**  pbxnsip PBXdate=20180323070954 
**  Rostrvm Switchless - 使用SIP的呼叫中心架構date=20081203161805 
**  sipX - 開源的SIP PBXdate=20051210024955 （帶商業支持 Pingteldate=20090504124430 .）
** FreeSWITCH開源軟交換解決方案- SIP服務器：
**  Micromethod SIPMethod Platform
**  Ubiquity SIP應用服務器
**  3Com VCX IP電話模塊：背靠背用戶代理SIP PBXdate=20101225213208 
**  BEA WebLogic SIP服務器date=20080521161301 
**  Brekeke OnDO SIP服務器date=20201202061934 ，適用於Windows，Linux，和Mac OS X。用於個人和教育用途免費。
**  Cisco SIP代理服務器date=20070522054329 
**  Nortel SIP多媒體通信服務器5200fix-attempted=yes 
** IPTel.org 免費軟件SIP Express Router路由器
**  Pingtel Call Manager（基於SIP Foundry開源）
**  FreeSWITCH開源軟交換平臺date=20130620165912 - SIP客戶端：
**  ekigadate=20210204183554 : 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客戶端date=20051210024955 
** 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服務中。）
**  SJPhonedate=20190102163440 一個免費的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測試工具：
**  SFTFdate=20210309050807 : SIP論壇用戶代理測試框架（開源；由SIP論壇編寫）。
**  SIPpdate=20210310175021 :一個開源的SIP測試工具（用於功能和性能測試）。
**  Sipsak: sipsak是一個命令行工具，它能夠發送簡單的請求到SIP服務器（開源）。
**  帶寬VoIP測試fix-attempted=yes ：Bandwidth.com提供了一個可以測試網絡上SIP端口的工具。- SIP協議棧：
**  ReSIProcatedate=20080907104725 :開源SIP協議棧。
**  OPALdate=20200909002327 :開源的sip協議棧，同時支持H323和sip
**  VOCALdate=20201205180001 開源SIP協議棧
**  osipdate=20210306034125 開源SIP協議棧
**  sipx date=20110104200352 開源SIP協議棧
**  Sofia-SIPdate=20210224191710 一個小巧開源的SIP協議棧（RFC3261），支持WIN32平臺
6種SIP協議棧各有千秋，OPAL有發展潛力，VOCAL比較完善，sipX兼容性好，ReSIProcate比較穩定，oSIP小巧而快速，Sofia-SIP簡短、組件化到位。

**參見**
 Earthlink SIPshare- Media Gateway Control Protocol（MGCP）- IP多媒體子系統

**外部鏈接**
  SIP資訊date=20200627142418 -  ONsip.org –致力於基於SIP的VoIP解決方案的開源團體。-  Henning Schulzrinne合著者的SIP標準協議棧的頁面。date=20210211013108 -  SIP論壇date=20210311113618 -  3NGfix-attempted=yes -  Packetizer的SIP信息站點date=20080516201916 -  匯思通信SIP論壇（中文簡體版）永久失效連結date=20070407000456