售前電話
135-3656-7657
售前電話 : 135-3656-7657
SIP消息有兩種:客戶機(jī)到服務(wù)器的請(qǐng)求(Request),服務(wù)器到客戶機(jī)的響應(yīng)(Response)。
SIP消息由一個(gè)起始行(start—line)、一個(gè)或多個(gè)字段(field)組成的消息頭、一個(gè)標(biāo)志 消息頭結(jié)束的空行(CRLF)以及作為可選項(xiàng)的消息體(message body)組成。其中,描述消 息體(messagebody)的頭稱為實(shí)體頭(entityheader),其格式如下:
generic-message = start-line
*message-header
CRLF
[message-body ]
起始行分請(qǐng)求行(Request-Line)和狀態(tài)行(Status-Line)兩種,其中請(qǐng)求行是請(qǐng)求消息 的起始行,狀態(tài)行是響應(yīng)消息的起始行。
消息頭分通用頭(general-header)、請(qǐng)求頭(request-header)、響應(yīng)頭(response-header) 和實(shí)體頭(entity-header) 4種。
1.SIP請(qǐng)求消息
請(qǐng)求消息的格式如下:
Request = Request-Line
*( general-header
I request-header
I entity-header)
CRLF
[message-body ]
請(qǐng)求行(Request-Line)以方法(method)標(biāo)記開(kāi)始,后面是Request-URI和協(xié)議版本 (SIP-Version),最后以回車(chē)鍵結(jié)束,各個(gè)元素間用空格鍵字符間隔。
Request-Line = Method SP Request-URI SP SIP-Version CRLF
SIP用術(shù)語(yǔ)“method”來(lái)對(duì)說(shuō)明部分加以描述,Method標(biāo)識(shí)是區(qū)分大小寫(xiě)的。
Method = "INVITE" I "ACK" I "OPTIONS" I "BYE"
I "CANCEL" I "REGISTER'T'INFO"
Slf定義了以下幾種方法(methods)。
INVITE
INVITE方法用于邀請(qǐng)用戶或服務(wù)參加一個(gè)會(huì)話。在INVITE請(qǐng)求的消息體中可對(duì)被叫方 被邀請(qǐng)參加的會(huì)話加以描述,如主叫方能接收的媒體類型、發(fā)出的媒體類型及其一些參數(shù); 對(duì)INVITE請(qǐng)求的成功響應(yīng)必須在響應(yīng)的消息體中說(shuō)明被叫方愿意接收哪種媒體,或者說(shuō)明被 叫方發(fā)出的媒體。
服務(wù)器可以自動(dòng)地用200 (OK)響應(yīng)響應(yīng)會(huì)議邀請(qǐng)。
ACK
ACK請(qǐng)求用于客戶機(jī)向服務(wù)器證實(shí)它已經(jīng)收到了對(duì)INVITE請(qǐng)求的最終響應(yīng)。ACK只和 INVITE請(qǐng)求一起使用。對(duì)2xx最終響應(yīng)的證實(shí)由客戶機(jī)用戶代理發(fā)出,對(duì)其他最終響應(yīng)的證 實(shí)由收到響應(yīng)的第一個(gè)代理或第一個(gè)客戶機(jī)用戶代理發(fā)出。ACK請(qǐng)求的To, From, CaU-ID, CSeq字段的值由對(duì)應(yīng)的INVITE請(qǐng)求的相應(yīng)字段的值復(fù)制而來(lái)。
OPTIONS
用于向服務(wù)器查詢其能力。如果服務(wù)器認(rèn)為它能與用戶聯(lián)系,則可用一個(gè)能力集響應(yīng) OPTIONS請(qǐng)求;對(duì)于代理和重定向服務(wù)器只要轉(zhuǎn)發(fā)此請(qǐng)求,不用顯示其能力。
OPTIONS的From、To分別包含主被叫的地址信息,對(duì)OPTIONS請(qǐng)求的響應(yīng)中的From、 To (可能加上tag參數(shù))、Call-ID字段的值由OPTIONS請(qǐng)求中相應(yīng)的字段值復(fù)制得到。
BYE
用戶代理客戶機(jī)用BYE請(qǐng)求向服務(wù)器表明它想釋放呼叫。
BYE請(qǐng)求可以像INVITE請(qǐng)求那樣被轉(zhuǎn)發(fā),可由主叫方發(fā)出也可由被叫方發(fā)出。呼叫的 一方在釋放(掛斷)呼叫前必須發(fā)出BYE請(qǐng)求,收到BYE請(qǐng)求的這方必須停止發(fā)送媒體流 給發(fā)出BYE請(qǐng)求的一方。
CANCEL
CANCEL請(qǐng)求用于取消一個(gè)Call-ID, TO, From和Cseq字段值相同的正在進(jìn)行的請(qǐng)求,但 取消不了已經(jīng)完成的請(qǐng)求(如果服務(wù)器返回一個(gè)最終狀態(tài)響應(yīng),則認(rèn)為請(qǐng)求已完成)。
CANCEL請(qǐng)求中的Call-ID、To、Cseq的數(shù)字部分及From字段和原請(qǐng)求的對(duì)應(yīng)字段值相 同,從而使CANCEL請(qǐng)求與它要取消的請(qǐng)求匹配。
REGISTER
REGISTER方法用于客戶機(jī)向SIP服務(wù)器注冊(cè)列在To字段中的地址信息。
REGISTER請(qǐng)求消息頭中各個(gè)字段的含義定義如下:
•To:含有要?jiǎng)?chuàng)建或更新的注冊(cè)的地址記錄。
•From:含有提出注冊(cè)的人的地址記錄。
•Request-URI:注冊(cè)請(qǐng)求的目的地址,地址的域部分的值即為主管注冊(cè)者所在的域,而 主機(jī)部分必須為空。一般,Request-URI中的地址的域部分的值和To中的地址的域部 分的值相同。
•Call-ID:用于標(biāo)識(shí)特定客戶機(jī)的注冊(cè)請(qǐng)求。來(lái)自同一個(gè)客戶機(jī)的注冊(cè)請(qǐng)求至少在相同 重啟周期內(nèi)Call-ID字段值應(yīng)該相同;用戶可用不同的Call-ID值注冊(cè)不同的地址,后 面的注冊(cè)請(qǐng)求將替換前面的所有請(qǐng)求。
•Cseq: Call-ID字段值相同的注冊(cè)請(qǐng)求的CSeq字段值必須是遞增的,但次序無(wú)關(guān)系, 服務(wù)器并不拒絕無(wú)序請(qǐng)求。
•Contact:此字段是可選項(xiàng);用于把以后發(fā)送到TO字段中的URI的非注冊(cè)請(qǐng)求轉(zhuǎn)到 Contact字段給出的位置。如果請(qǐng)求中沒(méi)有Contact字段,那么注冊(cè)保持不變。
•Expires:表示注冊(cè)的截止期。
INFO
INFO方法是對(duì)SIP協(xié)議的擴(kuò)展,用于傳遞會(huì)話中產(chǎn)生的與會(huì)話相關(guān)的控制信息,如ISUP 和ISDN信令消息,有關(guān)此方法的使用還有待標(biāo)準(zhǔn)化,詳細(xì)內(nèi)容參見(jiàn)IETF RFC 2976。
其他擴(kuò)展
其他擴(kuò)展的含義如下:
•re-INVITE:用來(lái)改變參數(shù);
•PRACK:與ACK作用相同,但是用于臨時(shí)響應(yīng);
•SUBSCRIBE:該方法用來(lái)向遠(yuǎn)端端點(diǎn)預(yù)定其狀態(tài)變化的通知;
•NOTIFY:該方法發(fā)送消息以通知預(yù)定者它所預(yù)定的狀態(tài)的變化;
•UPDATE:允許客戶更新一個(gè)會(huì)話的參數(shù)而不影響該會(huì)話的當(dāng)前狀態(tài);
•MESSAGE:通過(guò)在其請(qǐng)求體中承載即時(shí)消息內(nèi)容實(shí)現(xiàn)即時(shí)消息;
•REFER:其功能是指示接受方通過(guò)使用在請(qǐng)求中提供的聯(lián)系地址信息聯(lián)系第三方。
2.SIP響應(yīng)消息
響應(yīng)消息格式如下:
Response = Status-Line
*( general-header
I response-header
I entity-header )
CRLF
[message-body ]