System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及终端,尤其涉及一种域名系统代理方法及相关装置。
技术介绍
1、域名系统(domain name system,dns)是一种用于对域名(domain name)和与之相对应的网际互联协议(internet protocol,ip)地址进行转换的系统,dns服务器是用来存储和管理这个系统的服务器。用户在通过终端访问某一网页时,可以输入待访问网页的域名,相应地,终端获取到该域名后,生成dns请求报文,并向dns服务器发送该dns请求报文,以便于dns服务器对域名进行转换。在实际应用中,终端对应的dns服务器的地址可能被配置为另一设备的地址,而非dns服务器的地址。例如,在热点场景中,终端对应的dns服务器的地址会被配置成为该终端提供热点的设备的网关地址,因此,提供热点的设备需要给该终端进行dns代理,对dns请求报文进行转发。
2、目前,一种可能的设计是,提供热点的设备对接收到的dns请求报文的报文头进行剥离,进而将数据从内核缓冲区拷贝到用户缓冲区,对数据重新封装报文头,进一步地将其转发给dns服务器,整个转发过程相对复杂,进而占用系统资源较多。
技术实现思路
1、本申请提供了一种dns代理方法及相关装置,以期降低转发过程中的复杂度,减少系统资源的占用。
2、第一方面,本申请提供了一种dns代理方法,该方法可以由终端来执行,或者,也可以由配置在终端中的部件(如芯片、芯片系统等)执行,或者,还可以由能够实现全部或部分终端功能的逻辑模块或软件实现,本申请对
3、示例性地,该方法包括:获取报文;在该报文的类型是dns请求报文的情况下,通过第一网卡驱动将该报文的目的地址修改为dns服务器的地址,第一网卡驱动是第一网卡对应的驱动;通过ip层将该报文的源地址修改为第二网卡的地址;通过第二网卡,向上述dns服务器发送报文。
4、需要说明的是,向dns服务器发送的报文的源地址为第二网卡的地址,目的地址为dns服务器的地址,该源地址以及目的地址与获取到的报文的源地址以及目的地址不同,但是报文的数据部分是相同的,也就是说,报文中的净荷数据(payload)不变。其中,源地址、目的地址承载在报文头中。
5、在上述技术方案中,在获取到dns请求报文的情况下,直接通过第一网卡驱动修改该报文的目的地址为dns服务器的地址,进一步地,通过ip层将该报文的源地址修改为第二网卡的地址,并通过第二网卡将修改源地址和目的地址后的报文发送给dns服务器,整个修改报文的源地址和目的地址的过程在内核层即可完成,无需经过应用层,或者说,无需将数据从内核缓冲区拷贝到用户缓冲区,重新对数据封装报文头,转发过程相对简单,有利于降低报文转发过程中的复杂度,进而减少系统资源的占用。
6、结合第一方面,在第一方面的某些可能的实现方式中,上述方法还包括:根据报文的目标端口和报文的报文头的格式,确定报文的类型。
7、可以理解,不同类型的报文,其目标端口以及报文头的格式可能是不同的,在本申请中,终端在第一网卡驱动侧便可以根据报文的目标端口以及报文头的格式,识别报文的类型,无需创建套接字(socket)来监听端口(可以理解为:该套接字与该端口对应,对于目标端口是该端口的数据包都会转发给该套接字),有利于降低监听风险,提高安全性。另外,无需创建套接字,有利于减少系统资源的占用。
8、结合第一方面,在第一方面的某些可能的实现方式中,上述根据报文的目标端口和报文的报文头的格式,确定报文的类型,包括:
9、在报文的目标端口是预设端口,且,报文的报文头满足预设格式的情况下,确定报文的类型是dns请求报文;在报文的目标端口是预设端口,但报文的报文头未满足预设格式的情况下,确定报文的类型是非法报文。
10、可选地,预设端口可以为53端口。
11、在本申请中,需要识别目标端口是预设端口的报文的类型,对于目标端口是其他端口的报文,可以不对其报文的类型进行识别。换言之,对于目标端口是预设端口的报文,有可能不是dns请求报文,因此,进一步根据其报文头的格式,确定是dns请求报文还是非法报文。其中,非法报文可以理解为:报文的目标端口是预设端口,但却不是dns请求报文。
12、一种可能的设计是,终端获取到报文之后,通过第一网卡驱动确定其目标端口。假设目标端口是预设端口,则进一步通过第一网卡驱动确定其报文头是否满足预设格式。假设其报文头满足预设格式,则确定报文的类型是dns请求报文;假设报文头未满足预设格式,则确定报文的类型是非法报文。假设目标端口不是预设端口,则可以不对其报文头的格式进行判断,按照普通报文的处理流程处理即可。
13、结合第一方面,在第一方面的某些可能的实现方式中,上述方法还包括:在报文的类型是非法报文的情况下,通过第一网卡驱动丢弃报文。其中,非法报文是目标端口为预设端口,但报文的报文头未满足预设格式的报文。
14、换言之,对于目标端口是预设端口,但报文头未满足预设格式的情况下,丢弃该报文,或者说,不对该报文进行处理。如此一来,有利于有效地防止分布式拒绝服务攻击(distributed denial of service,ddos),另外,对于目标端口是预设端口,但报文头不满足预设格式的非法报文,终端不进行处理,有利于降低终端的资源占用,进而腾出更多的资源来处理dns请求报文。
15、结合第一方面,在第一方面的某些可能的实现方式中,上述dns服务器的地址是根据网卡信息,从预存的至少一个dns服务器的地址中确定的。
16、其中,网卡信息例如包括但不限于:带宽、负载、或网卡速度。换言之,可以根据带宽、负载、或网卡速度中的一项或多项,从预存的至少一个dns服务器的地址中,确定上行的dns服务器。
17、可选地,本申请提供的第一方面或第一方面中任一种可能的实现方式中所述的方法可以应用于热点场景或容器场景中。当上述方法应用于热点场景中时,第一网卡为无线局域网(wireless local area network,wlan)网卡,第一网卡驱动为无线局域网网卡驱动;当上述方法应用于容器场景中时,第一网卡为虚拟网卡,第一网卡驱动为虚拟网卡驱动。
18、第二方面,本申请提供了一种dns代理装置,可以实现上述第一方面及第一方面中任一种可能的实现方式中所述的dns代理方法。该装置包括用于执行上述方法的相应的模块。该装置包括的模块可以通过软件和/或硬件方式实现。该装置例如可以为终端,也可以为支持终端实现上述方法的芯片、芯片系统、或处理器等,还可以为能够实现终端全部或部分功能的逻辑模块或软件。
19、第三方面,本申请提供了一种dns代理装置,包括处理器,所述处理器用于执行第一方面及第一方面中任一种可能实现方式中所述的dns代理方法。
20、可选地,所述装置还可以包括存储器,用于存储指令和数据。所述存储器与所述处理器耦合,所述处理器执行所述存储器中存储的指令本文档来自技高网...
【技术保护点】
1.一种域名系统代理方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
3.如权利要求2所述的方法,其特征在于,所述根据所述报文的目标端口和所述报文的报文头的格式,确定所述报文的类型,包括:
4.如权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
5.如权利要求1至4中任一项所述的方法,其特征在于,所述DNS服务器的地址是根据网卡信息,从预存的至少一个DNS服务器的地址中确定的。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述第一网卡为无线局域网网卡,所述第一网卡驱动为无线局域网网卡驱动;或,所述第一网卡为虚拟网卡,所述第一网卡驱动为虚拟网卡驱动。
7.一种域名系统代理装置,其特征在于,包括用于实现如权利要求1至6中任一项所述的方法的模块。
8.一种域名系统代理装置,其特征在于,包括处理器和存储器,其中,
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序或指令,当所述计算机程序或指令被计算机执行时,实现如权利
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令被计算机运行时,实现如权利要求1至6中任一项所述的方法。
...【技术特征摘要】
1.一种域名系统代理方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
3.如权利要求2所述的方法,其特征在于,所述根据所述报文的目标端口和所述报文的报文头的格式,确定所述报文的类型,包括:
4.如权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
5.如权利要求1至4中任一项所述的方法,其特征在于,所述dns服务器的地址是根据网卡信息,从预存的至少一个dns服务器的地址中确定的。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述第一网卡为无线局域网网卡,所述第一网卡驱...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。