DNS 与 ICMP

DNS(Domain Name System)快速了解

DNS 是一整套从域名映射到 IP 的系统
 

DNS 背景

TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序. 但是 IP 地址不方便记忆

于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用 hosts 文件来描述主机 名和 IP 地址的关系。

最初, 通过互连网信息中心(SRI-NIC)来管理这个 hosts 文件的。

  • 如果一个新计算机要接入网络, 或者某个计算机 IP 变更, 都需要到信息中心申 请变更 hosts 文件。
  • 其他计算机也需要定期下载更新新版本的 hosts 文件才能正确上网。

这样就太麻烦了, 于是产生了 DNS 系统。

  • 一个组织的系统管理机构, 维护系统内的每个主机的 IP 和主机名的对应关系.
  • 如果新计算机接入网络, 将这个信息注册到数据库中;
  • 用户输入域名的时候, 会自动查询 DNS 服务器, 由 DNS 服务器检索数据库, 得到对应的 IP 地址。

至今, 计算机上仍然保留了 hosts 文件. 在域名解析的过程中仍然会优先查找 hosts 文件的内容.

cat /etc/hosts

域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。

C
www.baidu.com

域名使用 . 连接

  • com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等。
  • baidu: 二级域名, 公司名。
  • www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于 ftp.xxx.xxx/www.xxx.xxx 这样的格 式, 来表示主机支持的协议。

域名解析过程

 如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我 们所熟知的.com、.net、.cn 等通用域和.cn、.uk 等国家域组成,称为顶级域。网上注 册的域名基本都是二级域名,比如 http://baidu.com、http://taobao.com 等等二级域 名,它们基本上是归企业和运维人员管理。接下来是三级或者四级域名,这里不多赘述。

使用 dig 工具分析 DNS 过程

安装 dig 工具

yum install bind-utils

之后就可以使用 dig 指令查看域名解析过程了。

dig www.baidu.com

结果形如

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41628
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL:
0
;; QUESTION SECTION:
;www.baidu.com.     IN A
;; ANSWER SECTION:
www.baidu.com.     1057   IN     CNAME     www.a.shifen.com.
www.a.shifen.com.  40   IN   A     115.239.210.27
www.a.shifen.com.  40   IN   A     115.239.211.112;; Query time: 0 msec
;; SERVER: 100.100.2.136#53(100.100.2.136)
;; WHEN: Wed Sep 26 00:05:25 CST 2018
;; MSG SIZE rcvd: 90

结果解释:

  1. 开头位置是 dig 指令的版本号
  2. 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功3
  3. QUESTION SECTION 表示要查询的域名是什么
  4. ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询 成了 www.a.shifen.com, 再将 www.a.shifen.com 查询成了两个 ip 地址
  5. 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等

更多 dig 的使用方法, 参见:
https://www.imooc.com/article/26971?block_id=tuijian_wz

浏览器中输入 url 后, 发生的事情

这是一个经典的面试题. 没有固定答案, 越详细越好. 可以参考:

浏览器中输入 url 后发生的事情

ICMP 协议快速了解

ICMP 协议是一个 网络层协议

一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是 IP 协议并不提供可靠传输. 如果丢包了, IP 协议并不能通知传输层是否丢包以及丢包的原因.

ICMP 功能

ICMP 正是提供这种功能的协议; ICMP 主要功能包括:

  • 确认 IP 包是否成功到达目标地址
  • 通知在发送过程中 IP 包被丢弃的原因
  • ICMP 也是基于 IP 协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它 归结为网络层协议
  • ICMP 只能搭配 IPv4 使用. 如果是 IPv6 的情况下, 需要使用 ICMPv6

ICMP 的报文格式 

关于报文格式, 并不打算重点关注,有个了解即可

ICMP 大概分为两类报文:

  •  一类是通知出错原因
  • 一类是用于诊断查询
类型(十进制数)内容
0回送应答(Echo Reply)
3目标不可达(Destination Unreachable)
4原点抑制(Source Quench)
5重定向或改变路由(Redirect)
8回送请求(Echo Request)
9路由器公告(Router Advertisement)
10路由器请求(Router Solicitation)
11超时(Time Exceeded)
17地址子网(Address Mask Request)
18地址子网应答(Address Mask Reply)

ping 命令

  •  注意, 此处 ping 的是域名, 而不是 url! 一个域名可以通过 DNS 解析成 IP 地址
  • ping 命令不光能验证网络的连通性, 同时也会统计响应时间和 TTL(IP 包中的 Time To Live, 生存周期).
  • ping 命令会先发送一个 ICMP Echo Request 给对端;
  • 对端接收到之后, 会返回一个 ICMP Echo Reply;

一个值得注意的坑 

有些面试官可能会问: telnet 是 23 端口, ssh 是 22 端口, 那么 ping 是什么端口?

ping 命令基于 ICMP, 是在网络层. 而端口号, 是传输层的内容. 在 ICMP 中根本就不关 注端口号这样的信息.

traceroute 命令

也是基于 ICMP 协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少 路由器.

附录:

  • 关于域名,我提问 AI 的问题列表,非技术问题,但是有助于理解域名解析: https://yiyan.baidu.com/share/YAWkPiO7ER

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信开发者工具:音乐小程序报错

报错信息 GET http://localhost:3000/1.mp3 net::ERR CONNECTION REFUSED (env: Windows,mp,1.06.2303220;lib:3.6.0) 原因&#xff1a;小程序没有直接获取本地文件&#xff0c;为了提高访问速度&#xff0c;而采用放到网络服务器中网络访问的方式获取文件内容 解决办法&#…

测试主分支

测试主分支 输入汉字圆点.字母md有点别扭&#xff0c;以后锁定大小写&#xff0c;用.MD后缀 添加一行文字试试能不能自动从gitee同步到github 声明&#xff1a;本文使用八爪鱼rpa工具从gitee自动搬运本人原创&#xff08;或摘录&#xff0c;会备注出处&#xff09;博客&#…

JMeter如何设置HTTP代理服务器?

1、 2、添加线程组 3、设置HTTP代理服务器&#xff0c;目标控制器选择“测试计划>线程组” 过滤掉不需要的信息 4、设置电脑手动代理 5、点击启动&#xff0c;在浏览器操作就可以了

通过matlab建立excel,A1中输入F1,A2到A4为空。A5为F2,A6到A8为空。A9为F3依次类推。每个4个单元格增加1次F序号

% 初始化元胞数组 numElements 4 * 10; % 总共的元胞数量&#xff0c;按照每4个单元格一个F值来计算 str cell(numElements, 1); % 创建一个numElements x 1的元胞数组 % 填充元胞数组 for i 1:4:numElements str{i} [F, num2str(ceil(i/4))]; % 计算F后面的序号&a…

OpenCV-物体跟踪

文章目录 一、物体跟踪的定义二、OpenCV中的物体跟踪算法三、OpenCV物体跟踪的实现步骤四、代码实现五、注意事项 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;它提供了丰富的功能来实现物体跟踪。以下是对OpenCV中物体跟踪的详细解释&#xff1a; 一、物体跟踪的…

QT 如何置顶窗口并激活

基本上&#xff0c;客户端软件都会有置顶某个窗口的需求。置顶窗口激活窗口&#xff0c;两者不是同一个问题。有时候窗口置顶了&#xff0c;并不代表该窗口属于激活状态。本文将尝试把这两个问题一起解决了&#xff0c;请看下文&#xff1a; 一、置顶窗口 通过函数setWindowF…

Ubuntu16.04安装openssl库

Ubuntu16.04安装openssl库 Chapter1 Ubuntu16.04安装openssl库 Chapter1 Ubuntu16.04安装openssl库 原文链接&#xff1a;https://blog.csdn.net/weixin_36584476/article/details/107321893 记录一下省得忘了 1.首先去openssl官网下载源码www.openssl.org/source/&#xff0…

进程同步、互斥

进程同步、互斥的基本概念 系统中的某些资源&#xff0c;虽然可以提供给多个进程使用&#xff0c;但一个时间段内只允许一个进程访问该资源。 我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备&#xff08;比如摄像头、打印机&#xff09;都属于临界资源…

python爬虫加解密分析及实现

第一种&#xff1a; 1、找到加密的接口地址&#xff0c;通过加密的接口地址全局搜索 2、通过打断点的方式&#xff0c;操作页面&#xff0c;跑到断点处时&#xff0c;即可找到加密串&#xff0c;如图二&#xff1b; 3、找到用的是哪种加密方式&#xff0c;如&#xff1a; cr…

Unity Apple Vision Pro 保姆级开发教程-准备阶段

视频教程&#xff1a; Unity PolySpatial 开发Apple Vision Pro教程, 三十分钟快速了解 Unity Vision Pro 中文课堂教程地址&#xff1a; Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 开发Apple Vision Pro 使用原生开发和unity 开发有什么区别 如果你的项目需要…

python【装饰器】

装饰器&#xff08;decorators&#xff09;是 Python 中的一种高级功能&#xff0c;它允许动态地修改函数或类的行为。装饰器也称装饰函数&#xff0c;是一种闭包的应用&#xff1a;它接受一个函数作为参数&#xff0c;并返回一个新的函数或修改原来的函数。 基本语法 其主要是…

解决方案:总结描述下知识蒸馏、量化、剪枝的区别

文章目录 一、现象二、解决方案 一、现象 在算法中&#xff0c;时而会听到知识蒸馏、量化、剪枝这三个专业名词&#xff0c;进行记录 二、解决方案 知识蒸馏&#xff1a;一般将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来&#xff0c;传递给参数量小、学习能力弱…

LSTM反向传播及公式推导

先回顾一下正向传播的公式: 化简一下: 反向传播从下到上逐步求偏导: 对zt求偏导(预测值和标签值相减): zt对未知数wt,ht,bt分别求偏导: ht对ot,Ct求偏导: ot对Net0求偏导: Net0对w0,b0求偏导: .... 总体的思路就是那个公式从下到上逐步对未知数求偏导: 下面是总体的流程…

docker 资源限制+调优详解

容器资源限制介绍 下面我将详细讲解 Docker 的各种资源限制及其在生产环境中的实际应用案例。我们将逐一探讨 CPU、内存、磁盘 I/O 和网络带宽的限制&#xff0c;并提供具体的配置示例和解释。 1. CPU 限制 1.1 设置 CPU 份额 --cpu-shares&#xff1a;设置容器的 CPU 优先…

Nginx介绍+openresty配置

参考&#xff1a;资源下载 Nginx介绍openresty配置 nginx使用场景 1.什么是nginx性能高,官方测试5万并发连接;对cpu 内存资源消耗很低,而且运行非常稳定 免费 开源2.nginx应用场景1.http服务器静态资源 图片 js css 2.虚拟主机"虚拟"出多个主机, 域名80 www…

【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;心智理论(Theory of Mind,ToM)心智理论在心理学与神经科学中的重要性心智理论对理解同理心、道德判断和社交技能的重要性结论 &#x1f4af;乌得勒支大学研究对ChatGPT-4…

设计一个多格式文件压缩与解压系统

设计一个多格式文件压缩与解压系统 在现代软件开发中,文件压缩和解压缩是一个常见且重要的需求。无论是为了节省存储空间,还是为了提高文件传输的效率,掌握文件压缩和解压缩的技术都是每个开发者必备的技能。本文将详细介绍如何设计一个支持多种压缩格式的文件压缩和解压系…

【C++篇】类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略

文章目录 前言 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

redhat系列的yum源配置

一、Linux更改yum源为阿里云源 一&#xff09;原yum源备份 cp -rp /etc/yum.repos.d/CentOS-Base.repo{,.bak} cp -rp /etc/yum.repos.d/epel.repo{,.bak} 二&#xff09;更改为阿里云源  1、更改yum base源 下载新的CentOS-Base.repo 到/etc/yum.repos.d/ http://mirrors.al…

Android中的IntentService及其作用。

在Android开发中&#xff0c;处理后台任务是一个常见的需求。为了保证应用的流畅性和响应性&#xff0c;许多耗时操作需要在后台线程中执行。然而&#xff0c;直接管理后台线程可能会变得复杂且容易出错。为了简化这一过程&#xff0c;Android提供了IntentService&#xff0c;一…