1. 域名解析和缓存
当浏览器访问某个网站域名或者应用服务通过域名方式访问API接口的时候,需要用IP和port建立TCP连接或者复用底层连接,IP地址的获取依赖对域名的解析,完成解析的角色称为域名解析器(dns resolver)。解析的大致过程就是检查cache是否有该记录,本地hosts文件是否有,都没有命中就查询dns server进行CNAME和A记录的查询。在linux系统下,dns server的IP一般在/etc/resolv.conf文件中。
域名解析常用dig命令,以及在 https://www.whatsmydns.net/ 进行域名解析测试。
考虑到域名IP地址不是经常变动,减少查询dns的冗余,并显着降低高QPS应用服务查询dns的压力(最后一节有benchmark对比),需要对dns信息进行缓存。因为软件应用不同、开发语言不同、操作系统不同,dns resolver的实现和封装也不同,会遇到不同的层面的cache。比如windows的dns resolver会有cache,linux默认不缓存;go语言可以选择cgo或者自己实现的dns resolver;chrome浏览器也会有自己的cache。
dns cache除了好处以外,也带来了其他问题。比如dns cache可能被恶意病毒修改,将真实IP改成钓鱼网站的IP,对用户进行诱导和钓鱼。还有在服务发现的这种特定场景下,dns cache是不被允许的,会出现IP更新不及时导致API流量的损失和错误,例如部署上线或者宕机,相比之下,运维响应的时长会造成更大的损失。但为了解决这个问题,在client和server端中间增加一层代理,dns记录指向这个代理。如图:
代理职责一般有:
代理一般分为:
四层代理对外暴露的IP一般称为虚IP(VIP)
example_test.go
性能对比:
从对比中可看出:go的pure resolver因没有cache和网络不稳定的因素,总耗时较多。而cgo的resolver比较稳定且耗时较低。
linux或类unix系统是没有操作系统级别的dns cache。除非安装了dnsmasq或者
nscd(Name Service Caching Daemon),并开启。
2. 跟踪域名解析过程的几条命令
在学习计算机网络的时候就知道到了DNS的解析过程,但是一直没有实践过。这次趁着配置狗爹上买的域名,通过跟踪域名的解析过程,算是DNS有了更深刻的了解。
nslookup(name server lookup)是一个用于查询 Internet域名信息或诊断DNS 服务器问题的工具。在windows和Linux都可以通过nslookup输入域名得到相应的IP地址。相反的,我们也可以通过输入IP地址来获得主机名。
获取更详细的应用,请参照 nslookup 命令用法 。
在Linux系统中,通过dig命令可以查询DNS的解析过程。
下面展示的是使用最简单的dig命令来查询DNS的结果,这对我们理解复杂一点的dig命令的结果很有帮助。
输出了DIG和Linux的版本号以及查询的域名
说明可以增加参数cmd。
表示下面信息是此次查询所得的结果,包含5个部分,分别是头部HEADER,查询部分QUESTION SECTION,回复部分ANSWER SECTION,权威机构部分AUTHORITY SECTION,附加部分ADDITIONAL SECTION。
opcode 操作码,QUERY,代表是查询操作
status 状态,NOERROR,代表没有错误
id 编号,7794,16bit数字,在dns协议中,通过编号匹配返回和查询。
flags 标志,如果出现就表示有标志,如果不出现就未设置标志:
qr query,查询标志,代表是查询操作
rd recursion desired, 代表希望进行递归(recursive)查询操作
ra recursive available 在返回中设置,代表查询的服务器支持递归(recursive)查询操作。
aa Authoritative Answer 权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复。
QUERY 查询数,1代表1个查询,对应下面的QUESTION SECTION中的记录数
ANSWER 结果数,3代表有3项结果,对应下面ANSWER SECTION中的记录数
AUTHORITY 权威域名服务器记录数,4代表该域名有4个权威域名服务器,可供域名解析用。对应下面AUTHORITY SECTION
ADDITIONAL 格外记录数,4代表有4项格外记录。对应下面 ADDITIONAL SECTION。
查询部分,从左到右各部分意义:
1、要查询的域名,这里是hihuaning.com.,'.'代表根域名,com顶级域名,hihuaning二级域名
2、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
3、type,要查询的记录类型,A记录(Address),代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
回应部分,回应有CNAME记录和A记录,说说CNAME记录从左到右各部分意义:
1、对应的域名,这里是hihuaning.com.,'.'代表根域名,com顶级域名,hihuaning二级域名
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器,可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,CNAME记录,代表hihuaning.com有个别名samkingz.github.io
5、域名对应的CNAME别名
权威域名部分,回应都是NS记录(Name Server),NS记录从左到右各部分意义:
1、对应的域名,这里是fastlylb.net.,'.'代表根域名,com顶级域名,fastlylb二级域名
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器,可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,NS,Name Server,NS记录,代表该记录描述了域名对应的权威域名解析服务器
5、域名对应域名对应的权威域名解析服务器。由于ns3.fastlylb.net.是fastlylb.net.的子域名,而解析子域名,又需要主域名的信息,为了打破这个死循环,需要在下面的额外记录中提供该服务器的ip地址。
额外记录部分,这里都是A记录,A记录从左到右各部分意义:
1、对应的域名,这里是ns1.fastlylb.net.,'.'代表根域名,net顶级域名,fastlylb二级域名,ns1是三级域名。
2、TTL,time ro live,缓存时间,单位秒。5,代表缓存域名服务器可以在缓存中保存5秒该记录。
3、class,要查询信息的类别,IN代表类别为IP协议,即Internet。还有其它类别,比如chaos等,由于现在都是互联网,所以其它基本不用。
4、type,要查询的记录类型,A记录,代表要查询ipv4地址。AAAA记录,代表要查询ipv6地址。
5、域名对应的ip地址。
查询耗时
查询使用的服务器地址和端口
查询的时间
回应的大小。收到(rcve, recieved)256字节。
使用 dig hihuaning.com +trace 命令,我们可以看到整个域名是如何发起和解析的,从根域名(.)到gTLD Server(.com),再到Name Server(hihuaning.com.)的整个过程都显示出来了。
获取更详细的应用,请参照 dig 命令用法 。
从dig查询结果看DNS的A记录和NS记录
深入分析java web技术内幕
3. 域名怎么ping
你“网络日志设置”中的“通知 Ping 服务器”如果没有设为选中状态,那么更新时不会通知服务器,也就不会显示在“更新的空间”中了。
Ping是测试网络联接状况以及信息包发送和接收状况非常有用的工具,是网络测试最常用的命令。Ping向目标主机(地址)发送一个回送请求数据包,要求目标主机收到请求后给予答复,从而判断网络的响应时间和本机是否与目标主机(地址)联通。
如果执行Ping不成功,则可以预测故障出现在以下几个方面:网线故障,网络适配器配置不正确,IP地址不正确。如果执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping成功只能保证本机与目标主机间存在一条连通的物理路径。
命令格式:
ping IP地址或主机名 [-t] [-a] [-n count] [-l size]
参数含义:
-t不停地向目标主机发送数据;
-a 以IP地址格式来显示目标主机的网络地址 ;
-n count 指定要Ping多少次,具体次数由count来指定 ;
-l size 指定发送到目标主机的数据包的大小。
例如当您的机器不能访问Internet,首先您想确认是否是本地局域网的故障。假定局域网的代理服务器IP地址为202.168.0.1,您可以使?B style='color:black;background-color:#ffff66'>Ping避免202.168.0.1命令查看净?B style='color:black;background-color:#A0FFFF'>是否和代理服务器联通。又如,测试本机的网卡是否正确安装的常用命令是ping 127.0.0.1。
http://www.raonet.net/cn/1/archives/2005/961.asp
http://spaces.msn.com/members/tianyalangzi/Blog/cns!1pvCy5kSwGkEmVMWN8BE3OIg!115.entry
还有当你读了某个网站的文章,把评论写到自己网站上。然后向刊载原始文章的服务器发送该网页的URL及标题、部分正文、网站名称等信息(注),这一过程称之为"发送TrackBack Ping",通过这种办法,在原始文章的地方就留下了你的评论的URL、标题等部分信息。当然别人也可以向原始文章发送TrackBack Ping,所以在原始文章中就将包括你的TrackBack Ping在内的所有评论都记录了下来。
此外,如果你在自己网站上也设置了TrackBack Ping功能的话,那么谁都可以通过TrackBack Ping来发表针对你的意见了。这样,多家网站就通过相关话题而联接起来。各种评论在因特网上就像网眼一样联接起来。这样就创造出了与日记网站完全不同的文化。
注:需要采用原始文章指定的URL,这一URL就称为"TrackBack Ping URL"。最后的"128"为原始文章的专用数字,称为"TrackBack ID"。
4. linux查看域名命令
在linux下可以通过命令查看域名,那么具体是怎么操作的呢?下面由我为大家整理了linux下查看域名的命令,希望对大家有所帮助。
1.linux查看域名的命令——ifconfig
Linux查看IP地址的命令--ifconfig
ifconfig命令用于查看和更改网络接口的地址和参数
$ifconfig -a
lo0: flags=849 mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863 mtu 1500
inet 211.101.149.11 netmask ffffff00 broadcast 211.101.149.255
ether 8:0:20:a7:4d:21
系统会显示网络接口的名称,接口的状态(up or down),
接口的IP地址和掩码等信息
2.扩展:如何更改网络接口的IP地址
#ifconfig hme0 down
#ifconfig hme0 211.101.149.233 netmask 255.255.255.0 up
首先,使用down命令参数把网络接口hme0的服务暂时停止,然后再用Linux查看ip的ifconfig命令给
接口分配新的IP地址和掩码,并启动网络接口服务
也可以通过改变文件/etc/hosts中的IP地址的值并重新启动系统来更改机器的IP地址。
/etc/hosts/: 211.101.149.11 sampdt
定义主机名在/etc/hostname.hme0及IP地址。
更改了网卡/增加了网卡,系统不能自动启动该接口服务,这时需要手动创建网口服务:
#ifconfig hme0 plumb
Linux查看ip即可以为接口le0创建网口服务
相应地,用ifconfig带unplumb参数可以停止服务并关闭网络.
netconfig 用来设置IP地址
5. 以下哪个命令不能用于测试dns域名解析服务
netuse。根据查新DNS故障代码相关资料得知,netuse命令不能用于测试dns域名解析服务。
6. 能用于域名解析测试的命令是
以下哪些命令可用作域名解析测试BC
A.ipconfig
B.ping
C.nslookup
D.arp
参考答案:
B C
7. 如何用命令进行DNS域名解析验证
命令无法使域名解析,解析需要到域名的后台。
如下参考:
1.需要输入后台域名,进行操作解析,如下图所示。
8. 网络检测常用命令 命令提示符cmd常用命令tracert
tracert命令可以检测所到本机电脑与所到ip之间经过多少台路由器,每台路由器的ip地址,到某台路由器的时间,以便更好的判断网络故障。
使用方法 基本同ping命令
开始-运行-cmd-tracert空格(ip)或tracert空格(域名)
例如:
C:UsersAdministrator>tracert www..com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [110.242.68.3] 的路由:
1 3 ms 1 ms 1 ms bogon [192.168.1.1] 经过的第一台路由器
2 4 ms 7 ms 4 ms 113.9.6.7 wan口ip
3 4 ms 4 ms 6 ms 113.9.6.7 3个时间为3次发送数据返回时间
4 9 ms 6 ms * 1.189.20.93
5 9 ms 9 ms 9 ms 1.58.81.153
6 24 ms 23 ms 24 ms 219.158.23.9
7 34 ms 33 ms 35 ms 110.242.66.162
8 * * * 请求超时。
9 * * * 请求超时。
10 * * * 请求超时。
11 * * * 请求超时。
12 * * * 请求超时。
13 28 ms 28 ms 27 ms 110.242.68.3
跟踪完成。
从上图可以看出8-12为超时状态,网络环境不好,是外网问题。
tracert回车可以显示后面跟其他选项后的不同功能。
9. 如何ping一个域名
具体步骤如下:
所需材料:WIN7系统演示。
一、首先打开电脑,按下Windows键打开开始菜单,点击“运行”。