SIP中的DNS过程

  1.SIP中的DNS过程

  1.1.SIP消息涉及的DNS过程

  SIP消息涉及到的DNS过程主要包括两个方面:一方面是如何发送请求消息,发送方需要通过DNS过程得到传输层协议类型,下一跳的IP地址和端口等信息;另一方面是如何返回响应消息,需要决定上一跳的地址和端口,尤其是上一跳网元发生故障时,如何返回响应消息。

  1.2.如何发送SIP请求消息

  定义一个名为TARGET的变量,如果URI定义了maddr参数,TARGET取值于该参数,否则取值于URI的hostport部分。

  第一步是决定使用哪种传输层协议发送请求消息,包括下列步骤 :

  1、 如果URI定义了传输层协议,则使用该传输层协议,否则转步骤2;

  2、 如果TARGET包含IP地址,那么对于SIP URI使用UDP协议,SIPS URI使用TCP协议,否则转步骤3;

  3、 如果TARGET包含了端口,那么对于SIP URI使用UDP协议,SIPS URI使用TCP协议,否则转步骤4;

  4、 使用TARGET中的域名进行NAPTR查询,如果NAPTR返回的记录为空转步骤5,否则查看返回的记录,记录中的service域一般取值为”XXX+D2U”, X+D2T”, XX+D2S”, 其中XXX表示服务名称,可以是”SIP”或”SIPS”,D2U表示使用UDP协议,D2T表示使用TCP协议,D2S表示使用SCTP协议;

  5、 根据RFC3261的传输准则判断是否需要使用某种强制协议,如果需要使用强制协议,则使用该强制协议,否则对于SIP URI使用UDP协议,SIPS URI使用TCP协议;

  第二步是决定目标的IP 地址和端口,包括下列步骤 :

  1、 如果TARGET包含了IP地址和端口,则使用该地址和端口,否则转步骤2;

  2、 如果TARGET包含了IP地址,则使用对应传输协议的默认端口,否则转步骤3;

  3、 如果TARGET不包含IP地址,但包含了端口,则使用A或AAAA查询,获得域名对应的IP地址,否则转步骤4;

  4、 如果在第一大步的第四小步没有进行NAPTR查询,转步骤5,则使用该查询返回的记录中的replacement域中域名进行SRV查询,然后转步骤6;

  5、 在TARGET包含的域名加上_XXX._YYY.前缀(其中XXX表示服务类型,可以取值sip或sips,YYY表示传输类型,可以取值udp, tcp或sctp等),然后使用加了前缀的域名进行SRV查询,并转步骤6;

  6、 如果SRV返回了记录,记录会包含端口和最新域名,然后对最新域名进行A或AAAA查询得到IP地址,如果SRV没有返回记录转步骤7;

  7、 直接对TARGET中的域名使用A或AAAA查询得到IP地址,端口则根据传输协议使用默认端口;

  一个发送请求消息例子 ,下一跳消息的SIP URI为:sip:example.com,如下是向该网元发送SIP请求消息的过程:

  首先 对域名example.com进行NAPTR查询,查询的结果为:

  order pref flags service regexp replacement

  IN NAPTR 50 50 "s" "SIPS+D2T" "" _sips._tcp.example.com.

  IN NAPTR 90 50 "s" "SIP+D2T" "" _sip._tcp.example.com

  IN NAPTR 100 50 "s" "SIP+D2U" "" _sip._udp.example.com.

  NAPTR返回了多条记录,根据order和pref的取值选择了第一条记录,flag为s表示下一步进行SRV查询,service为SIPS+D2T表示使用TCP作为传输层协议,同时使用sips方式传输消息,replacement表示使用_sips._tcp.example.com进行获取目标网元的地址信息。

  然后 对域名_sips._tcp.example.com进行SRV查询,查询的结果为:

  Priority Weight Port Target

  IN SRV 0 1 5060 server1.example.com

  IN SRV 0 2 5060 server2.example.com

  SRV返回了两条记录,根据priority和weight选择其中一条,假设选择的是第一条,那么意味这目标端口为5060,Target包含了目标网元的域名server1.example.com。

  最后 对域名server1.example.com进行A或AAAA查询,得到目标网元的IP地址:

  IN AAAA 5F05:2000:80AD:5800:0058:0800:2023:1D71

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的通信协议。SIP注册是指SIP终端设备向SIP服务器注册自己的位置信息,以便其他终端设备可以找到并与其建立通信。 下面是SIP注册的一般过程: 1. SIP终端设备启动并连接到网络。 2. SIP终端设备获取自己的IP地址,并向SIP服务器发送一个注册请求(REGISTER)。 3. SIP服务器接收到注册请求后,验证终端设备的身份,并检查是否具有注册权限。 4. 如果验证成功,SIP服务器将终端设备的位置信息(如IP地址、端口号等)存储在注册表,并返回一个注册响应(200 OK)给终端设备。 5. 终端设备收到注册响应后,确认自己已成功注册到SIP服务器,并将过期时间(注册有效期)记录下来。 6. 终端设备定期发送心跳消息(REGISTER)来保持注册状态,并在注册有效期过期之前重新注册。 7. 如果终端设备不再需要注册或者注销,可以发送一个注销请求(UNREGISTER)给SIP服务器。 8. SIP服务器接收到注销请求后,从注册表删除对应的位置信息,并返回一个注销响应(200 OK)给终端设备。 通过SIP注册,其他SIP终端设备可以查询SIP服务器的注册表,找到目标终端设备的位置信息,从而建立会话并进行通信。 需要注意的是,具体的SIP注册过程可能因系统、设备和网络环境而有所不同。上述过程是一种常见的流程,但实际情况可能会有一些差异。建议参考相关的SIP协议规范或设备文档以获取更详细和准确的信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值