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

sailyang 1569

{{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动图学习
【 社区to talk】
纪元平台
信服课堂视频
社区新周刊
安装部署配置
流量管理
畅聊IT
技术笔记
上网策略
每周精选
高手请过招
全能先锋系列
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
每日一记
运维工具
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
2023技术争霸赛专题
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
技术晨报
平台使用
技术盲盒
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
西北区每日一问
升级&主动服务
高频问题集锦
POC测试案例
云化安全能力
专家说
热门活动
产品动态
行业实践
产品解析
关键解决方案

本版达人

feeling

本周分享达人

新手29676...

本周提问达人