SIP消息
SIP消息有兩種類型:請求和響應。
一個請求的打開行包含定義,其中該請求是要被髮送的方法,它定義請求,以及請求URI。
同樣響應的打開行包含一個響應代碼。
請求方法
SIP請求是用於建立通信的代碼。爲了補充它們,SIP響應其通常指示請求是成功還是失敗。
有一些命令稱作方法,使SIP消息可行。
METHODS 可被視爲SIP請求,因爲它們要求將要採取的另一個用戶代理或服務器的特定動作。
METHODS 被區分爲兩種類型:
- 核心方法
- 擴展方法
核心方法
有六個核心的方法如以下所討論。
INVITE
INVITE被用於發起會話使用用戶代理。換言之,一個INVITE方法用於建立用戶代理之間的媒體會話。
INVITE可以包含在郵件正文中主叫者的媒體信息。
會話被認爲是如果INVITE已經獲得了成功響應(2xx)上建立或ACK已發送。
一個成功的INVITE請求建立這一直持續到BYE發送到終止會話的兩個用戶代理之間的對話。
一個發送的INVITE內已建立的對話被稱爲一個re-INVITE請求。
re-INVITE請求用於改變在會話特性或刷新一個對話的狀態。
INVITE實例
下面的代碼演示了INVITE如何被使用。
INVITE sips:Bob@TMC.com SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061; branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice sips:[email protected] ;tag = 1234567
To: Bob sips:[email protected]
Call-ID: 12345601@ANC.com
CSeq: 1 INVITE
Contact: sips:[email protected]
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
BYE
BYE用於終止已建立的會話的方法。這是可以通過主叫方或被叫方結束會話被髮送SIP請求。
- 它不能由代理服務器發送。
- BYE請求通常路線端到端,繞過代理服務器。
- BYE不能被髮送到一個等待INVITE或未確定會話。
REGISTER
REGISTER請求執行的用戶代理的註冊。這個請求是由用戶代理髮送到註冊服務器。
REGISTER請求可以被轉發或代理,直到它到達指定域的權威註冊機構。
它所攜帶的AOR(記錄地址)在爲正在註冊的用戶的頭。
REGISTER請求中包含的時間段(3600秒)。
一個用戶代理可以代表其他用戶發送代理註冊請求。這就是所謂的第三方註冊。在這裏,從標籤中包含方提交的註冊代表確定To頭部分的URI。
CANCEL
CANCEL用於終止未建立會話。用戶代理使用此請求取消更早啓動暫停呼叫的嘗試。
它可以通過一個用戶代理或代理服務器來發送。
CANCEL是一個逐跳轉發請求,也就是說,它通過用戶代理之間的元件和接收由下一狀態元素所產生的反應。
ACK
ACK用於確認最後的響應的INVITE方法。ACK總是在INVITE的方向。 ACK可能包含的SDP主體(媒體特性),如果它不在INVITE可用。
ACK可能不被用於修改一個已經發送的初始INVITE的媒體描述。
有狀態代理接收ACK必須確定是否將ACK應下游轉發到另一個代理或用戶代理。
對於2xx應答,ACK是端到端的,但對於所有其他最終響應,它可以在逐跳轉發基礎上參與狀態代理時。
OPTION
OPTIONS方法用於查詢的用戶代理或圍繞其功能的代理服務器,並發現其當前的可用性。於請求的響應列出了用戶代理或服務器的功能。代理從未產生OPTIONS請求。
擴展方法
訂閱
訂閱所使用的用戶代理商建立了訂閱獲取通知的有關特定事件的目的。
它有一個時間週期,在Expires頭字段,指示存在一個訂閱的所需的持續時間。
在指定的時間段過後,訂閱將自動終止。
成功訂閱建立用戶代理之間的對話。
訂閱可以通過發送到期時間之前對話框中的另一個訂閱刷新。
服務器接受訂閱返回一個200 OK。
用戶可以通過發送另一個使用訂閱方法退訂過期值爲0(零)。
NOTIFY
NOTIFY是用來由用戶代理傳達的特定事件的發生。NOTIFY總是在對話中發送當用戶與通知之間存在訂閱。
200 OK響應被接收爲每個NOTIFY以指示它已收到。
NOTIFY請求包含指示,指示訂閱的當前狀態的包和訂閱的狀態報頭字段的Event報頭字段。
NOTIFY總是在訂閱開始和訂閱終止發送。
PUBLISH
PUBLISH用於由用戶代理髮送的事件的狀態信息,以已知作爲一個事件狀態合成器的服務器。
Publish當有事件信息的多種來源主要是有用的。
PUBLISH請求類似於一個NOTIFY,不同之處在於它不是在對話框發送。
一個PUBLISH請求必須包含一個Expires頭字段和Min-Expires頭字段域。
REFER
REFER用於由一個用戶代理來指另一個用戶代理訪問URI的對話框。
REFER必須包含一個Refer-To頭。這是參考一個強制性的頭。
REFER可以在內部或在對話外發送。
202 Accepted 將引發REFER請求這表明其他用戶代理已經接受了參考。
INFO
INFO所使用的用戶代理髮送呼叫信令信息,與它建立了一個媒體會話其他用戶代理。這是一個終端到終端的請求,並且從不生成由代理。代理會一直轉發信息請求。
UPDATE
UPDATE用於修改會話的狀態不改變對話的狀態。更新用於如果會話沒有建立,並且用戶想要改變編解碼器。
如果會話建立後,再邀請來改變/更新會話。
PRACK
PRACK用於確認收到臨時響應(1XX)可靠傳輸。
PRACK通過一個用戶代理客戶端時產生的臨時的響應已經接收到含有RSEQ可靠序列號和一個 supported:100rel 頭。
PRACK包含架頭(RSEQ+ Cseq)值。
PRACK可能包含郵件正文;它可以被用於提供/應答交換。
MESSAGE
它是用來發送即時消息或使用SIP IM。一個IM通常由短信息交換實時由從事文本會話參與者。
消息可以在對話中或在對話外發送。
消息的內容在郵件正文中攜帶的MIME附件。
200 OK響應被正常接收,以指示該消息已被傳送在它的目的地。