协议分析SIP协议分析总结.docx
《协议分析SIP协议分析总结.docx》由会员分享,可在线阅读,更多相关《协议分析SIP协议分析总结.docx(12页珍藏版)》请在冰豆网上搜索。
协议分析SIP协议分析总结
【协议分析】SIP协议分析总结
SIP消息由3部分组成,分别为启动行,消息头,消息体,每行后都由回车换行符号CRLF或由CR、LF其中之一组成。
消息头后填充空行CRLF。
格式如下:
generic-message=start-line(Request-Line/Status-Line)
*message-header
CRLF
[message-body]1、请求行
请求行包括3部分,方法,请求URI,SIP版本,结束符号可以为CRLF、CR、LF,空格可以被忽略,请求行格式如下SP为singlespace.
Request-Line=MethodSPRequest-URISPSIP-VersionCRLF
例子:
INVITEsip:
555@192.168.83.165SIP/2.0
方法:
RFC3261规格中共定义了6种方法,REGISTER、INVITE、ACK、CANCEL、BYE、OPTIONS.
REGISTER:
注册联系人信息到代理服务器。
OPTIONS:
查询服务器的能力,支持哪些选项。
请求URI:
正在发送请求并被处理的用户信息或服务,不能包含空格不能包含在<>之内。
SIP版本:
SIP版本是大小写敏感的,必须为大写,但实际使用中如果小写也没什么差异。
2、响应
响应行包括3部分,SIP版本,状态码,过程阶段,结束符号可以为CRLF、CR、LF,空格可以被忽略,格式如下:
Status-Line=SIP-VersionSPStatus-CodeSPReason-PhraseCRLF
例子:
SIP/2.0100Trying
状态码给机器翻译使用,Reason-Phrase给用户查看使用,状态码范围如下,第一个数字为类别代表,共3个数字。
1xx:
Provisional--requestreceived,continuingtoprocessthe
request;2xx:
Success--theactionwassuccessfullyreceived,understood,
andaccepted;3xx:
Redirection--furtheractionneedstobetakeninorderto
completetherequest;4xx:
ClientError--therequestcontainsbadsyntaxorcannotbe
fulfilledatthisserver;5xx:
ServerError--theserverfailedtofulfillanapparently
validrequest;6xx:
GlobalFailure--therequestcannotbefulfilledatany
server.
3、头域格式(HeaderFieldFormat)
field-name:
field-value
实例:
Via:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-fe184d2d9922c37b-1--d87543-;rport
冒号左域可以有空格举例如下:
Subject:
lunch
Subject:
lunch
Subject:
lunch
Subject:
lunch
头域值可以为多行,在每行前面至少有一个空格或Tab,下面两张表达是相等的。
Subject:
Iknowyou'rethere,pickupthephoneandtalktome!
Subject:
Iknowyou'rethere,
pickupthephone
andtalktome!
下面的2种方式有的相等,有的不相等,不相等的原因主要是顺序不同。
Thefollowinggroupsofheaderfieldrowsarevalidandequivalent:
Route:
<sip:
alice@>
Subject:
Lunch
Route:
<sip:
bob@>
Route:
<sip:
carol@>Route:
<sip:
alice@>,<sip:
bob@>
Route:
<sip:
carol@>
Subject:
LunchSubject:
Lunch
Route:
<sip:
alice@>,<sip:
bob@>,
<sip:
carol@>Eachofthefollowingblocksisvalidbutnotequivalenttothe
others:
Route:
<sip:
alice@>
Route:
<sip:
bob@>
Route:
<sip:
carol@>Route:
<sip:
bob@>
Route:
<sip:
alice@>
Route:
<sip:
carol@>Route:
<sip:
alice@>,<sip:
carol@>,
<sip:
bob@>大小写敏感问题:
对于域名,域值参数名和参数值都不区分大小写,但对于值所引用的字符串是区分大小的。
field-name:
field-value*(;parameter-name=parameter-value)
Contact:
<sip:
alice@>;expires=3600isequivalenttoCONTACT:
<sip:
alice@>;ExPiReS=3600andContent-Disposition:
session;handling=optionalisequivalenttocontent-disposition:
Session;HANDLING=OPTIONALThefollowingtwoheaderfieldsarenotequivalent:
Warning:
370devnull"Chooseabiggerpipe"
Warning:
370devnull"CHOOSEABIGGERPIPE"
4、请求头域和响应头域是不同的,如果请求头域在响应中则直接被忽略,具体可参考RFC3261。
where中R为请求,r为响应
Example:
HeaderfieldwhereproxyACKBYECANINVOPTREG
___________________________________________________________
AcceptR-o-om*o
Accept2xx---om*o
Accept415-c-ccc
Accept-EncodingR-o-ooo
Accept-Encoding2xx---om*o
Accept-Encoding415-c-ccc
Accept-LanguageR-o-ooo
Accept-Language2xx---om*o
Accept-Language415-c-ccc
Alert-InfoRar---o--
Alert-Info180ar---o--
AllowR-o-ooo
Allow2xx-o-m*m*o
Allowr-o-ooo
Allow405-m-mmm
Authentication-Info2xx-o-ooo
AuthorizationRoooooo
Call-IDcrmmmmmm
Call-Infoar---ooo
ContactRo--moo
Contact1xx---o--
Contact2xx---moo
Contact3xxd-o-ooo
Contact485-o-ooo
Content-Dispositionoo-ooo
Content-Encodingoo-ooo
Content-Languageoo-ooo
Content-Lengthartttttt
Content-Type**-***
CSeqcrmmmmmm
Dateaoooooo
Error-Info300-699a-ooooo
Expires---o-o
Fromcrmmmmmm
In-Reply-ToR---o--
Max-ForwardsRamrmmmmmm
Min-Expires423-----m
MIME-Versionoo-ooo
Organizationar---oooTable2:
Summaryofheaderfields,A--OHeaderfieldwhereproxyACKBYECANINVOPTREG
___________________________________________________________________
PriorityRar---o--
Proxy-Authenticate407ar-m-mmm
Proxy-Authenticate401ar-ooooo
Proxy-AuthorizationRdroo-ooo
Proxy-RequireRar-o-ooo
Record-RouteRarooooo-
Record-Route2xx,18xmr-oooo-
Reply-To---o--
Requirear-c-ccc
Retry-After404,413,480,486-ooooo
500,503-ooooo
600,603-ooooo
RouteRadrcccccc
Serverr-ooooo
SubjectR---o--
SupportedR-oom*oo
Supported2xx-oom*m*o
Timestampoooooo
Toc
(1)rmmmmmm
Unsupported420-m-mmm
User-Agentoooooo
ViaRamrmmmmmm
Viarcdrmmmmmm
Warningr-ooooo
WWW-Authenticate401ar-m-mmm
WWW-Authenticate407ar-o-oooTable3:
Summaryofheaderfields,P--Z;
(1):
copiedwithpossible
additionoftagAccept:
application/sdp;level=1,application/x-private,text/html5、头域可以为精简格式,当报文大于MTU时,可能会出现此类情况。
Content-Type精简为c
Content-Type:
application/sdp
c:
text/html;charset=ISO-8859-4
ThecompactformoftheCall-IDheaderfieldisi.Examples:
Call-ID:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6@
i:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6@192.0.2.46、请求和响应都可能包含Body,消息体内容和含义由请求和回应方法决定。
INVITEsip:
555@192.168.83.165SIP/2.0Via:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-fe184d2d9922c37b-1--d87543-;rport
Max-Forwards:
70
Contact:
<sip:
1111@192.168.83.166:
59888>
To:
"555"<sip:
555@192.168.83.165>
From:
"1111"<sip:
1111@192.168.83.165>;tag=c84a0f35
Call-ID:
Y2M1ZWQzNjZkZGUyNGZjMDQ3ODViNDQxMWNlYjJkMjg.
CSeq:
2INVITE
Allow:
INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO
Content-Type:
application/sdp
Proxy-Authorization:
Digestusername="1111",realm="192.168.83.165",nonce="f9f1f5c1204f40b398e492c655db4688",uri="sip:
555@192.168.83.165",response="915d59413c734aab76a478152abec187",algorithm=MD5
User-Agent:
X-Literelease1011astamp39982
Content-Length:
861
v=0
o=-02INIP4192.168.83.166
s=CounterPathX-Lite3.0
c=INIP4192.168.83.166
t=00
m=audio49500RTP/AVP1071191001060105988101
a=alt:
13:
ECRvm16mv+fqLshj192.168.83.16649500
a=alt:
22:
EdbNYVHvKIQdEfz6192.168.245.149500
a=alt:
31:
yDH1BrYbWlB139Ar192.168.204.149500
a=fmtp:
1010-15
a=rtpmap:
107BV32/16000
a=rtpmap:
119BV32-FEC/16000
a=rtpmap:
100SPEEX/16000
a=rtpmap:
106SPEEX-FEC/16000
a=rtpmap:
105SPEEX-FEC/8000
a=rtpmap:
98iLBC/8000
a=rtpmap:
101telephone-event/8000
a=sendrecv
m=video21544RTP/AVP11534
a=alt:
13:
Hc0rAXD9/SSqAFC7192.168.83.16621544
a=alt:
22:
jJ7atS9D+F6f93kw192.168.245.121544
a=alt:
31:
A1p82jJp83lgK3Kn192.168.204.121544
a=fmtp:
115QCIF=1CIF=1I=1J=1K=1MaxBR=1960
a=fmtp:
34QCIF=1CIF=1MaxBR=1960
a=rtpmap:
115H263-1998/90000
a=rtpmap:
34H263/90000
a=sendrecv
7、消息体内容类型可以为压缩格式,可以为Mime格式,可以为TextUTF-8格式。
Examples:
Content-Type:
application/sdp
Content-Type:
text/html;charset=ISO-8859-48、消息体内容长度为一个整形值,不会出现httpchunk的情况。
Content-Length:
861
9、SIP消息,通过消息体长度获取整个消息,SIP可以采用UDP协议,此消息中协商的传输层端口是有限制的,建议tcp、udp使用5060,TLSoverTCP使用5061实际报文交互过程:
REGISTERsip:
192.168.83.165SIP/2.0Via:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-d724e90eb209ee27-1--d87543-;rportMax-Forwards:
70Contact:
<sip:
1111@192.168.83.166:
59888;rinstance=c5ea7f72275f318f>To:
"1111"<sip:
1111@192.168.83.165>From:
"1111"<sip:
1111@192.168.83.165>;tag=c5368845Call-ID:
MWJlMGU0MWMxZTZlY2ExMWUzOWM4ZGU3ZGFmYTg4YWQ.CSeq:
1REGISTERExpires:
3600Allow:
INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFOUser-Agent:
X-Literelease1011astamp39982Content-Length:
0SIP/2.0401UnauthorizedVia:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-d724e90eb209ee27-1--d87543-;rportCSeq:
1REGISTERFrom:
"1111"<sip:
1111@192.168.83.165>;tag=c5368845To:
"1111"<sip:
1111@192.168.83.165>WWW-Authenticate:
digestrealm="192.168.83.165",nonce="8f19b3b571d04476a8f9eb7dbcf3f236"Call-ID:
MWJlMGU0MWMxZTZlY2ExMWUzOWM4ZGU3ZGFmYTg4YWQ.Server:
SIPServer2008v3.6.6.773Content-Length:
0REGISTERsip:
192.168.83.165SIP/2.0Via:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-3f489b70543a3713-1--d87543-;rportMax-Forwards:
70Contact:
<sip:
1111@192.168.83.166:
59888;rinstance=c5ea7f72275f318f>To:
"1111"<sip:
1111@192.168.83.165>From:
"1111"<sip:
1111@192.168.83.165>;tag=c5368845Call-ID:
MWJlMGU0MWMxZTZlY2ExMWUzOWM4ZGU3ZGFmYTg4YWQ.CSeq:
2REGISTERExpires:
3600Allow:
INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFOUser-Agent:
X-Literelease1011astamp39982Authorization:
Digestusername="1111",realm="192.168.83.165",nonce="8f19b3b571d04476a8f9eb7dbcf3f236",uri="sip:
192.168.83.165",response="dac398335510f0a2455f71e110448320",algorithm=MD5Content-Length:
0SIP/2.0200OKVia:
SIP/2.0/UDP192.168.83.166:
59888;branch=z9hG4bK-d87543-3f489b70543a3713-1--d87543-;rportContact:
<sip:
1111@192.168.83.166:
59888;rinstance=c5ea7f72275f318f>CSeq:
2REGISTERFrom:
"1111"<sip:
1111@192.168.83.165>;tag=c5368845To:
"1111"<sip:
1111@192.168.83.165>Call-ID:
MWJlMGU0MWMxZTZlY2ExMWUzOWM4ZGU3ZGFmYTg4YWQ.Server:
SIPServer2008v3.6.6.773Date:
Tue,23Jul201318:
35:
06GMTExpires:
3600Content-Length:
0SUBSCRIBEsip:
1111@192.168