| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> ICMP协议个人分析 -> 正文阅读 |
|
[系统运维]ICMP协议个人分析 |
Internet控制消息协议CMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理非常熟悉。 ICNP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错、控制、查询等信息,也就是=ping ICMP重定向 ?我们PC主机端都有网关,例如主机A网关是100,他要发送报文首先向他的网关路由器打招呼,喊他帮忙整一整,RTB得和他连接得接口ip就是100,所以第一个找他,RTB检查报文信息发现不是找他,而是找他同网段的另一台网关设备,所以RTB会向主机发送redirect(重定向)消息,让他去找200的RTA,RTA则会将报文转发给服务器A。 ICMP差错检测 ICMP Echo Request和ICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。? 主机A向服务器A发送报文为请求报文,也就是request? ? ? ? 服务器收到要回复,称为reply 简单来讲,抓包出来的报文,有请求,有回复的就是能够连接的,如果只有请求没有回复就是没链接对。 正常 ?错误 ?ICMP错误报告 当网络设备无法访问目标网络时,会自动发送CMP目的不可达报文到发送端设备 ?ICNP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,主机A可以判断出数据传输失败的原因。比如,如果网络中发生了环路,导致报文在网络中循环,且最终TTL超时,这种情况下网络设备会发送TTL超时消息给发送端设备。又比如如果目的地不可达,则中间的网络设备会发送目的不可达消息给发送端设备。目的不可达的情况有多种,如果是网络设备无法找到目的网络,则发送目的网络不可达消息;如果网络设备无法找到目的网络中的目的主机,则发送目的主机不可达消息。 ICMP数据包格式 这里只是说ICMP数据包的格式,type表示数据包类型,code表示同一类型中不同的信息 checksum也就是校验,用于检查消息是否完整,消息中包含32比特的可变参数,checksum字段一般不使用 ?再ICMP的Redirect消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到网关。在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进行关联。尤其是当源端问目的端发送了多个Echo诘求消息时,需要根据标识符和序号将Echo诘求和回复消息进行——对应。 ICMP消息类型和编码类型 ? 怎么再实际上用到呢,当然是抓包咯 ?抓了个ping包,10ping21显示为request 它的type和code分别是8和0 ?那么reply则是type 0 code 0 type类型为3的属于是网络报错信息,报错有很多种,所以分开为1234 ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数.等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP恨文,进行Ping测l试。 例: ping -a 10.1.1.100? ? 21.1.1.100
3. -h ttl-value指定TTL的值。缺省值是255。
ICMP应用Tracert TTL值 一般Windows为128 Linux为64? 当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。举个例子,如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。 当我们TTL值为0的时候,将我们数据包丢弃的路由器会向我们发送一个ICMP报文,告诉我们丢了,但在这个报文中夹杂着这个路由器的IP地址等信息,所以我们可以通过控制TTL值来对网络进行排查,看问题出在了哪里,而不是摸top。。。 Tracert ????????Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时问戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。Tracert常用的配置参数说明如下: -f? first? -ttl????????指定初始TTL。缺省值是1。 -m max-tt1????????指定最大TTL。缺省值是30。 -name????????使能显示每一跳的主机名。 -p port????????指定月的主机的UDP端口号 一般用不到 直接 tracert IP地址 就OK ?怎么做呢,你可以先ping一下百度域名,回复得到IP过后再对得到的IP进行 tracert。。。 该总结学习于B站视频网址如下,如有总结不到之处我自己担待。 https://www.bilibili.com/video/BV1D44y1b7WW?p=8&spm_id_from=333.880.my_history.page.click |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:55:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |