透析ICMP协议(一): 协议原理

ICMP协议详解 icmp图文详解,感兴趣的同学,请花5分钟时间弄懂icmp协议。 阅读详情

透析ICMP协议(一): 协议原理
===============================
这篇文章原创自bugfree/优快云
平台: VC6 Windows XP


ICMP简介:
--------

对于熟悉网络的人来说, ICMP是再熟悉不过了. 它同IP协议一样工作在ISO模型的网络层, 它的全称是: Internet Control Message Protocal.  其在网络中的主要作用是:
 - 主机探测
 - 路由维护
 - 路由选择
 - 流量控制

我主要围绕主机探测来讲解如下的几篇文章:
 - 透析ICMP协议(一): 基础知识
     协议原理
 - 透析ICMP协议(二): 函数简介
     Windows Socket 简介
 - 透析ICMP协议(三): 牛刀初试之一
     应用篇ping(ICMP.dll) 
 - 透析ICMP协议(四): 牛刀初试之二
     应用篇ping(RAW Socket)
 - 透析ICMP协议(五):
     应用篇路由追踪

对于主机探测来说有很多方法,主机某些服务的BANNER,一些使用的应用程序,或者使用工具来检测主机,如NMAP,在WEB上有www.netcraft.com来简单的估测主机。下面所讲的是使用ICMP协议来探测主机,主要也是可以了解ICMP这个协议,这里最主要的也是将这个ICMP协议,

首先我来讲一下主机探测用到的ICMP报文:(我没有一一讲全部报文,详细请参见RFC792协议)

1. 回送或回送响应

  我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO(Type 8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。  如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到.

回送消息的源地址是回送响应消息的目的地址。若要形成一个回送响应消息,应该将源和目的地址交换,将类型代码更改为0,重新计算机校验码。

下面是这个报文的格式:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type        |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Identifier            |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Data ...
   +-+-+-+-+-

类型:
 8代表回送消息;
 0代表回送响应消息。
代码:0
校验码:
 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在 以后会被校验码取代。
标识符:如果代码=0,帮助匹配回送和回送响应的代码可以为0。
序列码:如果代码=0,帮助匹配回送和回送响应的序列码可以为0。
说明:
 回送消息中接收到的消息应该在回送响应消息中返回。标识符和序列码由回送发送者使用帮助匹配
 回送请求的响应。代码: 从主机或网关接收0


2. 超时报文

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             unused                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Internet Header + 64 bits of Original Data Datagram      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
类型:11
代码:
 0 = 传送超时;
 1 = 分段级装超时。
校验码:
 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。
 这些零在以后会被校验码取代。
Internet包头+64位源数据报数据:
 Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
 如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
说明:
 如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃。网关同时必须通过超
 时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装数据,
 此数据报必须抛弃。网关发送超时信息。
 如果段零不可用则不用发送超时信息。
 代码0由网关发送,代码1由主机发送。

 

3. 目标主机不可达报文

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             unused                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Internet Header + 64 bits of Original Data Datagram      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
类型:3
代码:
 0 = 网络不可达;
 1 = 主机不可达;
 2 = 协议不可用;
 3 = 端口不可达;
 4 = 需要段和DF设置;
 5 = 源路由失败;

校验码:
 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。
 这些零在以后会被校验码取代。
Internet包头+源数据报:
 Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
 如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
说明:
 相应于网关的路由表,如果在目的域中指定的网络不可达,如网络距离为无限远,网关会向发送
 源数据的主机发送目的不可达消息。而且,在一些网络中,网关有能力决定目的主机是否可达。
 如果目的地不可达,它将向发送源数据的主机发送不可达信息。
 在目的主机,如果IP模块因为指定的协议模块和进程端口不可用而不能提交数据报,目的主机将
 向发送源数据的主机发送不可达信息。

 另外一种情况是当数据报必须被分段传送,而“不可分段”位打开,在这种情况下,网关必须抛弃
 此数据报,并向向发送源数据的主机发送不可达信息。

 代码0,1,4和5由网关发送,而代码2和3由主机发送。

链接:
-------
我的其它文章,<<透析ICMP协议>>, 和其它文章参见:
http://www.youkuaiyun.com/develop/author/netauthor/bugfree/

透析ICMP协议(五): 应用篇路由追踪
透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)
透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)
透析ICMP协议(二): Windows Socket 简介
透析ICMP协议(一): 协议原理 

联系方式:
-------
 zhangliangsd@hotmail.com


 

通讯协议,网络通讯协议基本原理透析 文章目录通讯协议TCP/IP协议TCP/IP模型osi版基本版应用层传输层网络层数据链层 通讯协议 我们想要进⾏数据通讯分⼏步? 1、找到对⽅ip 2 、数据要发送到对⽅指定的应⽤程序上。为了标识这些应⽤程序,所以给这些 ⽹络应⽤程序都⽤数字进⾏了标识。为了⽅便称呼这个数字,叫做 端⼝。这⾥ 的端⼝ 我们⼀般都叫做 ‘逻辑端⼝’ 3、 定义通讯规则。这个通讯规则我们⼀般称之为协议 通讯协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及 阅读详情

相关推荐

STM32CubeMX Nucleo F767ZI 教程(1)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 官网上买了个NUCLEO F767ZI 的开发板,144引脚的芯片,https://www.st.com/content/st_com/zh/products/evaluation-tools/prod

fafuwxm 2028

ICMP网际控制报文协议

• IP 是一种不可靠的,无连接的数据报传输协议,提供了一种尽力而为的点到点数据传输服务,但不能保证所有数据报都可以成功地从信源到达信宿。为此人们在网络层(也称为 IP 层)引入了另外一种协议 ——* 网际控制报文协议( Internet Control Message Protocol , ICMP )来实现 IP 层数据报传输过程中的差错控制。通过 ICMP 配合 IP 的使用,提高了数据报传递的成功率。

CaiTianLan的博客 1967

STM32驱动2.8寸TFTLCD屏幕实战:从看懂原理图到点亮第一个像素(基于ILI9341)

本文详细介绍了如何使用STM32驱动2.8寸TFTLCD屏幕(基于ILI9341驱动芯片),从硬件连接到软件配置,包括FSMC接口设置、ILI9341初始化序列、坐标设置及基础绘图函数实现。文章还提供了常见问题排查指南和性能优化技巧,帮助开发者快速解决屏幕不亮等问题,并提升显示性能。

weixin_42665255的博客 267

网络ICMP 协议详解

ICMP 的全称是Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。

白话机器学习 2万+

AI编程实战:用Spec Coding与Codex半小时重构全栈项目

这次我们来看一个能显著提升全栈开发效率的实战方法:利用 AI 编程工具 Codex 和 Spec Coding 工作流,将原本需要数周甚至一个月的全栈项目重构工期,压缩到半小时级别。这不是概念探讨,而是基于现有工具链的、可立即上手的工程实践。 对于前端开发者或全栈工程师而言,面对老旧项目重构、技术栈升级或从零搭建新项目时,最大的痛点往往是重复性、模式化的代码编写工作。手动编写 CRUD 接口、页面组件、状态管理和联调测试,耗时费力且容易出错。而 AI 辅助编程的核心价值,正是在于将开发者从这些“体力活”中解

weixin_33525298的博客 290

基于FPGA低频方波测量-频率与占空比

基于FPGA低频方波测量-频率与占空比

DRAXY的博客 6732

ICMP协议

ICMP(Internet Control Message Protocol)网际控制报文协议。它是TCP/IP协议簇的一个子协议,ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用,ICMP属于网络层协议。

Naive的博客 5239

电路保护设计实战:保险丝选型、I²t计算与多级协同方案

电路保护是电子系统可靠性的基石,其核心原理是在发生过流或过压等异常情况时,及时切断故障回路,防止能量持续灌入导致元器件损坏甚至安全事故。从技术价值看,优秀的保护设计能显著提升产品寿命、安全性和市场口碑,尤其在快充、电动汽车等高功率密度应用中,保护器件已成为不可或缺的安全屏障。在众多保护器件中,保险丝作为最基础的过流保护元件,其正确选型与应用直接关系到保护效果。本文聚焦于保险丝选型的实战细节,深入解析了I²t(电流平方时间积)这一关键参数,它定义了熔断所需的能量阈值,是匹配被保护半导体器件耐受能力、实现有效保

weixin_42662171的博客 309

透析ICMP协议(五): 应用篇路由追踪

透析ICMP协议(五):  应用篇路由追踪===============================这篇文章出自bugfree/优快云平台: VC6 Windows XP 这篇文章本应该在三天之前写完, 但是由于众所周知的原因, 我在北大bbs上转了三天, 所以这么迟才发出. 由于的懒惰导致对大家的不便, 我表示深深的道歉.原理简介:--------    通过前四节的介绍, 可能大

1743

激光雷达的64线,32线,16线,你弄懂了吗?

激光雷达的 64 线、32 线、16 线是指激光雷达系统中能够同时发射和接收激光脉冲的激光线的数量5。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 2637

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

写研究目标时,先明确研究问题,直接回应前文提到的研究缺口,如 “This study aims to investigate whether X modulates Y via the Z pathway in human cells.”然后再提出你的研究假设,当理论依据清晰时,可以用如 “We hypothesized that inhibiting X would rescue Y deficiency in this model.”的句子点出研究目标。要求:1)明确陈述本研究拟解决的核心科学问题;

智能AI让学术科研更容易 180

透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)

透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll) ===============================这篇文章出自:http://tangentsoft.net/wskfaq/examples/dllping.html翻译: bugfree/优快云, 对原始代码加了些注释平台: VC6 Windows XP 原理简介:--------这个例子演示了应用微软

1729

大厂校招:星宸科技嵌入式面试及参考答案(5万字长文)

当一个新的硬件设备被插入系统时,内核会发送一个设备事件通知 udev,udev 会根据设备的属性和规则,为该设备创建一个合适的设备文件。通过去除不必要的驱动程序、禁用不需要的功能、选择合适的内核配置选项、优化内核编译选项和定制内核模块等方法,可以减小内核的大小和复杂性,提高系统的性能和稳定性。上半部通常是在中断关闭的情况下执行的,以确保中断处理的原子性。处理碎片化内存是内存管理中的一个重要问题,可以采用内存压缩、内存池管理、伙伴系统、首次适应算法和最佳适应算法等方法来减少内存碎片的产生,提高内存的利用率。

大模型大数据攻城狮的专栏 2927

透析ICMP协议

透析ICMP协议(一): 协议原理 对于熟悉网络的人来说, ICMP是再熟悉不过了. 它同IP协议一样工作在ISO模型的网络层, 它的全称是: Internet Control Message Protocal. 其在网络中的主要作用是: - 主机探测 - 路由维护 - 路由选择 - 流量控制 ...

weixin_34037977的博客 246

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)

透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)===============================这篇文章出自bugfree/优快云平台: VC6 Windows XP 今晚一杯茶水之后, 让我们继续我们的ICMP讨论, 今晚介绍的是用RAW Socket 实现的ping程序.原理简介:--------  用RAW Socket实现的ping可能

2707

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)

 透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll) ===============================这篇文章出自:http://tangentsoft.net/wskfaq/examples/dllping.html翻译: bugfree/优快云, 对原始代码加了些注释平台: VC6 Windows XP 原理简介:--------这个例子演示了应

l00109503的专栏 370

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

网络传输协议原理透析

网上对OSI参考模型的讲解比较多,但是看起来总还是没法有个完整的记忆。 为了全面透析网络传输,遂总结这篇笔记,留后续查阅。 名词解释: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),是一种概念模型。 讲到协议就得了解下OSI 7层网络模型: 应用层 :FTP,W...

荆棘ing的专栏 854
上一篇: HTTP 隧道 (HTTP代理Socket客户)
下一篇: C#学习笔记之五(ADO.net)
bugfree
博客等级 码龄24年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值