SIP注册流程

今天先研究下设备注册的流程,模拟一个IPCSPVMN系统注册,记录下交互的消息,详细研究了下:

UAC(模拟IPC)

IP192.168.10.117

Port5061

 

UAS(模拟SIP服务器)

IP192.168.10.177

Port5060

第一步:UAC --> UAS

UACUAS注册,下面是具体注册消息:

REGISTER sip:192.168.10.177:5060 SIP/2.0

Via: SIP/2.0/UDP 192.168.10.117:5061;rport=5061;branch=z9hG4bK2509000523;received=192.168.10.117

From: <sip:34020000001320000001@192.168.10.177>;tag=2577708869

To: <sip:34020000001320000001@192.168.10.177>

Call-ID: 939764460

CSeq: 1 REGISTER

Contact: <sip:34020000001320000001@192.168.10.117:5061;line=6513f93347c330b>

Max-Forwards: 70

User-Agent: eXosip/3.6.0

Expires: 3600

Authorization: Capability, algorithm="H:MD5"

Content-Length: 0

字段说明:

请求起始行:表示UACIP地址为192.168.10.177的服务器发起注册,SIP版本号为2.0

From字段:指明该REGISTER请求消息由UASIP地址:192.168.10.177)控制的UAC发起的。

To字段:指明REGISTER请求接收方的地址。此时REGISTER请求的接收方为IP地址为192.168.10.177UAS。(这个值和To头域的值相同,除非这个请求是第三方发起的注册请求。)
Call-ID字段UAC发出的给某个注册服务器(registrar)的所有注册请求都应该有相同的Call-ID头域值。如果相同的客户端用了不同的Call-ID值,注册服务器(registrar)就不能检测是否一个REGISTER请求由于延时的关系导致了故障。
Cseq字段Cseq值保证了REGISTER请求的正确顺序。一个UA为每一个具备相同的Call-IDREGISTER请求顺序递增这个Cseq字段。
Contact字段:在REGISTER请求中的Contact字段指明用户可达位置。
Expires字段:表示该登记生存期为3600s
Content-Length字段:表明此请求消息消息体的长度为空,即此消息不带会话描述。

 

第二步,UAS-->UAC

UAS返回401 Unauthorized(无权限)响应,表明要求对UAC进行用户认证,并且通过WWW-Authenticate字段携带UAS支持的认证方式,产生本次认证的nonce

SIP/2.0 401 Unauthorized

To: <sip:34020000001320000001@192.168.10.177>;tag=66081813_53173353_54026835-98f6-4d1e-b562-0d969636b944

Via: SIP/2.0/UDP 192.168.10.117:5061;rport=5061;branch=z9hG4bK2509000523;received=192.168.10.117

CSeq: 1 REGISTER

Call-ID: 939764460

From: <sip:34020000001320000001@192.168.10.177>;tag=2577708869

WWW-Authenticate: Digest realm="3402000000",nonce="324cab6e557268e0"

Content-Length: 0


 

第三步,UAC-->UAS

UAC重新向UAS发起注册请求,携带WWW-Authorization字段

REGISTER sip:192.168.10.177:5060 SIP/2.0

Via: SIP/2.0/UDP 192.168.10.117:5061;rport=5061;branch=z9hG4bK3163110852;received=192.168.10.117

From: <sip:34020000001320000001@192.168.10.177>;tag=2577708869

To: <sip:34020000001320000001@192.168.10.177>

Call-ID: 939764460

CSeq: 2 REGISTER

Contact: <sip:34020000001320000001@192.168.10.117:5061;line=6513f93347c330b>

Authorization: Digest (摘要)username="34020000001320000001",realm(范围)="3402000000",nonce="324cab6e557268e0",uri="sip:192.168.10.177:5060",response="7f536c8ce38593239f9130e37a72276e",algorithm=MD5

Max-Forwards: 70

User-Agent: eXosip/3.6.0

Expires: 3600

Content-Length: 0


第四步,UAS-->UAC

UAS收到UAC的注册请求,首先检查NONCE的正确性,如果和在401 Unauthorized响应中产生的NONCE相同,则通过。否则,直接返回失败。然后,UAS会根据NONCE、用户名、密码(服务器端可以根据本地用户信息获取用户的密码)、URI等采用和终端相同的算法生成
RESPONSE,并且对此RESPONSE和请求消息中的RESPONSE进行比较,如果二者一致则用户认证成功,否则认证失败。此时,UAS返回200 OK响应消息,表明终端认证成功。

SIP/2.0 200 OK

To: <sip:34020000001320000001@192.168.10.177>;tag=31428812_53173353_376bd3d9-cb9d-4b4f-a950-da26d575cff5

Via: SIP/2.0/UDP 192.168.10.117:5061;rport=5061;branch=z9hG4bK3163110852;received=192.168.10.117

CSeq: 2 REGISTER

Call-ID: 939764460

From: <sip:34020000001320000001@192.168.10.177>;tag=2577708869

Contact: <sip:34020000001320000001@192.168.10.117:5061;line=6513f93347c330b>

Expires: 3600

Date: 2013-06-26T16:08:37.164

Content-Length: 0

 

 

 

 

 

   2015年研究生考试大纲解读 备考攻略  2015考研政治  2015考研英语  2015考研数学  2015考研专业  考研报名指导   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

480, 486 

Retry-After 500,503 600,603  - o o o o o Route R adr c c c c c c Server r  - o o o o o Subject R  - - - o - - Supported R  - o o m* o o Supported 2xx  - o o m* m* o Timestamp   o o o o o o To 

c(1) r m m m m m m Unsupported 420  - m - m m m User-Agent   o o o o o o Via R amr m m m m m m Via rc dr m m m m m m Warning 

r  - o o o o o WWW-Authenticate 401 ar - m - m m m WWW-Authenticate 

407 

ar 

 

“where”列描述了在头域中能够使用的请求和应答的类型。这列的值是: 

R:头域只能在请求中出现; r:头域只能在应答中出现; 

2xx,4xx,等等:一个数字的值区间表示头域能够使用的应答代码。 c:头域是从请求拷贝到应答的。 

如果”where”栏目是空白,表示头域可以在所有的请求和应答中出现。  

“proxy”列描述了proxy在头域上的操作 

a:如果头域不存在,proxy可以增加或者连接头域 m:proxy可以修改现存的头域值 d:proxy可以删除头域值 

r:proxy必须能读取这个头域,因此这个头域不能加密。  

接下来6个栏目与在某一个方法中出现的头域有关: 

c:条件;对头域的要求依赖于消息的内容 m:头域是强制要有的。 

m*:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。 o:头域是可选的。 

t:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。客户端/服务端都需要准备接收没有这个头域的消息。如果通讯的协议是基于面向流的协议(比如TCP),那么头域值必须被发送。 

*:如果消息体不为空,那么头域值就绪要的。(细节请参见20.14,20.15和7.4节) -:这个头域是不适用的。   

 

 

 

 

 

 

1.1.3. 请求格式 

 

 

 

1.1.4. 响应格式 

 

 

 

 

 

 

 

 

 

 

 

1.2. 字段 

Request-URI 

:呼叫请求发送地址。UA生成初始请求消息时,该域中的信息一般与TO中的地址相同,经过网络服务器后,由于实际路由问题,该值可能发生变化以,另外一个比较特殊的是REGISTER消息,在REGISTER消息中,在REQUEST-URI中将会填充注册服务器的地址(表示消息发往注册服务器),而此时TO域中的地址将会填充客户端实际的地址。 

From 发起请求方的地址。一般采用USERINFO@HOSTPORT形式。该域同时带有一个TAG参数,是随机产生的整数。 

To 接受方地址。同FROM域相同,也采用USERINFO@HOSTPORT的地址形式,当该域存在于最终响应消息中时,将会事有TAG参数。 

Call-ID 用于识别呼叫参数,在同一个DIALOG中,该 参数不发生变化。该参数与FROM中的TAG参数、TO域中的TAG参数相结合用以保证呼叫的惟一性。 

Cseq 表征TRANSACEION的参数,由于同一个呼叫中会存在多个TRANSACTION,因此通过该能数来保证同一个USERAGENT发送的不同请求消息间的顺序。 Via 

该参数表征呼叫经过的路径,UA生成SIP消息时,会在该域中填写自己的地址:PROXY在转发请求消息时,将会增加一个填有自己地址的VIA域,表示才叫经过本PROXY。VIA域的存在可以保证响应消息按照原路径返回到主叫方. 代理服务器用它检查其内容,如果新端点已出现在via列表中,则表示有环路了。 Contact 

告知对端自己的地址。当对端发送下一个请求消息时,可直接向该地址发送,不需要关心前一个路由信息(除非有特定原则,例如PROXY可以通过RECORD-ROUTE域来保证下一个请求消息必须经过本PROXY,即使CONTACT域中填写对端客户的地址。 

Expires limits search time, 

给出消息内容超期的时间 

Record-Route 

由于CONTACT域的存在使得两个用户后续的请求消息可能不经过PROXY,为了运营需要,PROXY在初始INVITE消息中增加了RECORD-ROUTE域,这样可以保证后续请求(例如BYE消息)经过PROXY.通过RECORD-ROUTE与CONTACT的结合,既可避免后续请求旁路网络服务器的行为,又可减少后续请求路径上的环节。 

CONTENT-TYPE 表征消息格式的参数,例如,呼叫采用了SDP进行会话描述,还是采用其他类型

的会话描述协议

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Android SIP是一种基于SIP协议的通信协议,用于实现语音和视频通信。WebRTC是一种开放源代码项目,用于在Web浏览器和移动应用程序中实现实时通信(RTC)功能。SIP是一种基于IP网络的通信协议,用于建立、维护和终止多媒体会话。在Android平台上,可以使用SIP和WebRTC技术来实现实时通信功能。 ### 回答2: Android是一个开源的移动操作系统,非常受欢迎,因为它提供了广泛的用户界面和功能,同时还支持多种应用程序。在移动通信领域,Android还支持SIP技术,这使得用户可以通过网络进行语音和视频通话,而不需要通过传统的电话线路。 SIP(Session Initiation Protocol)是一种基于IP的通信协议,用于建立、维护和取消多媒体会话,如语音、视频、消息和游戏等。它提供了一种灵活的方式来建立和管理通信会话,这在现代通信中至关重要。 WebRTC(Web Real-Time Communications)是一种新型的网络协议,它允许浏览器在没有插件或第三方软件的情况下实现实时通信,并为开发者提供了一种简单的方式,通过简单的JavaScript API在应用程序中嵌入实时通信功能。 在Android应用程序中,SIP可以用于语音和视频通话,WebRTC可以用于流媒体应用,如视频会议和实时流媒体等。SIP和WebRTC可以很好地结合在一起,为Android用户提供更好的实时通信体验。例如,通过使用JavaScript API,在浏览器中嵌入WebRTC通信,同时将通信流通过SIP传输,可以使用户在Android设备上实现高清音视频通话。 总体来说,Android SIP和WebRTC的结合可以为用户提供更好的实时通信服务,最终实现更高效的沟通。 ### 回答3: Android SIP和WebRTC SIP都是现代通信技术中非常重要的组成部分。Android SIP是一种协议,它允许移动设备使用Internet协议( IP)网络进行语音和视频通信。而WebRTC SIP则是Web实时通信协议,它是一个基于Web的 API,可以让浏览器支持实时通信,包括语音,视频和数据流。 Android SIP技术的一个主要优点是其广泛的支持。它允许在Android手机或平板电脑上安装SIP客户端应用程序,以便在Internet连接可用的情况下进行语音和视频通信。这种通信可以通过Wi-Fi,蜂窝数据和其他网络连接进行,包括3G和4G网络。Android SIP适用于多种应用场景,例如VoIP应用程序,医疗保健,便捷商店,智能房屋和其他类型的应用。 另一方面,WebRTC SIP是一种完全不同的技术。它允许浏览器支持实时通信,这使得网络通信变得更加容易,无需使用外部插件或应用程序。WebRTC同时支持桌面和移动设备,并且它还可以通过JavaScript API来扩展。WebRTC优势之一是允许开发者从头开始构建实时通信的应用程序,而无需担心跨浏览器兼容性。 总结来说,Android SIP和WebRTC SIP在现代通信技术中都拥有重要的地位。Android SIP能够充分发掘移动设备的网络通信能力,而WebRTC SIP则是一种先进的Web技术,使开发者得以构建实时通信的应用程序。两者都是非常有用的通信技术,具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phymat.nico

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值