【Linux网络与网络编程】15.DNS与ICMP协议
1. DNS
1.1 DNS介绍
TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序,但是 IP 地址不方便记忆,于是人们发明了一种叫主机名的字符串,并使用 hosts 文件来描述主机名和 IP 地址的关系。最初, 通过互连网信息中心(SRI-NIC)来管理这个 hosts 文件的。
但是如果一个新计算机要接入网络或者某个计算机 IP 变更,都需要到信息中心申请变更 hosts 文件。其他计算机也需要定期下载更新新版本的 hosts 文件才能正确上网,这样就太麻烦了,于是产生了 DNS 系统。一个组织的系统管理机构,维护系统内的每个主机的 IP 和主机名的对应关系。如果新计算机接入网络,将这个信息注册到数据库中。当用户输入域名时,会自动查询 DNS 服务器,由 DNS 服务器检索数据库,得到对应的 IP 地址。至今, 我们的计算机上仍然保留了 hosts 文件,在域名解析的过程中仍然会优先查找 hosts 文件的内容。
DNS是基于UDP协议的一整套从域名映射到IP的系统。
1.2 域名解析过程
如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我 们所熟知的.com、.net、.cn 等通用域和.cn、.uk 等国家域组成,称为顶级域。网上注册的域名基本都是二级域名,比如 http://baidu.com、http://taobao.com 等等二级域 名,它们基本上是归企业和运维人员管理。
1.3 使用dig工具分析DNS过程
caryon@ALiClode:~$ dig www.baidu.com; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7183
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.baidu.com. IN A;; ANSWER SECTION:
www.baidu.com. 916 IN CNAME www.a.shifen.com.
www.a.shifen.com. 61 IN A 220.181.111.1
www.a.shifen.com. 61 IN A 220.181.111.232;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Jun 24 20:39:12 CST 2025
;; MSG SIZE rcvd: 101
1.4 DNS缓存
在 Windows 系统中,可以使用 ipconfig /displaydns 命令来查看系统级别的 DNS 缓存
浏览器中输入url后发生的事情有什么?
1. 浏览器会将url解析出协议类型、域名、端口号和请求的资源所在路径。
2. DNS会对域名经行解析,先在缓存中查找,如果没有就要从根域名进行解析,将其转换为IP
3. 浏览器通过三次握手与服务器建立TCP连接,如果是https协议还需要进行TLS握手
4. 到此,浏览器就可以向服务端发起http请求
5. 服务端对浏览器的请求做出应答
6. 浏览器根据服务端的应答对界面做出渲染
2. ICMP协议
一个新搭建好的网络,往往需要先进行一个简单的测试来验证网络是否畅通,但是 IP 协议并不提供可靠传输,如果丢包了,IP 协议并不能通知传输层是否丢包以及丢包的原因。ICMP 协议正是一个提供这种检测功能的网络层协议。
ICMP协议可以确认 IP 包是否成功到达目标地址或者通知在发送过程中 IP 包被丢弃的原因。ICMP 也是基于 IP 协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议。ICMP 只能搭配 IPv4 使用,如果是 IPv6 的情况下,需要使用 ICMPv6
2.1 ICMP的报文格式
ICMP 大概分为两类报文: 一类是通知出错原因 一类是用于诊断查询
2.2 ping命令
caryon@ALiClode:~$ ping baidu.com
PING baidu.com (182.61.201.211) 56(84) bytes of data.
64 bytes from 182.61.201.211: icmp_seq=1 ttl=54 time=6.60 ms
64 bytes from 182.61.201.211: icmp_seq=2 ttl=54 time=6.59 ms
64 bytes from 182.61.201.211: icmp_seq=3 ttl=54 time=6.60 ms
64 bytes from 182.61.201.211: icmp_seq=4 ttl=54 time=6.58 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 6.582/6.593/6.604/0.009 ms
ping 命令不光能验证网络的连通性,同时也会统计响应时间和 TTL(IP 包中的 Time To Live, 生存周期)。
ping命令的工作原理
ping命令是基于ICMP协议的。ping 命令会先发送一个 ICMP Echo Request 给对端,对端接收到之后会返回一个 ICMP Echo Reply
2.3 traceroute 命令
traceroute 命令也是基于 ICMP 协议实现,能够打印出可执行程序主机,一直到目标主机之前经历多少路由器。
caryon@ALiClode:~$ traceroute baidu.com
traceroute to baidu.com (182.61.244.181), 30 hops max, 60 byte packets1 10.92.211.46 (10.92.211.46) 0.625 ms 0.653 ms 10.92.209.70 (10.92.209.70) 0.753 ms2 11.73.19.161 (11.73.19.161) 1.622 ms 11.73.19.137 (11.73.19.137) 11.829 ms 11.73.75.182 (11.73.75.182) 5.736 ms3 10.102.242.177 (10.102.242.177) 0.900 ms 10.216.138.42 (10.216.138.42) 9.601 ms 10.216.138.186 (10.216.138.186) 1.676 ms4 10.216.223.218 (10.216.223.218) 1.945 ms * 10.216.231.238 (10.216.231.238) 2.225 ms5 10.102.155.110 (10.102.155.110) 2.145 ms 10.102.154.230 (10.102.154.230) 2.866 ms 116.251.112.189 (116.251.112.189) 2.511 ms6 * * *7 61.148.154.113 (61.148.154.113) 3.996 ms 125.33.185.101 (125.33.185.101) 3.825 ms 3.600 ms8 bt-229-110.bta.net.cn (202.106.229.110) 4.319 ms 61.51.114.190 (61.51.114.190) 4.461 ms 61.51.114.198 (61.51.114.198) 4.690 ms9 220.206.193.182 (220.206.193.182) 5.410 ms 220.206.193.186 (220.206.193.186) 5.500 ms 220.206.193.182 (220.206.193.182) 5.882 ms
10 * 182.61.255.70 (182.61.255.70) 5.472 ms 182.61.255.74 (182.61.255.74) 6.164 ms
11 182.61.255.101 (182.61.255.101) 22.522 ms 182.61.217.169 (182.61.217.169) 22.098 ms 182.61.238.157 (182.61.238.157) 21.677 ms
12 182.61.251.166 (182.61.251.166) 21.462 ms 182.61.250.228 (182.61.250.228) 27.591 ms 182.61.250.232 (182.61.250.232) 37.304 ms
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
相关文章:
【Linux网络与网络编程】15.DNS与ICMP协议
1. DNS 1.1 DNS介绍 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序,但是 IP 地址不方便记忆,于是人们发明了一种叫主机名的字符串,并使用 hosts 文件来描述主机名和 IP 地址的关系。最初, 通过互连网信息中心(SRI-NIC)来…...
Python训练营-Day40-训练和测试的规范写法
1.单通道图片训练 # import torch # import torch.nn as nn # import torch.optim as optim # from torchvision import datasets, transforms # from torch.utils.data import DataLoader # import matplotlib.pyplot as plt # import numpy as np# # 设置中文字体支持 # plt…...
【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
内存泄漏和内存溢出的区别
内存泄漏(Memory Leak)和内存溢出(Memory Overflow / Out Of Memory, OOM)是软件开发中两个密切相关但又本质不同的内存问题: 核心区别一句话概括: 内存泄漏: 有垃圾对象占用内存却无法被回收&…...
Linux系统---Nginx配置nginx状态统计
配置Nignx状态统计 1、下载vts模块 https://github.com/vozlt/nginx-module-vts [rootclient ~]# nginx -s stop [rootclient ~]# ls anaconda-ks.cfg nginx-1.27.3 ceph-release-1-1.el7.noarch.rpm nginx-1.27.3.tar.gz info.sh …...
linux操作系统的软件架构分析
一、linux操作系统的层次结构 1.内核的主要功能 1)进程管理 2)内存管理 3)文件系统 4)进程间通信、I/O系统、网络通信协议等 2.系统程序 1)系统接口函数库,比如libc 2)shell程序 3)编译器、编辑…...
快速手搓一个MCP服务指南(三):FastMCP的核心组件-构建MCP服务的关键技术实现
FastMCP 是一套面向 LLM 应用开发的工具框架,通过标准化协议衔接大语言模型与外部功能组件,构建「LLM工具」的闭环交互体系。其核心技术体系包含四大模块:工具系统将 Python 函数转化为 LLM 可调用的能力单元,通过类型注解实现参数…...
创建首个 Spring Boot 登录项目
📌 摘要 在 Java Web 开发中,登录功能是最基础也是最重要的模块之一。本文将手把手带你使用 IntelliJ IDEA 和 Maven 构建一个基于 Spring Boot 的简单登录系统,涵盖: 使用 IDEA 创建 Spring Boot 项目配置 Maven 依赖ÿ…...
order、sort、distribute和cluster by(Spark/Hive)
1. abstract ORDER BY:完整查询结果的全局行排序。与SORT BY、CLUSTER BY、DISTRIBUTE BY互斥,不能同时使用。 示例SELECT * FROM table_name ORDER BY column_name;SORT BY:只在每个分区内排序,局部排序结果不是全局有序。与ORD…...
# Python中等于号的使用
# Python中等于号的使用 ## 1. 问题的分析与思考 在Python中,等于号()是一个赋值运算符,用于将右侧的值或表达式的结果赋给左侧的变量。这是Python(以及许多其他编程语言)中非常基础且核心的一个概念。理…...
无人机神经网络模块运行与技术难点
一、神经网络模块的运行方式 1. 分层处理架构 感知层 多模态数据融合:通过八元数卷积网络(OCNN)统一处理LiDAR、摄像头、IMU等异构传感器数据,将点云坐标(x/y/z)、图像RGB与光流信息编码至8维虚部&#…...
宝塔服务器调优工具 1.1(Opcache优化)
第一步:宝塔服务器调优工具 1.1(按照下面的参数填写) 第二步:路径/www/server/php/80/etc/php.ini 搜索jit jit1235 其中1235根据服务器情况修改 第三步:路径/www/server/php/80/etc/php-cli.ini 搜索 jit1235 其中…...
day041-web集群架构搭建
文章目录 0. 老男孩思想-高薪四板斧1. web集群架构图2. 搭建异地备份服务2.1 服务端-阿里云服务器2.1.1 查看rsync软件包2.1.2 添加rsync配置文件2.1.3 添加虚拟用户2.1.4 创建校验用户密码文件2.1.5 创建备份目录2.1.6 启动服务2.1.7 开放安全组端口2.1.8 发送检查邮件 2.2 客…...
国产化条码类库Spire.Barcode教程:如何使用 C# 读取 PDF 中的条码(两种方法轻松实现)
在 PDF 文档的 .NET 平台处理流程中,使用 C# 读取 PDF 条码 是一项常见需求,特别适用于处理扫描件或电子表单。无论是物流、金融、医疗还是制造行业,PDF 文档中经常包含用于追踪或识别的条码。这些条码可能是嵌入图像,也可能是矢量…...
vue 3 计算器
效果: <template><div class"calculator-container"><div class"calculator"><!-- 显示区域 --><div class"display">{{ formattedDisplay }}</div><!-- 按钮区域 --><div class"…...
CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
一.介绍 CRMEB多店版是一款为品牌连锁门店打造的私域电商解决方案,以三大运营模式为核心,助力品牌连锁门店轻松构建全渠道、一体化的私域电商生态,促进“线上电商”与“线下门店”销售运营融合,加速品牌数字化转型,为…...
主机复制文字和文件到 Ubuntu 虚拟机
在 VMware Workstation Pro 16 中复制文字和文件到 Ubuntu 虚拟机,方法如下: Open-VM-Tools 禁用 Wayland 解决 。 1.安装 VMware Tools(推荐)或 open-vm-tools: sudo apt update sudo apt install open-vm-tools…...
性能测试 —— 数据库的连接池和主从同步和分表分区
一、数据库的调优(库层面) 1、数据库连接池 1、介绍:数据库连接池(Database Connection Pool)是一种用于管理数据库连接的技术,它通过预先创建并维护一组数据库连接来提高应用程序的性能和可扩展性。 2、创建、管理、关闭 数据…...
猿人学js逆向比赛第一届第十二题
一、分析请求 看到这里只有一个m的密文参数,没有cookie,请求头等其他的参数,那么这里跟一堆栈信息。 很顺利地锁定了m的加密位置。看到是字符串拼接然后使用btoa函数进行编码,那么这里尝试使用Python复现一下。顺利拿到结果。 复现…...
第十节 新特性与趋势-CSS层叠规则升级
以下是关于 CSS层叠规则升级 的全面解析,结合最新规范(如级联层layer)和传统层叠机制的演进,从核心原理、应用场景到实践策略的系统性总结: 一、传统层叠规则的三大支柱 CSS层叠规则的传统机制基于以下三个维…...
关键领域软件工厂的安全中枢如何全面升级供应链检测能力
随着软件供应链安全体系在互联网、金融等领域逐步成熟,关键领域正加速迈向以 MLOps、软件工厂为核心的新型研发生态。在这一过程中,面对代码安全、依赖合规、系统可信等多重挑战,传统人工审查模式已难以满足国家级高安全性要求。 Gitee Scan…...
西门子G120XA变频器:数据中心能效革命的核心引擎
在数字经济爆发式增长的今天,数据中心已成为支撑社会运转的"数字心脏"。然而,其庞大的能耗需求与绿色低碳目标之间的矛盾日益凸显——尤其是冷却系统作为数据中心第二大能耗单元(占比约35%),正成为能效提升的…...
从零开始学习Spring Cloud Alibaba (一)
人狠话不多,直接开始少点屁话本着共同学习进步的目的和大家交流如有不对的地方望铁子们多多谅解 准备工具 开发工具 idea Java环境 jdk17 容器: docker Maven 3.8.6 仓库镜像阿里云 <mirror><id>alimaven</id><name>aliyun maven</name><…...
【C/C++】C++ 编程规范:101条规则准则与最佳实践
C 编程规范:101条规则准则与最佳实践 引言 C 是一门强大而复杂的语言,能高效控制硬件,也能写出优雅抽象。然而,正因其复杂性,项目中若缺乏统一规范,极易陷入混乱、难维护、易出错的泥潭。 本文总结了 10…...
PyTorch topk() 用法详解:取最大值
torch.topk(input, k) 返回张量中最大的 k 个元素以及它们在原张量中的 索引。 函数原型 torch.topk(input, k, dimNone, largestTrue, sortedTrue)参数说明: 参数说明input输入张量k要取出的前 k 个值dim指定沿哪个维度取值(默认是最后一维ÿ…...
毕业论文查重原理及降重方法
【30%的重复率有那么重要吗?】 老师说论文重读率必须低于30%,否则无法毕业! 如果您在专科或者普通本科学生,我只能这样一句话告诉你:你想多了~, 真的想多了~~~,一篇论文还不至于让你不能毕…...
Golang Kratos 系列:业务分层的若干思考(二)
上一篇文章简单讨论了领域层在Kratos中的使用,主要涉及引入领域层,将数据层和业务层之间的解耦,接下来讨论一个稍微全面一点的例子,在此基础上引入外部Api(主要是易变部分)的领域层下的情况。 我们同样可以…...
技术伦理之争:OpenAI陷抄袭风波,法院强制下架宣传视频
在AI巨头OpenAI宣布以65亿美元天价收购苹果前设计总监Jony Ive的硬件公司IO仅一个月后,一场抄袭指控将这家科技明星企业推上风口浪尖。 源自谷歌X实验室的初创企业IYO将OpenAI告上法庭,指控其窃取智能耳塞核心技术,并通过巨额收购试图掩盖抄袭…...
烟花爆竹生产企业库房存储安全风险预警系统
烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段,涵盖多个关键预警功能。 温湿度预警 在库房内安装温湿度传感器,这些传感器如同敏锐的“环境感知员”,能够实时监测库房内环境变…...
Jenkins+Jmeter+Ant接口持续集成
2025最新Jmeter接口测试从入门到精通(全套项目实战教程) 前言: 为什么要用Jmeter做接口测试: 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架?说…...
基于STM32的寻迹小车设计
标题:基于STM32的寻迹小车设计 内容:1.摘要 本文围绕基于STM32的寻迹小车设计展开。背景是随着自动化技术的发展,寻迹小车在工业巡检、物流运输等领域有广泛应用前景。目的是设计一款能稳定、准确寻迹的小车。方法上,以STM32微控制器为核心,…...
【150】基于SSM+Vue实现的小说阅读小程序(有文档)
系统介绍 基于SSMVue实现的小说阅读小程序采用前后端分离的架构方式,系统设计了管理员、用户两种角色,系统分为管理端、小程序端,管理端实现了管理员登录、个人中心、管理员管理、帮助中心管理、基础数据管理、论坛中心管理、公告资讯管理、…...
ValKey中使用SIMD指令优化bitcount命令
一、AVX/AVX2 的历史演进 随着计算机技术的飞速发展,数据处理需求呈指数级增长,SIMD(单指令多数据)技术应运而生。它通过一条指令同时处理多个数据元素,大幅提升计算效率,从早期的 MMX 技术起步࿰…...
leetcode114-二叉树展开为链表
leetcode 114 思路 用简单例子推导规律 不要一开始就看复杂的树,先从最简单的情况入手 案例一:只有一个节点 输入:1 输出:1不需要任何操作,直接返回 案例二:有两个节点 输入: 1/2输出&a…...
第七章 习题
1.给出下面表达式的逆波兰表示(后缀式): 3请将表达式-(ab)* (cd)-(abc)分别表示成三元式,间接三元式和四元式序列 四元式(Op,arg1,arg2,result) (,a,b,T1) (,c,d,T2) (*,T1,T2,T3) (uminus,T3,-,T4) (,a,b,T5) (,T5,c,T6) (-,T4,T6,r) 三元式 (op,arg1,arg2) (0) (,…...
Spring Ai Alibaba Graph实现五大工作流模式
Spring Ai Alibaba Graph实现五大工作流模式 概述 在 building-effective-agents 一文中,Anthropic将"智能体系统"(agentic systems),从架构层面分为 “工作流”(workflows)和 “智能体”(agents): 工作流…...
基于单片机的语音控制设计(论文)
摘要 自然语音作为人机交互在目前得以广泛的应用以及极大的发展前景。该设计介绍了基于非指定人语音芯片LD3320的语音控制器结构及其实现语音控制的方法。该语音控制器利用STM32F103C8T6单片机作为主要控制器,控制芯片对输入的进行语音识别并处理,根据语…...
【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战
从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark实战 在网络安全分析和数据通信的世界中,一切都始于“数据包”。数据包是网络上传输的基本单位,而数据包的结构与内容,正是我们理解网络行为的核心。本文将带你深入了解 IP 协…...
计算机组成原理笔记(公众号版本)
1.MAR,存储单元和PC位数之间的关系 我们的MAR位数取决于我们的存储单元的个数; PC位数也是取决于我们的存储单元的个数; 假设我们是64个存储单元,我们的这个MAR实际上就是6位,因为这个2的6次方等于我们的64吗&#…...
CPM基本原理
CPM(连续相位调制,Continuous Phase Modulation )是一种恒包络,信号相位随时间连续变化的调制技术 。其优势显著,连续相位特性,频谱效率高,对带外辐射抑制好;相位平滑过渡࿰…...
浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
在为移动端 App 接入在线客服系统的过程中,我经历了长时间的技术选型探索。最初,我也曾被一些“技术理想主义”选项所吸引,比如让用户自己研发界面我提供 API 以获得最高自由度,或集成 SDK 以追求原生体验。然而,随着项…...
AutoGPT,自主完成复杂任务
AutoGPT是一个开源的AI Agent项目,它的核心目标是让AI能够自主完成复杂任务,而不仅仅是回答单个问题。简单来说,它让AI具备了"自主思考和行动"的能力。 1. AutoGPT的核心概念 什么是AI Agent? AI Agent(智…...
基于Qt C++的影像重采样批处理工具设计与实现
摘要 本文介绍了一种基于Qt C++框架开发的高效影像重采样批处理工具。该工具支持按分辨率(DPI) 和按缩放倍率两种重采样模式,提供多种插值算法选择,具备强大的批量处理能力和直观的用户界面。工具实现了影像处理的自动化流程,显著提高了图像处理效率,特别适用于遥感影像处…...
Qt Windows平台调用ffmpeg动态库
本文基于QT6.8实测验证。 一、下载预编译库 从官方或第三方源获取FFmpeg的Windows动态库(Shared版本),解压后需包含以下目录: bin DLL文件(运行时依赖)include 头文件lib .lib或.dll.a链接…...
猿人学js逆向比赛第一届第十三题
一、分析请求 通过分析请求得知,本题目的参数为yuanrenxue_cookie,因为题目中中明说了是动态cookie,所以可以先删除这个cookie然后下脚本断点,简单分析看一下页面执行的js代码逻辑。 在经过这段代码的时候很明显的可以看到这里的有…...
React性能优化精髓之一:频繁setState导致滚动卡顿的解决方案
在开发一个 List 页面时,我们遇到了一个典型的React性能问题:页面在滚动时出现明显卡顿。这个问题的调试过程充满了误判和重新思考,最终发现了一个重要的性能优化原则。 问题现象 我们有一个监控仪表盘页面,包含多个图表组件。用…...
JavaScript 事件常用属性
一、事件对象基础 在事件处理函数中,浏览器会自动传入一个 event 对象,它包含了与事件相关的所有信息。 element.addEventListener(click, function(event) {// event 是事件对象 }); 二、常见事件属性 属性名 类型 描述 type String 事件类…...
配置自己的NTP 服务器做时间同步
✅ 推荐方案:使用 chrony 搭建 NTP 服务器(适用于 CentOS 7/8/9) chrony 是 CentOS 推荐的 NTP 实现,精度高、资源占用低、同步快,默认在 CentOS 8 中取代了 ntpd。 🔧 一、安装 chrony sudo yum install…...
基于深度学习的双色球智能预测系统:从原理到实现
需要源码的小伙伴可以在这里直接下载:基于深度学习的双色球智能预测系统:从原理到实现(完整代码训练数据)可直接运行-预测)资源-CSDN下载可直接运行,包括完整的训练测试数据,让你的双色球更准&a…...
STM32[笔记]--4.嵌入式硬件基础
4.嵌入式硬件基础 4.1认识上官二号开发板 主控芯片:STM32F103C8T6高速晶振:8M低速晶振:32.768kLED:5颗KEY:3个 主控芯片内部的资源如下项目介绍内核Cortex-M3Flsah64K*8bitSRAM20K*8bitGPIO37个GPIO,分别为PA0-PB15,PC13-PC15,PD0-PD1ADC2个12bitADC合计12了通道,外部通…...