Vb.net SIP寄存器失败
我正在尝试在Visual Studio 2012中创建一个小型VoIP客户端。 我正在尝试通过UDP从pc向AsteriskNOW PBX发送注册SIP消息。设备如下所示:Vb.net SIP寄存器失败,vb.net,visual-studio-2012,sip,voip,Vb.net,Visual Studio 2012,Sip,Voip,我正在尝试在Visual Studio 2012中创建一个小型VoIP客户端。 我正在尝试通过UDP从pc向AsteriskNOW PBX发送注册SIP消息。设备如下所示: IP PBX AsteriskNOW: 192.168.1.37 PC that sends REGISTER message: 192.168.1.104 SIP account username: 117 SIP account password: abcd1234 REGISTER sip:192.168.1.37
IP PBX AsteriskNOW: 192.168.1.37
PC that sends REGISTER message: 192.168.1.104
SIP account username: 117
SIP account password: abcd1234
REGISTER sip:192.168.1.37 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.104:5060;branch=z9hG4bK213760691;rport
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
CSeq: 2001 REGISTER
Contact: <sip:117@192.168.1.104:5060>;reg-id=1;
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
Max-Forwards: 70
User-Agent: Grandstream GXP1165 1.0.6.7
Supported: path
Expires: 3600
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER,
UPDATE, MESSAGE
Content-Length: 0
因此,我尝试发送的注册消息如下:
IP PBX AsteriskNOW: 192.168.1.37
PC that sends REGISTER message: 192.168.1.104
SIP account username: 117
SIP account password: abcd1234
REGISTER sip:192.168.1.37 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.104:5060;branch=z9hG4bK213760691;rport
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
CSeq: 2001 REGISTER
Contact: <sip:117@192.168.1.104:5060>;reg-id=1;
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
Max-Forwards: 70
User-Agent: Grandstream GXP1165 1.0.6.7
Supported: path
Expires: 3600
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER,
UPDATE, MESSAGE
Content-Length: 0
当然,在排队的时候
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"
这是PC的网络适配器MAC,而不是AABBCCDDEEFF。
但是,当我尝试发送消息时,服务器会做出以下响应:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP
192.168.1.104:5060;rport=5060;received=192.168.1.104;branch=z9hG4bK213760691
Call-ID: 1808066864-5060-1@BJC.BGI.B.D
From: <sip:117@192.168.1.37>;tag=1270517038
To: <sip:117@192.168.1.37>;tag=z9hG4bK2137606914
CSeq: 2001 REGISTER
WWW-Authenticate: Digest
realm="asterisk",nonce="1428402653/99967d603c38695f1c328332db91a43b",
opaque="416e7e1767513798",algorithm=md5,qop="auth"
Server: FPBX-AsteriskNOW-12.0.43(13.0.1)
Content-Length: 0
有什么问题吗?谢谢大家! 我通过使用ozeki库管理SIP消息解决了这个问题 我在这里找到了图书馆
谢谢大家! 这是正常的,您发送一个注册,服务器称您未经授权,并将您需要用于计算凭据的WWW Authenticate头发回给您。也就是说,您应该对自己进行身份验证-如果您正在编写自己的SIP客户端,则需要仔细阅读SIP规范并遵循/实施完整的SIP协议。好的,谢谢!我读了很多关于SIP协议的文档,但是没有人详细解释这个具体步骤。。。关于我应该搜索什么和/或我可以尝试使用的任何链接,有什么建议吗?我在维基百科的这个链接上找到了一个解释:它说我应该计算MD5 HA1和HA2,然后计算响应。HA1=MD5username:realm:password,这很清楚,但是HA2=MD5method:digestURI呢?在哪里可以获得method和digestURI变量?下面是一个SIP身份验证摘要的C示例,您应该可以从中使用它。