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