sip 'Contact' header 中的用户部分是强制性的吗?
Is user part in sip 'Contact' header madatory?
我有一个正在注册到中继的 SIP 服务器。因此,SIP Server 向中继发送 REGISTER 消息。但是中继设备发送“406 Not Acceptable”错误信息。有人告诉我这个错误是因为 'Contact' header 中没有用户部分。但是,根据 RFC,Contact header 本身并不是注册请求中的强制要求。
能否请您帮忙确认一下我的理解是否正确并给出相应的建议?
REGISTER sip:10.5.5.1 SIP/2.0
From: sip:70999@10.5.5.1;tag=8CD78147-5BDB-40C1-87F6-64A6905F1A6D-9
To: <sip:70999@10.5.5.1>
Call-ID: FCC64207-4F2A-4622-AF85-B77BBE3C7796-9@10.5.5.2
CSeq: 1 REGISTER
Content-Length: 0
Via: SIP/2.0/UDP 10.5.5.2:5060;branch=z9hG4bKA761AE66-C376-4895-BBF7-51CF2C675C52-9
**Contact: <sip:10.5.5.2:5060>**
Expires: 600
SIP/2.0 406 Not Acceptable
Via: SIP/2.0/UDP 10.5.5.2:5060;branch=z9hG4bKA761AE66-C376-4895-BBF7-51CF2C675C52-9
From: <sip:70999@10.5.5.1>;tag=8CD78147-5BDB-40C1-87F6-64A6905F1A6D-9
To: <sip:70999@10.5.5.1>;tag=10a8faa5
Call-ID: FCC64207-4F2A-4622-AF85-B77BBE3C7796-9@10.5.5.2
CSeq: 1 REGISTER
User-Agent: XXX XXX XXX
Allow: INVITE, ACK, REGISTER, BYE, OPTIONS, INFO, CANCEL, REFER, NOTIFY, SUBSCRIBE, PRACK, UPDATE
Content-Length: 0
10.5.5.2 是我的 SIP 服务器,10.5.5.1 是中继设备
谢谢。
你是对的。对于所有记录地址,包括 Contact
header 中的任何地址,用户部分是可选的。
对于 REGISTER 请求,请参阅 10.2.1 Adding Bindings,其中指出:
The Contact header field values of the request typically consist of
SIP or SIPS URIs that identify particular SIP endpoints (for example,
"sip:carol@cube2214a.chicago.com"), but they MAY use any URI scheme.
A SIP UA can choose to register telephone numbers (with the tel URL,
RFC 2806 [9]) or email addresses (with a mailto URL, RFC 2368 [32])
as Contacts for an address-of-record, for example.
对于联系人 header 包含 SIP URI 的情况,规则是 specified,如下所示。 [userinfo]
包含您所指的“用户部分”的部分是可选的。
SIP-URI = "sip:" [ userinfo ] hostport
uri-parameters [ headers ]
SIPS-URI = "sips:" [ userinfo ] hostport
uri-parameters [ headers ]
userinfo = ( user / telephone-subscriber ) [ ":" password ] "@"
尽管您是对的,但大多数 SIP 服务器确实实施了额外的业务规则。一些注册商不接受在联系人 URI 等中使用私有 IP 地址的请求。
我有一个正在注册到中继的 SIP 服务器。因此,SIP Server 向中继发送 REGISTER 消息。但是中继设备发送“406 Not Acceptable”错误信息。有人告诉我这个错误是因为 'Contact' header 中没有用户部分。但是,根据 RFC,Contact header 本身并不是注册请求中的强制要求。
能否请您帮忙确认一下我的理解是否正确并给出相应的建议?
REGISTER sip:10.5.5.1 SIP/2.0
From: sip:70999@10.5.5.1;tag=8CD78147-5BDB-40C1-87F6-64A6905F1A6D-9
To: <sip:70999@10.5.5.1>
Call-ID: FCC64207-4F2A-4622-AF85-B77BBE3C7796-9@10.5.5.2
CSeq: 1 REGISTER
Content-Length: 0
Via: SIP/2.0/UDP 10.5.5.2:5060;branch=z9hG4bKA761AE66-C376-4895-BBF7-51CF2C675C52-9
**Contact: <sip:10.5.5.2:5060>**
Expires: 600
SIP/2.0 406 Not Acceptable
Via: SIP/2.0/UDP 10.5.5.2:5060;branch=z9hG4bKA761AE66-C376-4895-BBF7-51CF2C675C52-9
From: <sip:70999@10.5.5.1>;tag=8CD78147-5BDB-40C1-87F6-64A6905F1A6D-9
To: <sip:70999@10.5.5.1>;tag=10a8faa5
Call-ID: FCC64207-4F2A-4622-AF85-B77BBE3C7796-9@10.5.5.2
CSeq: 1 REGISTER
User-Agent: XXX XXX XXX
Allow: INVITE, ACK, REGISTER, BYE, OPTIONS, INFO, CANCEL, REFER, NOTIFY, SUBSCRIBE, PRACK, UPDATE
Content-Length: 0
10.5.5.2 是我的 SIP 服务器,10.5.5.1 是中继设备
谢谢。
你是对的。对于所有记录地址,包括 Contact
header 中的任何地址,用户部分是可选的。
对于 REGISTER 请求,请参阅 10.2.1 Adding Bindings,其中指出:
The Contact header field values of the request typically consist of SIP or SIPS URIs that identify particular SIP endpoints (for example, "sip:carol@cube2214a.chicago.com"), but they MAY use any URI scheme. A SIP UA can choose to register telephone numbers (with the tel URL, RFC 2806 [9]) or email addresses (with a mailto URL, RFC 2368 [32]) as Contacts for an address-of-record, for example.
对于联系人 header 包含 SIP URI 的情况,规则是 specified,如下所示。 [userinfo]
包含您所指的“用户部分”的部分是可选的。
SIP-URI = "sip:" [ userinfo ] hostport
uri-parameters [ headers ]
SIPS-URI = "sips:" [ userinfo ] hostport
uri-parameters [ headers ]
userinfo = ( user / telephone-subscriber ) [ ":" password ] "@"
尽管您是对的,但大多数 SIP 服务器确实实施了额外的业务规则。一些注册商不接受在联系人 URI 等中使用私有 IP 地址的请求。