SIP訊息有兩種型別:請求和響應。
一個請求的開啟行包含定義,其中該請求是要被傳送的方法,它定義請求,以及請求URI。
同樣響應的開啟行包含一個響應程式碼。
SIP請求是用於建立通訊的程式碼。為了補充它們,SIP響應其通常指示請求是成功還是失敗。
有一些命令稱作方法,使SIP訊息可行。
METHODS 可被視為SIP請求,因為它們要求將要採取的另一個使用者代理或伺服器的特定動作。
METHODS 被區分為兩種型別:
有六個核心的方法如以下所討論。
INVITE被用於發起對談使用使用者代理。換言之,一個INVITE方法用於建立使用者代理之間的媒體對談。
INVITE可以包含在郵件正文中主叫者的媒體資訊。
對談被認為是如果INVITE已經獲得了成功響應(2xx)上建立或ACK已傳送。
一個成功的INVITE請求建立這一直持續到BYE傳送到終止對談的兩個使用者代理之間的對話。
一個傳送的INVITE內已建立的對話被稱為一個re-INVITE請求。
re-INVITE請求用於改變在對談特性或重新整理一個對話的狀態。
下面的程式碼演示了INVITE如何被使用。
INVITE sips:[email protected] 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: [email protected] 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用於終止已建立的對談的方法。這是可以通過主叫方或被叫方結束對談被傳送SIP請求。
REGISTER請求執行的使用者代理的註冊。這個請求是由使用者代理傳送到註冊伺服器。
REGISTER請求可以被轉發或代理,直到它到達指定域的權威序號產生器構。
它所攜帶的AOR(記錄地址)在為正在註冊的使用者的頭。
REGISTER請求中包含的時間段(3600秒)。
一個使用者代理可以代表其他使用者傳送代理註冊請求。這就是所謂的第三方註冊。在這裡,從標籤中包含方提交的註冊代表確定To頭部分的URI。
CANCEL用於終止未建立對談。使用者代理使用此請求取消更早啟動暫停呼叫的嘗試。
它可以通過一個使用者代理或代理伺服器來傳送。
CANCEL是一個逐跳轉發請求,也就是說,它通過使用者代理之間的元件和接收由下一狀態元素所產生的反應。
ACK用於確認最後的響應的INVITE方法。ACK總是在INVITE的方向。 ACK可能包含的SDP主體(媒體特性),如果它不在INVITE可用。
ACK可能不被用於修改一個已經傳送的初始INVITE的媒體描述。
有狀態代理接收ACK必須確定是否將ACK應下游轉發到另一個代理或使用者代理。
對於2xx應答,ACK是端到端的,但對於所有其他最終響應,它可以在逐跳轉發基礎上參與狀態代理時。
OPTIONS方法用於查詢的使用者代理或圍繞其功能的代理伺服器,並行現其當前的可用性。於請求的響應列出了使用者代理或伺服器的功能。代理從未產生OPTIONS請求。
訂閱所使用的使用者代理商建立了訂閱獲取通知的有關特定事件的目的。
它有一個時間週期,在Expires頭欄位,指示存在一個訂閱的所需的持續時間。
在指定的時間段過後,訂閱將自動終止。
成功訂閱建立使用者代理之間的對話。
訂閱可以通過傳送到期時間之前對話方塊中的另一個訂閱重新整理。
伺服器接受訂閱返回一個200 OK。
使用者可以通過傳送另一個使用訂閱方法退訂過期值為0(零)。
NOTIFY是用來由使用者代理傳達的特定事件的發生。NOTIFY總是在對話中傳送當使用者與通知之間存在訂閱。
200 OK響應被接收為每個NOTIFY以指示它已收到。
NOTIFY請求包含指示,指示訂閱的當前狀態的包和訂閱的狀態報頭欄位的Event報頭欄位。
NOTIFY總是在訂閱開始和訂閱終止傳送。
PUBLISH用於由使用者代理傳送的事件的狀態資訊,以已知作為一個事件狀態合成器的伺服器。
Publish當有事件資訊的多種來源主要是有用的。
PUBLISH請求類似於一個NOTIFY,不同之處在於它不是在對話方塊傳送。
一個PUBLISH請求必須包含一個Expires頭欄位和Min-Expires頭欄位域。
REFER用於由一個使用者代理來指另一個使用者代理存取URI的對話方塊。
REFER必須包含一個Refer-To頭。這是參考一個強制性的頭。
REFER可以在內部或在對話外傳送。
202 Accepted 將引發REFER請求這表明其他使用者代理已經接受了參考。
INFO所使用的使用者代理傳送呼叫信令資訊,與它建立了一個媒體對談其他使用者代理。這是一個終端到終端的請求,並且從不生成由代理。代理會一直轉發資訊請求。
UPDATE用於修改對談的狀態不改變對話的狀態。更新用於如果對談沒有建立,並且使用者想要改變編解碼器。
如果對談建立後,再邀請來改變/更新對談。
PRACK用於確認收到臨時響應(1XX)可靠傳輸。
PRACK通過一個使用者代理用戶端時產生的臨時的響應已經接收到含有RSEQ可靠序列號和一個 supported:100rel 頭。
PRACK包含架頭(RSEQ+ Cseq)值。
PRACK可能包含郵件正文;它可以被用於提供/應答交換。
它是用來傳送即時訊息或使用SIP IM。一個IM通常由簡訊息交換實時由從事文字對談參與者。
訊息可以在對話中或在對話外傳送。
訊息的內容在郵件正文中攜帶的MIME附件。
200 OK響應被正常接收,以指示該訊息已被傳送在它的目的地。