SIP消息有兩種類型:請求和響應(yīng)。
一個請求的打開行包含定義,其中該請求是要被發(fā)送的方法,它定義請求,以及請求URI。
同樣響應(yīng)的打開行包含一個響應(yīng)代碼。
SIP請求是用于建立通信的代碼。為了補(bǔ)充它們,SIP響應(yīng)其通常指示請求是成功還是失敗。
有一些命令稱作方法,使SIP消息可行。
METHODS 可被視為SIP請求,因為它們要求將要采取的另一個用戶代理或服務(wù)器的特定動作。
METHODS 被區(qū)分為兩種類型:
有六個核心的方法如以下所討論。
INVITE被用于發(fā)起會話使用用戶代理。換言之,一個INVITE方法用于建立用戶代理之間的媒體會話。
INVITE可以包含在郵件正文中主叫者的媒體信息。
會話被認(rèn)為是如果INVITE已經(jīng)獲得了成功響應(yīng)(2xx)上建立或ACK已發(fā)送。
一個成功的INVITE請求建立這一直持續(xù)到BYE發(fā)送到終止會話的兩個用戶代理之間的對話。
一個發(fā)送的INVITE內(nèi)已建立的對話被稱為一個re-INVITE請求。
re-INVITE請求用于改變在會話特性或刷新一個對話的狀態(tài)。
下面的代碼演示了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:Alice@atlanta.com> ;tag = 1234567 To: Bob <sips:Bob@TMC.com> Call-ID: 12345601@ANC.com CSeq: 1 INVITE Contact: <sips:Alice@client.ANC.com> 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用于終止已建立的會話的方法。這是可以通過主叫方或被叫方結(jié)束會話被發(fā)送SIP請求。
REGISTER請求執(zhí)行的用戶代理的注冊。這個請求是由用戶代理發(fā)送到注冊服務(wù)器。
REGISTER請求可以被轉(zhuǎn)發(fā)或代理,直到它到達(dá)指定域的權(quán)威注冊機(jī)構(gòu)。
它所攜帶的AOR(記錄地址)在為正在注冊的用戶的頭。
REGISTER請求中包含的時間段(3600秒)。
一個用戶代理可以代表其他用戶發(fā)送代理注冊請求。這就是所謂的第三方注冊。在這里,從標(biāo)簽中包含方提交的注冊代表確定To頭部分的URI。
CANCEL用于終止未建立會話。用戶代理使用此請求取消更早啟動暫停呼叫的嘗試。
它可以通過一個用戶代理或代理服務(wù)器來發(fā)送。
CANCEL是一個逐跳轉(zhuǎn)發(fā)請求,也就是說,它通過用戶代理之間的元件和接收由下一狀態(tài)元素所產(chǎn)生的反應(yīng)。
ACK用于確認(rèn)最后的響應(yīng)的INVITE方法。ACK總是在INVITE的方向。 ACK可能包含的SDP主體(媒體特性),如果它不在INVITE可用。

ACK可能不被用于修改一個已經(jīng)發(fā)送的初始INVITE的媒體描述。
有狀態(tài)代理接收ACK必須確定是否將ACK應(yīng)下游轉(zhuǎn)發(fā)到另一個代理或用戶代理。
對于2xx應(yīng)答,ACK是端到端的,但對于所有其他最終響應(yīng),它可以在逐跳轉(zhuǎn)發(fā)基礎(chǔ)上參與狀態(tài)代理時。
OPTIONS方法用于查詢的用戶代理或圍繞其功能的代理服務(wù)器,并發(fā)現(xiàn)其當(dāng)前的可用性。于請求的響應(yīng)列出了用戶代理或服務(wù)器的功能。代理從未產(chǎn)生OPTIONS請求。
訂閱所使用的用戶代理商建立了訂閱獲取通知的有關(guān)特定事件的目的。
它有一個時間周期,在Expires頭字段,指示存在一個訂閱的所需的持續(xù)時間。
在指定的時間段過后,訂閱將自動終止。
成功訂閱建立用戶代理之間的對話。
訂閱可以通過發(fā)送到期時間之前對話框中的另一個訂閱刷新。
服務(wù)器接受訂閱返回一個200 OK。
用戶可以通過發(fā)送另一個使用訂閱方法退訂過期值為0(零)。
NOTIFY是用來由用戶代理傳達(dá)的特定事件的發(fā)生。NOTIFY總是在對話中發(fā)送當(dāng)用戶與通知之間存在訂閱。
200 OK響應(yīng)被接收為每個NOTIFY以指示它已收到。
NOTIFY請求包含指示,指示訂閱的當(dāng)前狀態(tài)的包和訂閱的狀態(tài)報頭字段的Event報頭字段。
NOTIFY總是在訂閱開始和訂閱終止發(fā)送。
PUBLISH用于由用戶代理發(fā)送的事件的狀態(tài)信息,以已知作為一個事件狀態(tài)合成器的服務(wù)器。
Publish當(dāng)有事件信息的多種來源主要是有用的。
PUBLISH請求類似于一個NOTIFY,不同之處在于它不是在對話框發(fā)送。
一個PUBLISH請求必須包含一個Expires頭字段和Min-Expires頭字段域。
REFER用于由一個用戶代理來指另一個用戶代理訪問URI的對話框。
REFER必須包含一個Refer-To頭。這是參考一個強(qiáng)制性的頭。
REFER可以在內(nèi)部或在對話外發(fā)送。
202 Accepted 將引發(fā)REFER請求這表明其他用戶代理已經(jīng)接受了參考。
INFO所使用的用戶代理發(fā)送呼叫信令信息,與它建立了一個媒體會話其他用戶代理。這是一個終端到終端的請求,并且從不生成由代理。代理會一直轉(zhuǎn)發(fā)信息請求。
UPDATE用于修改會話的狀態(tài)不改變對話的狀態(tài)。更新用于如果會話沒有建立,并且用戶想要改變編解碼器。
如果會話建立后,再邀請來改變/更新會話。
PRACK用于確認(rèn)收到臨時響應(yīng)(1XX)可靠傳輸。
PRACK通過一個用戶代理客戶端時產(chǎn)生的臨時的響應(yīng)已經(jīng)接收到含有RSEQ可靠序列號和一個 supported:100rel 頭。
PRACK包含架頭(RSEQ+ Cseq)值。
PRACK可能包含郵件正文;它可以被用于提供/應(yīng)答交換。
它是用來發(fā)送即時消息或使用SIP IM。一個IM通常由短信息交換實時由從事文本會話參與者。
消息可以在對話中或在對話外發(fā)送。
消息的內(nèi)容在郵件正文中攜帶的MIME附件。
200 OK響應(yīng)被正常接收,以指示該消息已被傳送在它的目的地。