ping 域名引发的一点思考 项目背景 在做项目的时候要去检测
  

sailyang 899

{{ttag.title}}
ping 域名引发的一点思考
项目背景
在做项目的时候要去检测是否连接到了外网,想到的方法是去ping -c 1 -w 1 www.baidu.com 这个命令的意思是去ping 1次百度,如果有响应数据则会立马返回,如果过了1s也没有ping通,那么直接退出ping程序。

遇到的问题
但是出现了一个问题,当我把路由器WLAN口拔掉后,发现ping www.baidu.com的时候拿不到www.baidu.com对应的IP地址。所以ping其实没有启动起来,那么问题来了,为什么拿不到www.baidu.com的IP呢,说明在嵌入式板子上不存在对应的域名和地址的对应关系(/etc/hosts),也说明了路由器上的DNS也没有www.baidu.com的对应IP地址,此时路由器会去DNS服务器(119.29.29.29)去拿www.baidu.com的IP地址,但是尴尬的是,我们把WLAN口拔掉了,所以此时嵌入式板子是获取不到www.baidu.com的IP地址。所以上诉ping www.baidu.com是有问题的。其实想了想也是有问题的,假如你先现在是新买了一个路由器,从来没有去接过外网,但是此时我要去ping www.baidu.com也是行不通的。

方案修改
所以我们修改了方案,上诉方案之所以失败是因为我们拿不到IP地址,那么我们可不可以直接去ping一个外网IP呢?普通外网IP肯定是不行的,因为一般都是域名不会变,IP会变。但是有一个IP应该不会变,这个IP是119.29.29.29。因为这个是DNS服务器,在许多路由器上默认的DNS服务器上写的也是这个地址,也就是说,如果这个IP不存在了,那么国内的路由器会出现问题。所以后面我们直接就去ping -c 1 -w 1 119.29.29.29。问题得到解决。

思考(ping流程)
上面遇到的问题其实是ping的流程问题。

ping IP(ping IP,首先会和子网掩码进行比对,检测是否是处于同一个网段
- ping本地IP
* 没有收到MAC地址
此时如果我们发送ARP协议后,没有收到回复包,说明此IP对应的主机不存在,此时你会收到Destination Host Unreachable消息。
* 收到MAC地址
此时我们收到了MAC地址,那么说明在该局域网内存在这个IP对应的主机,将ping包里面的第二层目的MAC进行填充。此时ping包完整,ping成功
- ping跨网段IP
跨网段时,此时发现并非本地网,会向ping包里面IP地址填入目的IP,但是目的MAC地址填的是路由器的MAC,也就是说,如果我ping的是外网的地址,那么我直接发送ping包给路由器,路由器去寻找对应的IP地址。
ping域名
ping的本质是去ping IP地址,用域名也是去ping IP地址。所以第一步要做的是去拿到域名对应的地址。ping的本质是去ping IP地址,用域名也是去ping IP地址。所以第一步要做的是去拿到域名对应的地址。
* 假设你的/etc/hosts中存有域名和地址的对应关系。如下:www.baidu.com        1.1.1.1,如果此时你去ping www.baidu.com会被转换为ping 1.1.1.1。从而转换为上诉1情况
* 假设你的/etc/hosts中没有对应的规则,此时回去路由器        DNS表中去拿对应的IP,假如此时路由器存在如下对应关系:www.baidu.com 1.1.1.1。此时路由器给你回复,说我这里找到了www.baidu.com的IP地址,你直接拿去用就可以了。从而转换为上诉的1情形
* 假设你现在的路由器刚买来的,里面不存在任何的域名和IP关系,那么此时你去路由器拿IP时,路由器说我也不知道,我去我上一级DNS服务器(119.29.29.29)找找。如果上一级的DNS服务器找到了IP,那么会给你返回一个IP和域名对应关系。这里的前提是你的路由器是连上外网的,也就是你的路由器可以访问到119.29.29.29服务器。不然,你都到不了哪里,怎么带东西回来。
* 假如此时上一级DNS服务器(119.29.29.29)也没有找到对应的域名和IP对应关系,那么DNS服务器就说,你等等,我去DNS根服务器找找。过程和上面类似
经过这么多的步骤,终于找到了域名和IP的对应关系了,此时自ping包里面的dest IP填上这个IP,此时回到上面的1情形。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

发表新帖
热门标签
全部标签>
西北区每日一问
每日一问
技术盲盒
技术笔记
干货满满
GIF动图学习
产品连连看
通用技术
标准化排查
SDP百科
自助服务平台操作指引
技术咨询
技术圆桌
功能体验
社区新周刊
信服课堂视频
新版本体验
2023技术争霸赛专题
秒懂零信任
畅聊IT
在线直播
技术晨报
升级&主动服务
安装部署配置
sangfor周刊
VPN 对接
专家问答
高手请过招
答题自测
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高频问题集锦

本版版主

461
247
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人