dns域名查询的两种方式(dns异常处理方法)
温馨提示:这篇文章已超过395天没有更新,请注意相关的内容是否还可用!
一种是面向连接的虚电路服务,可以保证可靠通信,建立虚电路连接,然后通过这个连接发送数据包,完成后释放虚电路。另一种是无连接的数据包业务,可以随意走任何路由,但为了到达目的地,必须携带目的主机的地址。即使如此,发送的数据包仍然可能是错误的、丢失的、重复的或乱序的。由于第二种方法不需要提供可靠的传输服务,网络中的路由器相对便宜且易于维护。互联网就使用这种服务,它使用IP协议。这种服务的优点是节省成本。然后将复杂的网络处理功能交给传输层上层。它们位于每台主机上,并且位于整个互联网的边缘。IP协议直译为互联网协议。
1. IP协议 1.1 背景
网络层一般有两个服务:
一种是面向连接的虚电路服务,可以保证可靠通信,建立虚电路连接,然后通过这个连接发送数据包,完成后释放虚电路。 另一种是无连接的数据包业务,可以随意走任何路由,但为了到达目的地,必须携带目的主机的地址。 即使如此,发送的数据包仍然可能是错误的、丢失的、重复的或乱序的。
由于第二种方法不需要提供可靠的传输服务,网络中的路由器相对便宜且易于维护。 互联网就使用这种服务,它使用IP协议。
这种服务的优点是节省成本。 然后将复杂的网络处理功能交给传输层上层。 它们位于每台主机上,并且位于整个互联网的边缘。 那么中间的互联网核心只需要完成即可。 简单的分组交换功能。 在IP协议之上,为了保证可靠传输,还有TCP协议。
1.2 IP协议
IP协议(Internet Protocol)直译为互联网协议。 上半部分是传输层,下半部分是数据链路层。 IP协议是为互联网上的每个主机/路由器接口分配一个全球唯一的标识符,这就是地址。
这里需要区分MAC地址和IP地址。 关于MAC地址,即媒体访问控制地址,也是唯一的,但它是针对设备-设备的,异构网络非常复杂。 IP协议是为了解决大网络和小型网络之间的通信。 这样划分可能就不需要更多的协议来通信了,更加方便。
目前,IP协议地址有两个版本:IPv4和IPv6。 2011年,IPv4地址已经分配。 IPv4编址方法经历了分类编址、子网划分和非分类编址三个阶段。
1.2.1 分类寻址
ABCDE被划分,网络中各设备的接口仅使用ABC,D和E保留,不分配给外部。 基本上都是后面分配网络号的前几位,然后就有很多种不同IP地址的组合可以使用。
A:8 位网络号 + 24 位主机号,网络号第一位固定为 0B:16 位网络号 + 16 位主机号,网络号前两位固定为 10C: 24位网络号+8位主机号,网络号前两位位肯定是110
A 类分配范围:1.0.0.0 至 126.0.0.0
B 类分配范围:128.0.0.0 至 191.255.0.0
C 类分配范围:192.0.0.0 至 223.255.255.0
1.2.2 子网划分
子网掩码的引入可以表明将分类后的IP地址中的哪一个作为子网号,这样其后面的所有IP号都可以利用子网掩码继续细分。 子网掩码用连续的1来对应网络号和子网号,用0来对应主机号,然后子网掩码和IP地址结合起来就可以得到IPv4地址所在子网的网络地址位于。
1.2.3 非保密寻址
C级空间太小,没有得到充分利用。 后来提出了无类寻址(当然也提出了IPv6)来解决这个问题。 无类寻址使用:
网络地址+“/”+网络前缀个数
格式,例如“128.14.35.7 / 20”
这意味着该IP地址的前20位是网络号,其余12位是主机号。 这样,整个IP地址就可以被划分为更多,而不是各种类别,并且每个块中的限制都比较严格。 。
2. IP数据报头格式 2.1 IP数据报头字段
和其他协议的报文头格式一样,IP协议的功能也体现在这里。
Version:表示Ip协议的版本,通信双方必须一致; Header Length:表示数据报头的长度,显然范围是5-15(以8字节为单位,转化为bit 8)来区分业务:一半不用; 总长度:IP数据报的总长度(最大2^16-1); logo、flag、fragment offset:这三个是用来对IP数据报进行分片的,因为到下层的时候可能会太长,而且下层的传输帧受到MTU最大传输单元的限制,即,IP数据报将会被分片,然后会检查这三个字段来指示分片情况; ID:同一个IP数据报的各个分片的ID是相同的; flag:flag允许分片,不允许分片,且后面没有分片; 分片偏移:分片数据报的数据负载部分在原始数据报位置偏移了多少个单位(8字节,必须是整数) time to live:TTL,before表示多少秒,代表多少“跳”现在; protocol:常见值对应数字,如ICMP对应1; header checksum:校验错误; 源IP地址; 目的IP地址; 可选字段:很少使用; padding:因为如果是8的整数倍,不够就补上。 2.2 ICMP协议
互联网控制消息协议(Internet Control Message Protocol)
该协议旨在更有效地转发 IP 数据报,提高成功传送的机会。 主机或路由器使用ICMP协议发送错误消息和查询消息,ICMP消息被封装在IP数据报中进行传输。
错误消息分为五种: 1. 目的地不可达; 2、源头被压制; 3、超过时间; 4、参数问题; 5. 改变路线。 (都是从目的主机或路由器反馈到源主机或路由器)
查询消息有两种类型: 1. Echo 请求和回复; 2. 时间戳请求和回复。 (都是从源主机或路由器到目的主机或路由器)
2.3 ICMP协议的应用
Packet Internet Groper 也称为 PING 命令。 该命令不经过传输层的TCP或UDP,而是直接使用Internet层的ICMP发送请求和回复消息。 用于测试主机或路由器的连通性。
跟踪路由TraceRoute命令,如windows的tracert命令。 该命令在应用层也直接使用网际层的ICMP协议(Unix系统不使用UDP协议)发送请求和应答报文以及错误报告报文来测试从源主机到目的主机的IP数据报。 哪些路由器。
2.4 其他
关于IP数据报的转发,主要是为路由器设计一些路由协议、ARP(AddressResolutionProtocol)地址解析协议、根据IP获取MAC地址的过程。 直接传递和间接传递的区别在于是否经过路由器转发。 路由器可以隔离冲突域、广播域等。
三、NAT网络地址转换
NAT的英文全称是“Network Address Translation”,中文意思是“网络地址转换”。 它是一种将内部私有网络地址(IP地址)转换为合法网络IP地址的技术。 NAT 允许使用私有地址的内部网络连接到 Internet 或其他 IP 网络。 当NAT路由器将内网的数据包发送到公网时,它会将IP包头中的私有地址转换为合法的IP地址。
IPv4即将被耗尽,但有了NAT,IPv4又存活了20年。
3.1 原理
RFC1918规定了三个保留地址段:10.0.0.0-10.255.255.255; 172.16.0.0-172.31.255.255; 192.168.0.0-192.168.255.255。 这三个范围分别位于A、B、C地址段内,不分配给特定用户。
这些地址可以在任何组织或企业内使用。 与其他Internet地址的区别在于,它们只能在内部使用,不能用作全局路由地址。 对于一个封闭的组织,如果其网络没有连接到互联网,这些地址无需申请即可使用。
对于需要访问Internet且内部使用私有地址的网络,需要在组织出口部署NAT网关。 当报文离开私网进入Internet时,源IP会被替换为公网地址,通常是出口设备的接口。 地址。 按照这种模型,中间夹着NAT网关做一个转换,大量的内网主机不再需要公网IP地址。
一般在局域网内使用私网IP作为主机标识,在Internet上使用公网IP作为通信标识。 整个NAT转换中,最关键的流程如下:
网络分为两部分:专用网络和公共网络。 NAT网关设置在私网到公网的路由出口处。 双向流量必须经过NAT网关。 网络访问只能由私网侧首先发起,公网无法主动访问私网主机; NAT网关在两个访问方向上完成两次地址转换或平移,出方向替换源信息,入方向替换目的信息; NAT网关的存在对于通信双方都是透明的; NAT网关为了实现双向转换功能,需要维护一张关联表来保存会话信息。 3.2 静态NAT
如果内部主机唯一占用一个公共IP,这种方法称为一对一模型。 这样就不需要进行上层协议转换,因为一个公网IP可以唯一对应一台内部主机。
显然,这种方法对于节省公网IP没有太大意义,主要是为了满足一些特殊的组网需求。 例如,用户想要隐藏内部主机的真实IP,或者实现两个重叠的IP地址之间的通信。
3.3 动态NAT
它能够将未注册的 IP 地址映射到已注册 IP 地址池中的地址。
与静态 NAT 不同,您不需要静态配置路由器以将每个内部地址映射到外部地址,但必须有足够的公共 Internet IP 地址,以便连接到 Internet 的主机可以同时发送和接收数据包
3.4 NAT 过载
这是最常用的 NAT 类型。 NAT过载也就是动态NAT,利用源端口将多个私网ip地址映射到一个公网ip地址,也称为NAPT(Network Address Port Translation)(Port-Level NAT)(多对一)。
通过使用 PAT(NAT 过载),数以千计的用户只需一个公共 IP 地址即可连接到 Internet。 其核心是利用端口号实现公网和私网之间的转换。
面对私网中大量的主机,如果NAT只进行IP地址的简单替换,就会出现一个问题:当多台内部主机访问同一台服务器时,返回的信息不足以区分不同的主机。响应应转发到哪个内部主机。
此时,NAT设备需要根据传输层信息或其他上层协议来区分不同的会话,并且可能需要转换上层协议的标识,例如TCP或UDP端口号。
这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,从而实现公网IP的复用和解复用。
这种方法也称为端口转换PAT、NAPT或IP伪装,但更多时候直接称为NAT,因为它是最典型的应用模式。
也就是说,我们利用端口号的唯一性来实现将公网ip转换为私网ip的步骤。 PAT(NAT重载)可以使用传输层端口号来识别主机,因此,理论上最多大约65,000台主机可以共享一个公共IP地址。
3.5 NAT的优缺点
优势:
最大的优点是节省大量IP资源
缺点:
NAT最大的缺点是破坏了IP端到端通信的能力,因此无法进行端到端的ip跟踪。
同时,NAT实现了UDP或TCP报文头中的IP地址和端口转换功能,但某些应用层协议如FTP负载中包含地址或端口信息,这些内容无法通过NAT进行有效转换。 可能会导致问题。
4、DNS4.1简介
DNS(Domain Name System)域名系统
我们知道,计算机之间的通信其实是基于IP地址的,但是我们访问时经常使用的网站就是IP地址,因为IP地址太难记了!
那么如何输入URL来访问IP呢,其实DNS服务器就是在帮我们进行地址解析。
互联网采用分层命名树作为域名,每一层的组成部分用点分隔,总共构成一个域名。 格式如下:
xxx 。 三级域名。 二级域名。 顶级域名
各级域名均由上一级管理机构管理,顶级域名由一个机构管理:ICANN,互联网名称与数字地址分配机构。
cn中国、us美国等国家顶级域名,com公司、net网络服务机构、org非营利组织等通用顶级域名; edu教育机构等二级域名,按行政区划划分的域名; 再往下都是免费玩的,网上没有任何规定。 4.2 域名服务器解析过程
用于解析域名的域名服务器也可以分为四种类型:
根域名服务器; 顶级域名服务器; 权威域名服务器; 本地域名服务器。
本来每次访问域名都需要顺序查询,但是为了效率,就用缓存来解决这个问题。 浏览器、操作系统、本地DNS、根域名服务器都会在一定程度上缓存DNS结果。 所以实际的过程并不是那些服务器直接工作的。
例如:如果我现在要访问,流程是这样的:
浏览器从浏览器的DNS缓存中检查是否存在该URL的映射关系。 如果有则返回IP并完成域名解析。 如果不是,则变为2; 操作系统会首先检查其本地的hosts文件是否有该URL的映射关系,如果有,则返回IP,完成域名解析,如果没有,则转向3; 计算机会向本地DNS服务器发起请求,查询域名,如果缓存中有则直接返回,如果没有则转向4; 本地DNS服务器,获取根DNS服务器的地址,然后向其中一台发起请求; 根DNS服务器收到请求,找出一个IP,即com对应的服务器的IP,返回给本地DNS服务器; 本地DNS服务器使用返回的IP向其发起请求; com的服务器收到请求,找出一个IP,即对应服务器的IP,返回给本地DNS服务器; 本地DNS服务器根据返回的IP向其发送请求; com的服务器收到请求,检查输出的IP地址,返回给本地DNS服务器; 本地DNS服务器发送给客户端并缓存,客户端可以直接访问。
其中,显然1、2、3都是先直接通过缓存查找,交给下一级操作,找到后直接返回,而主机到本地域名服务器的查询过程采用递归查询;
4 5、6 7、8 9是三个来回过程。 在本地查找不同级别的其他服务器的过程是本地服务器发出的请求,是一个迭代查询。
Windows 命令:
ipconfig/displaydns - 查看缓存的域名解析
ipconfig/flushdns - 刷新 DNS 缓存
问:根服务器在哪里?
据百度百科统计,ipv6原有的13个单位和新增的25个单位分布在全球各地。
4.3 DNS劫持
显然,域名和IP对应的过程就是一个DNS解析过程,所以解析出来的服务器可能会被绑架。
攻击者劫持DNS服务器,通过某种手段获得对某个域名解析记录的控制权,然后修改该域名的解析结果,导致用户在访问该域名时将原来的IP地址转移到修改后的IP地址上。域名地址。 IP地址。 其结果是无法解析正确的URL或者被解析为另一个URL的IP,从而达到获取用户信息或破坏原URL正常服务的目的。
4.4 DNS污染
也称为域名服务器缓存中毒,是指一些故意或无意制造的域名服务器数据包,将域名定向到错误的IP地址。 它与DNS劫持的区别在于,污染针对的是DNS缓存,在查询信息到达目标DNS服务器之前所经过的节点上进行操作。 在路由器上,是在它的bypass中生成的,因为是UDP协议,最快返回的会被认为是答案,最后会先返回错误答案。
需要说明的是,按照传统的理解,这个查询过程需要很快,可能需要访问很多服务器来查询,所以采用UDP协议进行传输,比TCP更快。
但也不一定,比如报文长度、DNS污染等各种攻击出现,UDP太不可靠,所以加上了TLS版本(像https),所以其实是基于TCP协议的。