带你熟悉云网络的“电话簿”:DNS
摘要:无论你域名怎么解析,最终我还是要用IP和别人通信的。域名只是你的皮囊,IP才是你的灵魂。
本文分享自华为云社区《《跟唐老师学习云网络》 - DNS电话簿》,作者: tsjsdbd 。
由于TCP/IP网络协议在通信的时候,双方都是用IP地址的。所以整个报文来回过程中,并没有DNS什么事情的。只要双方IP都知道,那么系统中有没有DNS都无所谓的。
DNS的最大作用就是把:“名字”==》翻译为==》“IP地址”。
手机地址簿
DNS等于是一个大号版的“地址簿”。跟你手机打电话一样,你最终拨打出去的肯定是手机号。
而你查找联系人,只是为了获得对方手机号码而已。假如你脑袋里已经默记了号码,那是可以直接拨号通话的,并不需要先打开“联系人or地址簿”的。
DNS域名解析,是我们在网络中很容易接触到的通信过程。有时候网络不通,并不是你和对方无法连通,只是你无法根据名字“翻译”为对方的实际IP地址,千万不要被主次问题给困惑了。很多时候,如果可以查询到实际IP,实际网络则是通的。(当然,知道了IP,网络还是不通的话,可以复习下唐老师之前的网络课程)。
域名的来源
两台电脑在通信的时候,是使用之前介绍过的网络协议栈(即TCP/IP)的。
但是,有时候,IP地址属实不好记忆。别说是IPV4了,后面IPV6地址,根本就不是给人记的。就跟电话号码一样,多了就是不好记,必须得把号码关联到一个“人名”上,用来助记。
于是,这个世界上就有了“域名”一词,用来助记IP地址。 你想:http://github.com 总比 20.205.243.166 好记吧?所以大家都爱记名字,然后在通信之前,不闲麻烦的先翻译一次。
怎么把名字变成IP,就是DNS解析过程了。这个时候就得有个“专门记录名字=>IP”的服务器。
DNS服务器
搞协议的那帮人,为了解决名字==》IP的问题。引入了一个叫做域名服务器的东西。
这个DNS服务器,就是一个 key-value 的大号map表。大概就是 :
Key[名字] --> Value(IP地址)
所以DNS服务器,都挺小巧的。它的复杂是在于DNS服务器之间可以级联, 这个后面再细说。总之它就是一台很小的 key-value的Server。
本地快速解析
有时候,局域网里面,还得自己搭建一台DNS服务器,也挺麻烦。 那有没有简单点的 ,直接把key-value先写死顶着用一下先的办法?
答案是有的,就是咱们的 /etc/hosts 文件啦。(windows则是C:\Windows\System32\drivers\etc\hosts文件)
它的内容是长这样的:
# value(IP) key(域名)
192.168.1.11 www.google.com
你可以试着增加一行,然后看看在浏览器里面,访问这个网站是不是变了。
我这里直接ping这个网址
# ping google.com
PING google.com (192.168.1.11) 56(84) bytes of data.
你看,地址就变成文件中指定的IP了。
查询DNS的命令行
一般我就用2个, nslookup 和 dig
apt-get install dnsutils
安装之后,这2个命令行,就都有了。
nslookup命令
这个是用的最多的,格式是:
nslookup 目标域名
比如:
上面的Server地址,是指问了“哪个DNS服务器”。而下面标红线的IP,则是它给你的答复:“http://google.com的IP是 93.46.8.90”
域名找不到IP,则是这样:
dig命令行
这个dig比nslookup好的地方在于,它可以指定DNS服务器,来帮你解析域名。
格式:
dig 目标域名
dig @特定DNS服务器 目标域名
中间的 @参数,是可选的。
能不能解析,看红圈那个 ANSWER,如果是0,那说明解析不了这个域名。
最后试下指定 DNS服务器来解析域名。
上图里指定,用10.129.54.132 这台DNS服务器来帮我们解析域名。
DNS协议
这个DNS协议非常的简单,就是一问一答的格式,没什么握手过程。
客户端问:“请问zz的ip是多少”
服务端答:“哦,是xx.xx.xx.xx”。 或者“我不知道”。
协议默认端口是53. 所以在定位问题的时候,可以试着抓端口53的报文,看看你和DNS服务器之间是否还和谐。
绝大多数时候使用的是UDP协议,但也可以用TCP(很少)。
指定DNS服务器
系统默认的DNS服务器,(即默认应该去哪个DNS服务器查询IP),一般都是管理员帮我们配置好的。
但是我们也可以自己修改,在 /etc/resolv.conf 文件中。
cat /etc/resolv.conf
nameserver 10.129.2.34
nameserver这一行,可以copy多行,当第一个DNS服务器不可用时,会自动去问第2个DNS服务器。
如:
cat /etc/resolv.conf
nameserver 10.129.2.34
nameserver 100.79.1.250
nameserver 100.79.1.46
这样有配置3台DNS服务器
高级配置参数
这个 /etc/resolv.conf文件中,还可以配置一些高级参数。
- search:查询DNS域名时,会往你查询的域名尾部,额外补全的内容。
- ndots:控制补全的最大长度。
这个会在Kubernetes的Service特性里面用到,等需要的时候,可以自己去深入研究下。
平时用不到这些高级参数。
DNS级联
DNS有个级联机制,即:当我(DNS服务器)这里的key找不到value时,我可以问我的上级。上级不懂再问上级,全球有几台顶级的根域名服务器。
所以你想要拥有全球知名的网址(域名),都都是被收割的对象,因为取名权,被他们垄断了。想取一个“大家都认得”的名字,得老贵了。除非咱们自己不联网,局域网内自己玩,那么爱取什么名字就用什么名。
回到你本地机器,查询DNS域名的时候,整个过程大致如下:
如果问了一圈还找不到,就会告诉你,这个域名确实解析不了(要么就是根本不存在这个域名,要么就是你的DNS服务器里没这条记录,并且也得不到上级的答案)。
ps,无论你域名怎么解析,最终我还是要用IP和别人通信的。域名只是你的皮囊,IP才是你的灵魂。
带你熟悉云网络的“电话簿”:DNS的更多相关文章
- 【跟唐老师学习云网络】 - 第7篇 Tcpdump大杀器抓包
[摘要] 前面章节的网络协议栈相关的信息建议大家多学习一遍,因为这些都是最基础的东西,想玩好云网络必备基本功.. 一.上帝视角 之前提到过定位问题可以开启上帝视角,那么如何开启就要依靠tcpdump这 ...
- Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888
Atitit 智能云网络摄像机的前世今生与历史 优点 密码默认888888 用户名admin 密码aaaaaa 网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将影像通过网络传 ...
- 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...
- win7自带wifi win7无线网络共享设置图文方法
win7自带wifi win7无线网络共享设置图文方法 点评:开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器 ...
- OpenFlow能解决私有云网络VLAN问题么
本文转载自:http://network.51cto.com/art/201202/314310.htm 在关于私有云网络的文章中,我们首先探讨了物理网络是否影响私有云.本文我们将讨论如何通过软件定义 ...
- android网络交互之DNS优化知识整理
android网络交互之DNS优化知识整理 之前的工作中,经常会遇到DNS解析出问题导致网络交互的操作无法正常进行. UnknownHostException 在很多的移动开发过程中,与服务端的交互的 ...
- C# 带用户密码访问网络共享
原文:C# 带用户密码访问网络共享 调用WNetUseConnection API 函数详细参数参考:https://msdn.microsoft.com/en-us/library/windows/ ...
- 网络协议 16 - DNS 协议:网络世界的地址簿
[前五篇]系列文章传送门: 网络协议 11 - Socket 编程(下):眼见为实耳听为虚 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络 ...
- 20145319 《网络渗透》DNS欺骗
20145319 <网络渗透>DNS欺骗 实验内容 dns欺骗实质上就是一种通过修改dns文件来改变目标想访问的域名和对应ip的攻击,使得目标在访问自己常用域名时不知不觉落入我们的圈套(可 ...
随机推荐
- python写一个能变身电光耗子的贪吃蛇
python写一个不同的贪吃蛇 写这篇文章是因为最近课太多,没有精力去挖洞,记录一下学习中的收获,python那么好玩就写一个大一没有完成的贪吃蛇(主要还是跟课程有关o(╥﹏╥)o,课太多好烦) 第一 ...
- 思科,华为l2tp组网,家庭宽带,公司内网数据分离
拓扑 简介 办公网使用专线接入,拥有固定IP地址,网络出口使用防火墙做NAT,下联交换机接入服务器,办公电脑等,旁挂思科路由器做L2TP LNS 家庭宽带使用ADSL线路,华为路由器做拨号设备与DHC ...
- 标注工具doccano导出数据为空的解决办法
地址:https://github.com/taishan1994/doccano_export doccano_export 使用doccano标注工具同时导出实体和关系数据为空的解决办法.docc ...
- mysqldump速查手册
一.mysqldump用法 1.1 常见选项 --all-databases, -A: 备份所有数据库 --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个 ...
- unity---世界坐标和本地坐标的转换
会受到缩放的影响 用的比较多的是 本地坐标转换为世界坐标,比如在自己周围释放物体 当物体发生旋转,方向会发生变化
- 用 notion 管理信用卡与花呗
用 notion 管理信用卡与花呗 Notion原文,排版更佳 概述 不需要提醒功能和安卓用户可以忽略Scriptable和快捷指令 app的设置 Notion 建立信用卡表格,录入信用卡基本信息,自 ...
- Spring bean到底是如何创建的?(上)
前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...
- Java - ConcurrentHashMap的原理
Java - ConcurrentHashMap的原理 **这是JDK1.7的实现** ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment. HashE ...
- 【zigbee无线通信模块步步详解】ZigBee3.0模块建立远程网络控制方法
本文以路灯控制应用为例,简述ZigBee3.0模块使用流程. 一.建立网络 1.通过USB转串口模块将出厂的ZigBee自组网模块连接,打开上位机软件"E180-ZG120A-Setting ...
- 商户编号[Merchant Id]是什么
1. Merchant Id是什么 2. Merchant Id 是有哪几个部分构成的 2.1 收单机构代码 2.2 商户地区代码 2.3 Merchant Category Code(MCC) 本文 ...