当前位置 > 主页 > 万和大讲堂 >


南京CCIE培训 SIP穿越NAT SIP穿越防火墙

2015-07-09 15:09

  1.SIP中的DNS过程


  1.1.SIP消息涉及的DNS过程


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


  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协议;南京CCIE培训


  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;南京CCIE培训


  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请求消息的过程:南京CCIE培训


  首先 对域名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。南京CCIE培训


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


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


最近开班 more>
  • 全栈开发
  • 前端基础班
  • 软件测试
  • Java大数据开发工程师
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第一期
  • Java Web UI Python
  • CISP
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCM 12C
  • OCP 19C
  • RHCA
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • vip班
  • 考试计划
  • 脱产班
  • 脱产班
  • 脱产班
  • 双休班
  • 双休班
  • 双休班
  • 双休班
  • 业余班
  • 业余班
  • 10月16日
  • 10月14日
  • 10月9日
  • 10月30日
  • 10月21日
  • 10月8日10月8日
  • 10月28日
  • 10月21日
  • 10月8日
  • 随时开课
  • 11月10日
  • 11月25日
  • 10月28日
  • 10月14日
  • 11月2日
  • 10月26日
  • 10月26日
  • ——
  • 随时开课
  • ——
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入