1.概述

ICMP是IP层的一个组成部分,报文在IP数据包内部被传输


在IP通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器软件可能不能接受它。这时,在错误发生的现场,为了联络而飞过来的信鸽就是ICMP 报文。在IP 网络上,由于数据包被丢弃等原因,为了控制将必要的信息传递给发信方。ICMP 协议是为了辅助IP 协议,交换各种各样的控制信息而被制造出来的

  • ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
  • ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

ICMP报文结构:

类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件,不同类型由报文中的类型字段和代码字段来共同决定,其中比较重要的

  • 类型3 代码1 主机不可达 差错报文
  • 类型3 代码3 端口不可达 差错报文

总的来分,ICMP报文分为查询报文和差错报文,下面的情况一定不会导致差错报文:

  • 来源报文就是一个ICMP差错报文
  • 目的地址是广播或多播地址的IP数据报
  • 作为链路层广播的数据报
  • 不是IP分片的第一片
  • 源地址不能为零地址,环回地址,广播地址,多播地址

2.Ping

Ping发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答

如果我们Ping不通某台主机,可能是因为防火墙或者路由器限制了某种协议或者端口号,也可能并非完全不可达

Ping的回显类型是很重要的

Ping命令也可以通过-R选项也可以查看路由,但是IP首部只有有限的空间,所以我们要查看路由跳还是用traceroute

Ping的工作原理,是利用去向的Type 8(Echo Request),以及返程的Type 0 ( Echo Reply

3.Traceroute程序

它可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由

和ping命令的区别

Traceroute的核心是ICMP报文和IP首部中的TTL字段

当路由器收到一个Traceroute发送的UDP报文时,如果TTL减一是0,然后返回一个ICMP报文(因为traceroute会指定一个端口很大的端口,一定没有程序使用,所以并不会交给应用程序),会通过ICMP Type 11 发送出错消息“TTL Expired”

Traceroute程序本身就是通过不断改变TTL找到中间路由,但是很多服务器屏蔽了ICMP错误报文,这样就会返回 ***这种

Ping和Traceroute命令详解相关推荐

  1. linux的traceroute命令详解

    traceroute命令详解 traceroute [-46dFITUnrAV] [-f first_ttl] [-g gate,...] [-i device] [-m max_ttl] [-p p ...

  2. traceroute命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/peida/archive/2013/03/07/2947326.html 通过traceroute我们可以知道信息从你 ...

  3. linux中trace命令,linux traceroute 命令详解

    功能说明:显示数据包到主机间的路径. 语 法: traceroute [-dFlnrvx][-f][-g...][-i][-m][-p][-s][-t][-w][主机 名称或IP地址][数据包大小] ...

  4. ping和tracert命令详解

    Ping 这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通.Ping程序实际就是发送一个ICMP回显请求报文给目的主机,并等待回显的ICMP应答.然后打印出回显的报文.Ping不通一个地址 ...

  5. Linux traceroute 命令详解

    traceroute 命令 Linux中traceroute 命令用于显示数据包到目的主机的路径 Windows中路由追踪命令是tracert. traceroute 指令可以追踪你发送的数据包在网络 ...

  6. linux traceroute命令详解_详解Linux系统路由跟踪指令traceroute语法、工作原理和实例说明...

    概述 traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...

  7. ping服务器名位置解析,ping和ipconfig命令详解

    ping是一个计算机网络工具,用来测试特定主机能否通过IP到达.ping的运作原理是向目标主机传出一个ICMP echo要求封包,等待接收echo回应封包.程序会按时间和反应成功的次数,估计失去封包率 ...

  8. tracert与traceroute命令详解

    tracert 一.tracert 介绍 tracert 是一个简单的网络诊断工具,用于确定 IP 数据报访问目标所经过的路径.Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错 ...

  9. linux的ping命令含义,Linux ping命令详解

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 -q 不显示任何传送封包的信息,只显示最后的结果 -n 只输出数值 -R 记录路由过程 ...

最新文章

  1. ‘百度杯’十月场web ---login
  2. Quanta杂志长文翻译:通过信息论判定个体的边界
  3. 【模板】折线分割平面
  4. openstack中的server
  5. windows下配置安装YAF环境
  6. 字符串常量到底存放在哪个存储区
  7. MySQL 修改视图
  8. 【Python】列表推导式求 100 以内的所有素数
  9. 数据三等分离散python_数据自习室01-描述性统计量
  10. 软件测试中冒烟测试范例,浅谈冒烟测试及用例
  11. 使用v-show v-if 设置元素显示和隐藏
  12. vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in v-on handler (Promise/async): “Error: 失败“found in
  13. php 模板渲染,ThinkPHP6.0模板渲染 - ThinkPHP6.0快速开发手册(案例版) - php中文网手册...
  14. 公有云 私有云及架构
  15. JavaScript计时器制作进度条
  16. (一)Google Earth Engine概述
  17. A2021-A2022年度项目总结(二)
  18. 阿里云合作伙伴查询合作流程
  19. 猝灭剂BHQ-1 amine/1308657-79-5/BHQ-2 氨基/1241962-11-7者相关的物理性质还是有一定的区别,整理以下相关的数据进行对比。
  20. LINUX从零开始——ENGINEER(云计算应用管理)——Day2 [磁盘空间管理、交换空间、VDO]

热门文章

  1. 一个数组有n个整数,使其前面各数顺序向后移m个位置, 最后m个数变成最前面的m个数
  2. 管理类联考——逻辑——知识篇——题型说明
  3. 操作系统linux应用试卷,《Linux操作系统应用》试卷5
  4. 次时代游戏场景设计,这些3D游戏建模带你走上次时代巅峰
  5. 远程成桌面的链接计算机名,远程桌面连接设置
  6. Widows下RTSP测试服务器搭建
  7. MPAndroidChart 教程:Realm,全套教学资料
  8. h5可拖动悬浮按钮_手机端H5悬浮按钮怎么实现的呢?
  9. 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多
  10. Cease to struggle and you cease to live.