《sip协议原理-报文分析-1020-a.ppt》由会员分享,可在线阅读,更多相关《sip协议原理-报文分析-1020-a.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录目录 SIP注册流程注册流程 SIP呼叫流程呼叫流程注册流程l用户每次开机时都需要向服务器注册,当SIP Client的地址发生改变时也需要重新注册,注册信息必须定期刷新,通常注册服务器将注册信息保存到定位服务器中。注册过程(实例)REGISTER sip:164.135.20.51;transport=udp SIP/2.0Via: SIP/2.0/UDP 164.135.20.55:5060;branch=z9hG4bK24d79975663f90c893883f21dRoute: Call-ID: 2aff391ab79bf4cd9c762716949cd68eFrom: ;tag=
2、0589c28eTo: CSeq: 1 REGISTERContact: Expires: 600Accept: application/sdp,application/mwi,application/reginfo+xml,application/simservs+xmlSupported: 100rel,replaces,timer,privacyAccept-Encoding: identityAccept-Language: enAllow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDAT
3、E,MESSAGE,REFERMax-Forwards: 70Content-Length: 0SIP/2.0 200 OKVia:SIP/2.0/UDP 164.135.20.55:5060;branch=z9hG4bK24d79975663f90c893883f21dFrom:;tag=0589c28eTo:Call-ID:2aff391ab79bf4cd9c762716949cd68eCSeq:1 REGISTERContact:;q=0.5;expires=599Content-Length:0带认证请求的注册流程SoftX3000SIP Phone401 UnauthorizedRE
4、GISTER200 OKREGISTER终端发起请求时如果服务器端需要对用户进行认证,那么会在本地产生本次认证的NONCE,并且通过认证请求头域(Authorization)将所有必要的参数返回给终端从而发起对用户认证过程。终端收到认证请求消息后根据服务器端返回的信息和用户配置等信息采用特定的算法生成加密的RESPONSE,并且通过新的请求消息发送给服务器端。服务器端在收到带有认证响应的新的请求消息后首先检查NONCE的正确性。如果NONCE不是本地产生,则直接返回失败。否则如果NONCE是本地产生,但是认证过程已经超时,则服务器端会重新产生NONCE并重新发起对用户的认证过程。其中老的NON
5、CE 会通过CNONCE参数返回。NONCE 验证通过后服务器端会根据NONCE、用户名、密码(服务器端可以根据本地用户信息获取用户的密码)、URI等采用和终端相同的算法生成RESPONSE,并且对此RESPONSE 和请求消息中的RESPONSE进行比较,如果二者一致则用户认证成功,否则认证失败。带认证请求的注册流程(实例)SIP-Call: AliceSIP-Call: DREGISTER sip:191.169.150.30 SIP/2.0From: sip:6540012191.169.150.30;tag=16838c16838To: sip:6540012191.169.150.3
6、0;tag=946e6f96Call-Id: 1-reg191.169.150.251Cseq: 2762 REGISTERContact: sip:6540012191.169.150.251Expires: 100Content-Length: 0Accept-Language: enSupported: sip-cc, sip-cc-01, timerUser-Agent: Pingtel/1.2.7 (VxWorks)Via: SIP/2.0/UDP 191.169.150.251SIP/2.0 401 UnauthorizedFrom: ;tag=16838c16838To: ;ta
7、g=946e6f96CSeq: 2762 REGISTERCall-ID: 1-reg191.169.150.251Via: SIP/2.0/UDP 191.169.150.251WWW-Authenticate: Digest realm=,nonce=200361722310491179922Content-Length: 0REGISTER sip:191.169.150.30 SIP/2.0From: sip:6540012191.169.150.30;tag=16838c16838To: sip:6540012191.169.150.30;tag=946e6f96Call-Id: 1
8、-reg191.169.150.251Cseq: 2763 REGISTERContact: sip:6540012191.169.150.251Expires: 100Content-Length: 0Accept-Language: enSupported: sip-cc, sip-cc-01, timerUser-Agent: Pingtel/1.2.7 (VxWorks)Authorization: DIGEST USERNAME=6540012, REALM=, NONCE=200361722310491179922, RESPONSE=b7c848831dc489f8dc66311
9、2b21ad3b6, URI=sip:191.169.150.30Via: SIP/2.0/UDP 191.169.150.251SIP/2.0 200 OKFrom: ;tag=16838c16838To: ;tag=946e6f96CSeq: 2763 REGISTER Call-ID: 1-reg191.169.150.251Via: SIP/2.0/UDP 191.169.150.251同一个SoftX3000控制下的两个UAC间的呼叫SoftX3000SIP Phone ASIP Phone BINVITE100 Trying407INVITEACKINVITE100 Trying1
10、00 Trying180 Trying180 Trying200 OK200 OKACKACKCONVERSATIONBYE487BYE200 OK同一个SoftX3000控制下的两个UAC间的呼叫 在下面的实例中,我们基于以下约定: SoftX3000的IP 地址为191.169.200.61; SIP PhoneA的IP 地址为191.169.150.101; SIP PhoneB的IP 地址为191.169.150.100; SIP PhoneA为主叫,SIP PhoneB为被叫,主叫先挂机; SIP PhoneA的电话号码为1000; SIP PhoneB的电话号码为1001。同一个同
11、一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件1:SIP PhoneA发INVITE 请求到PROXY,请求PROXY 邀请SIP PhoneB加入会话。SIP PhoneA还通过INVITE 消息的会话描述,将自身的IP 地址:191.169.150.101,端口号8766,静荷类型,静荷类型对应的编码等信息传送给PROXY。INVITE sip:1001191.169.200.61 SIP/2.0From: sip:1000191.169.200.61;tag=1c12674To: sip:1001191.169.200.61Call-
12、Id: call-973598097-16191.169.150.101Cseq: 1 INVITEContact: sip:1000191.169.150.101Content-Type: application/sdpContent-Length: 203Accept-Language: enAllow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, REGISTER, SUBSCRIBESupported: sip-cc, sip-cc-01, timerUser-Agent: Pingtel/1.2.7 (VxWorks)Via:
13、SIP/2.0/UDP 191.169.150.101v=0o=Pingtel 5 5 IN IP4 191.169.150.101s=phone-callc=IN IP4 191.169.150.101t=0 0m=audio 8766 RTP/AVP 0 96 8a=rtpmap:0 pcmu/8000/1a=rtpmap:96 telephone-event/8000/1a=rtpmap:8 pcma/8000/1同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件2:PROXY 给SIP PhoneA回100 Trying 表示已
14、经接收到请求消息,正在对其进行处理。SIP/2.0 100 TryingFrom: ;tag=1c12674To: CSeq: 1 INVITECall-ID: call-973598097-16191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Content-Length: 0事件3:PROXY 给SIP PhoneA发407 Proxy Authentication Required 响应,表明PROXY 端要求对用户进行认证,并且通过Proxy-Authenticate字段携带PROXY 支持的认证方式Digest 和PROXY 域名“”,产生
15、本次认证的nonce,并且通过该响应消息将这些参数返回给终端从而发起对用户的认证过程。SIP/2.0 407 Proxy Authentication RequiredFrom: ;tag=1c12674To: ;tag=de40692fCSeq: 1 INVITECall-ID: call-973598097-16191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Proxy-Authenticate: Digest realm=,nonce=1056131458Content-Length: 0同一个同一个SoftX3000SoftX3000控制下
16、的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件4:SIP PhoneA发ACK 消息给PROXY,证实已经收到PROXY 对于INVITE 请求的最终响应。ACK sip:1001191.169.200.61 SIP/2.0Contact: sip:1000191.169.150.101From: ;tag=1c12674To: ;tag=de40692fCall-Id: call-973598097-16191.169.150.101Cseq: 1 ACKAccept-Language: enUser-Agent: Pingtel/1.2.7 (VxWorks)Via: SIP/2.
17、0/UDP 191.169.150.101Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件5 :SIP PhoneA重新发INVITE 请求到SoftX3000 。携带Proxy-Authorization字段,包括认证方式DIGEST、SIP Phone 的用户标识(此时为电话号码)、PROXY 的域名、NONCE、URI 和RESPONSE(SIP PhoneA收到407 响应后根据服务器端返回的信息和用户配置等信息采用特定的算法生成加密的RESPONSE)字段。同一个同一个SoftX3000So
18、ftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫INVITE sip:1001191.169.200.61 SIP/2.0From: sip:1000191.169.200.61;tag=1c12674To: sip:1001191.169.200.61Call-Id: call-973598097-16191.169.150.101Cseq: 2 INVITEContact: sip:1000191.169.150.101Content-Type: applicati
19、on/sdpContent-Length: 203Accept-Language: enAllow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, REGISTER, SUBSCRIBESupported: sip-cc, sip-cc-01, timerUser-Agent: Pingtel/1.2.7 (VxWorks)Proxy-Authorization: DIGEST USERNAME=1000, REALM=, NONCE=1056131458, RESPONSE=1b5d3b2a5441cd13c1f2e4d6a7d5074d
20、,URI=sip:1001191.169.200.61Via: SIP/2.0/UDP 191.169.150.101v=0o=Pingtel 5 5 IN IP4 191.169.150.101s=phone-callc=IN IP4 191.169.150.101t=0 0m=audio 8766 RTP/AVP 0 96 8a=rtpmap:0 pcmu/8000/1a=rtpmap:96 telephone-event/8000/1a=rtpmap:8 pcma/8000/1事件6:PROXY 给SIP PhoneA回100 Trying 表示已经接收到请求消息,正在对其进行处理。SI
21、P/2.0 100 TryingFrom: ;tag=1c12674To: CSeq: 2 INVITECall-ID: call-973598097-16191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件7:PROXY 向SIP PhoneB发INVITE 消息,请求SIP PhoneB加入会话。并且通过该
22、INVITE请求消息携带SIP PhoneA的会话描述给SIP PhoneB。同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫INVITE sip:1001191.169.150.100 SIP/2.0From: ;tag=1fd84419To: CSeq: 1 INVITECall-ID: 1746ac508a14feaaccb35e4a35ea1768sx3000Via: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bK8fd4310b0Contact: Supported: 100rel,
23、100relMax-Forwards: 70Allow: INVITE,ACK, CANCEL, OPTIONS, BYE, REGISTER, PRACK, INFO, UPDATE, SUBSCRIBE, NOTIFY, MESSAGE, REFERContent-Length: 183Content-Type: application/sdpv=0o=HuaweiSoftX3000 1073741833 1073741833 IN IP4 191.169.200.61s=Sip Callc=IN IP4 191.169.150.101t=0 0m=audio 8766 RTP/AVP 0
24、 8a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000事件8:SIP PhoneB给PROXY 回100 Trying表示已经接收到请求消息,正在对其进行处理。SIP/2.0 100 TryingFrom: ;tag=1fd84419To: ;tag=4239Call-Id: 1746ac508a14feaaccb35e4a35ea1768sx3000Cseq: 1 INVITEVia: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bK8fd4310b0Contact: sip:1001191.169.150.100Us
25、er-Agent: Pingtel/1.0.0 (VxWorks)CONTENT-LENGTH: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件9:SIP PhoneB振铃,并回180 Ringing响应通知PROXY。SIP/2.0 180 RingingFrom: ;tag=1fd84419To: ;tag=4239Call-Id: 1746ac508a14feaaccb35e4a35ea1768sx3000Cseq: 1
26、INVITEVia: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bK8fd4310b0Contact: sip:1001191.169.150.100User-Agent: Pingtel/1.0.0 (VxWorks)CONTENT-LENGTH: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件10:PROXY 回180 Ringing 响应给SIP PhoneA,SIP PhoneA 听回铃音。SIP/2.0 180 RingingFrom: ;tag=1c12674To: ;ta
27、g=e110e016CSeq: 2 INVITECall-ID: call-973598097-16191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Contact: Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件11:SIP PhoneB给PROXY 回200 OK响应表示其发过来的INVITE请求已经被成功接受、处理。并且通过该消息将自身的IP 地址:191.169.150.101,端口号:8766,静荷类型,静荷类型对应的编码等信息传送给PROXY。
28、同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫SIP/2.0 200 OKFrom: ;tag=1fd84419To: ;tag=4239Call-Id: 1746ac508a14feaaccb35e4a35ea1768sx3000Cseq: 1 INVITEContent-Type: application/sdpContent-Length: 164Via: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bK8fd4310b0Session-Expires: 36000Contact: si
29、p:1001191.169.150.100Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFYUser-Agent: Pingtel/1.0.0 (VxWorks)v=0o=Pingtel 5 5 IN IP4 191.169.150.100s=phone-callc=IN IP4 191.169.150.100t=0 0m=audio 8766 RTP/AVP 0 8a=rtpmap:0 pcmu/8000/1a=rtpmap:8 pcma/8000/1同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUA
30、C之间的呼叫之间的呼叫事件12:PROXY 给SIP PhoneA回200 OK响应表示其发过来的INVITE请求已经被成功接受、处理,并且将SIP PhoneB的会话描述传送给SIP PhoneA。SIP/2.0 200 OKFrom: ;tag=1c12674To: ;tag=e110e016CSeq: 2 INVITECall-ID: call-973598097-16191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Contact: Content-Length: 183Content-Type: application/sdpv=0o=Hu
31、aweiSoftX3000 1073741834 1073741834 IN IP4 191.169.200.61s=Sip Callc=IN IP4 191.169.150.100t=0 0m=audio 8766 RTP/AVP 0 8a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件13:SIP PhoneA发ACK消息给PROXY,证实已经收到PROXY对于INVITE 请求的最终响应。ACK sip:1001191.169.200.61:5061;
32、transport=UDP SIP/2.0Contact: sip:1000191.169.150.101From: ;tag=1c12674To: ;tag=e110e016Call-Id: call-973598097-16191.169.150.101Cseq: 2 ACKAccept-Language: enUser-Agent: Pingtel/1.2.7 (VxWorks)Via: SIP/2.0/UDP 191.169.150.101Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件14:
33、PROXY发ACK消息给SIP PhoneB,证实已经收到SIP PhoneB对于INVITE请求的最终响应。此时,主被叫双方都知道了对方的会话描述,启动通话。ACK sip:1001191.169.150.100 SIP/2.0From: ;tag=1fd84419To: ;tag=4239CSeq: 1 ACKCall-ID: 1746ac508a14feaaccb35e4a35ea1768sx3000Via: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bK44cfc1f25Max-Forwards: 70Content-Length: 0同一
34、个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件15:SIP PhoneA挂机,发BYE消息给PROXY,请求结束本次会话。BYE sip:1001191.169.200.61:5061;transport=UDP SIP/2.0From: sip:1000191.169.200.61;tag=1c12674To: sip:1001191.169.200.61;tag=e110e016Call-Id: call-973598097-16191.169.150.101Cseq: 4 BYEAccept-Language: enSupport
35、ed: sip-cc, sip-cc-01, timerUser-Agent: Pingtel/1.2.7 (VxWorks)Via: SIP/2.0/UDP 191.169.150.101Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件16:PROXY给SIP PhoneA回487响应,表明请求终止。SIP/2.0 487 Request TerminatedFrom: ;tag=1c12674To: ;tag=e110e016CSeq: 4 BYECall-ID: call-973598097-1
36、6191.169.150.101Via: SIP/2.0/UDP 191.169.150.101Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件17:PROXY收到SIP PhoneA发过来的BYE消息,知道A 已挂机,给SIP PhoneB发BYE请求,请求结束本次会话。BYE sip:1001191.169.150.100 SIP/2.0From: ;tag=1fd84419To: ;tag=4239CSeq: 2 BYECall-ID: 1746ac508a14feaaccb35e4a35ea1
37、768sx3000Via: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bKf5dbf00ddMax-Forwards: 70Content-Length: 0同一个同一个SoftX3000SoftX3000控制下的两个控制下的两个UACUAC之间的呼叫之间的呼叫事件18:SIP PhoneB挂机,给PROXY反馈200 OK响应,表明已经成功结束会话。SIP/2.0 200 OKFrom: ;tag=1fd84419To: ;tag=4239Call-Id: 1746ac508a14feaaccb35e4a35ea1768sx3000Cseq: 2 BYEVia: SIP/2.0/UDP 191.169.200.61:5061;branch=z9hG4bKf5dbf00ddContact: sip:1001191.169.150.100Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFYUser-Agent: Pingtel/1.0.0 (VxWorks)CONTENT-LENGTH: 0结束结束