[计算机网络]探索ICMP协议
探索计算机网络ICMP协议
本文通过wireshark抓包ICMP报文进行ICMP协议的探索,将探索一下几个方面:
- Ping程序产生的ICMP消息。
- 由Traceroute程序产生的ICMP消息。
- ICMP消息的格式和内容。
1.ICMP和Ping
Ping程序是一个简单的工具,允许任何人(例如,网络管理员)验证一个主机是否是活的。源主机中的Ping程序向目标IP地址发送一个数据包;如果目标是活的,目标主机中的Ping程序就会向源主机发送一个数据包作为回应。而这些数据包都是ICMP数据包。
做到以下几点。
- 打开Windows命令提示程序。
- 启动Wireshark,并开始Wireshark数据包捕获。
- 在dos命令行中输入“ping -n 10 hostname ”,为了定位另一个大陆上的服务器,我们尝试输入“www.mit.edu”(麻省理工的网络服务器)。参数"-n 10 "表示应发送10条Ping信息。然后通过输入回车键运行Ping程序,发现根本获取不到ICMP数据包。(作者也不知道原因…)
那咱们试一试国内的,输入香港的“ping -n 10 www.ust.hk”来尽心捕获,记得在ping之前要先打开wireshark。 - 当Ping程序终止时,停止Wireshark中的数据包捕获
此时就拿到了数据包。如下:
此时在Wireshark中进行icmp的筛选,得到icmp的请求包:
我们发送了10次请求,这里有20个icmp数据包,可以发现每个都是request和reply,验证了icmp“回声式”的数据传输模式。
问题:
1.你的主机的IP地址是什么?目的地主机的IP地址是什么?
我们查看第一个request请求:
在第一个发送的数据包中发现Src:10.118.125.72 Dst:143.89.12.134。而本次为第一次request请求,所以我的主机IP为10.118.125.72, 目的IP为:143.89.12.134。(如果不确定可以在控制台中输入ipconfig看一下)eazy。
2.为什么ICMP数据包没有源和目的端口号?
因为 ICMP 报文作为 IP 有效载荷承载的,是一种差错和控制报文协议,不需要像 TCP 或 UDP 那样需要端口号。
3.检查由你的主机发送的一个ping请求包。ICMP的类型和代码是什么?这个ICMP数据包还有哪些字段?校验和、序列号和标识符字段有多少个字节?
查看一个request请求包,类型是8,代码是0。
其中还有校验和、标识符、序列号和数据data。其中校验和、标识符和序列号都是4个字节。
4.检查相应的PING回复数据包。ICMP的类型和代码是什么?这个ICMP数据包还有哪些字段?校验和、序列号和标识符字段有多少个字节?
类型是0,代码是0。与请求包一样包含校验和、标识符、序列号和数据,除数据外都是4个字节。
2.ICMP和Traceroute
现在让我们继续ICMP冒险,捕捉Traceroute程序产生的数据包。Traceroute程序可以用来找出数据包从源头到目的地的路径。Traceroute在Unix/Linux/MacOS和Windows中以不同的方式实现。在Unix/Linux中,源程序使用一个不可能的目标端口号向目标目的地发送一系列UDP数据包;在Windows中,源程序向目标目的地发送一系列ICMP数据包。对于这两个操作系统,程序发送的第一个数据包的TTL=1,第二个数据包的TTL=2,以此类推。回顾一下,当数据包通过路由器时,路由器会递减数据包的TTL值。当一个数据包以TTL=1到达路由器时,路由器会向源头发送一个ICMP错误数据包。在下文中,我们将使用本地Windows的tracert程序。
做到以下几点。
- 打开Windows命令提示程序。
- 启动Wireshark,并开始Wireshark数据包捕获。
- tracert命令在c:\windows\system32中,所以在MS-DOS命令行中输入 "tracert hostname "就可以执行,其中hostname是另一个大陆的主机。(注意,在Windows机器上,该命令是 "tracert "而不是 “traceroute”)。输入INRIA的网络服务器www.inria.fr,这是法国的一个计算机科学研究所。然后通过输入回车键运行Traceroute程序。
- 当Ping程序终止时,停止Wireshark中的数据。
得到的Wireshark中的数据包如下:
问题:
5.你的主机的IP地址是什么?目的地主机的IP地址是什么?
从任意一个发送的数据包中发现,Src:10.118.125.72 Dst:128.93.162.83。
6.如果ICMP发送UDP数据包,而不是像Unix/Linux那样,探测数据包的IP协议号还是01吗?如果不是,会是什么?
待解决。(还请各位大佬指导)
7.检查你截图中的ICMP回波数据包。这与本实验前半部分的ICMP ping查询数据包是否不同?如果是,是怎样的?
肯定是不同了,查看发现这里的报文类型变为了11,而前面我们知道ping时的报文类型是0。
8.检查你截图中的ICMP错误数据包。它比ICMP回波数据包有更多的字段。这些字段中包括什么?
多了这一部分,其中包含了ICMP 请求数据包的内容(包括总长度、标识符、TTL等)。
9.检查源主机收到的最后三个ICMP数据包。这些数据包与ICMP错误数据包有什么不同?为什么它们会不同?
我们找到最后的三个reply包:
查看包中的报文的类型:
发现最后的三个reply数据包中的Type都是0,即这三个都是目的IP返回的回显应答报文,查阅资料发现tracert 程序的原理是发送 TTL 增加的数据包,当 TTL = 1 的包达到路由器,该路由器会将该包丢弃,并且发送 ICMP 错误给请求的机器。而最后一组 3 个数据报时可以到达目的主机的,这时由于是被目的主机接收,目的主机不会丢包,而是确确实实收到的这个探测的数据报并进行了响应,所以会有这三个回显应答报文。
10.在tracert测量中,是否有一条链路的延迟明显长于其他链路?参考图4中的截图,是否有一条链路的延迟明显变长了?根据路由器的名称,你能猜到这个链接末端的两个路由器的位置吗?
确实,我们发现在15处延迟突变成为了155ms,路由器的名称也变为英文的,后面的全都变成了155ms+,所以推测应该是到达了中国到欧洲的路由器连接点了。
利用 Best trace进行追踪,发现确实是在这个节点出现了从北京到德国的7777km(小小致敬一下Clearlove)的大跳跃。
但其实利用Best trace可以更好的理解icmp的传递过程,还是挺好玩的。
[计算机网络]探索ICMP协议相关推荐
- 【计算机网络】ICMP协议
实验目的 应用所学知识: 1.熟悉ICMP的协议格式. 2.理解ping的运作机制. 3.理解traceroute的运作机制. 4.理解VPN的运作机制. 实验步骤与结果 1.任务一: 使用ping命 ...
- 计算机网络:ICMP协议
网际控制报文协议ICMP ICMP协议支持主机或者路由器差错报告和网络探询 类型表明ICMP报文是哪类 检验和:检验整个ICMP报文 ICMP报文可分为ICMP差错报文和ICMP询问报文. ICMP差 ...
- 【计算机网络】ICMP协议与ping命令
IP协议及ICMP.Ping命令详解: https://blog.csdn.net/lixin_com/article/details/82014542 常见的IP协议号: ICMP:协议号1; IG ...
- 计算机网络实验报告4icmp,实验04-ip、icmp协议分析
实验04-ip.icmp协议分析 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机网络>实验报告实验:IP.ICMP ...
- 计算机网络考试数据包格式,计算机网络实验 分析ICMP协议数据包格式.doc
计算机网络实验 分析ICMP协议数据包格式 实 验 报 告 实验课程名称 计算机网络实验 实验项目名称 分析ICMP协议数据包格式 年 级 08 专 业 电子信息科学与技术 学生姓名 郎子龙 学 号 ...
- 【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )
文章目录 一.ICMP 协议 二.ICMP 协议 简介 三.ICMP 五种差错报告报文 四.ICMP 差错报文形成 五.ICMP 差错报文 不发送 情形 六.ICMP 询问报文 七.ICMP 应用 一 ...
- 王道考研 计算机网络17 IP数据报 最大传送单元MTU IP地址 IPv4 子网划分 ARP协议 ICMP协议 移动IP
TCP/IP协议栈 TCP:传输控制协议(Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议. IP是Internet Protocol( ...
- 计算机网络之网络层:5、DHCP协议、ICMP协议、网络地址转换NAT
网络层:5.DHCP协议.ICMP协议.网络地址转换NAT TCP/IP协议栈: IP获取方式: NAT网络地址转换: DHCP工作流程: ICMP协议: ICMP报文格式: ICMP报文类型: IC ...
- icmp协议_计算机网络基础(七)网络层ICMP协议
文章内容概览 ICMP协议详解 网际控制报文协议(Internet Control Message Protocol) 该协议主要是用于辅助IP协议进行数据传输的 ICMP协议可以报告错误信息或者异常 ...
最新文章
- [DevOps] 认识一下
- windows7/8 安装mysql5.7
- Docker容器导入导出
- PostgreSQL csvlog 源码分析
- CVE-2019-8660 iMessage 漏洞复现
- 使用vue-router的meta实现 设置每个页面的title标题
- linux 监听数据包,linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)...
- 搭建hadoop的HA集群模式(hadoop2.7.3+hive+spark)
- 十大经典排序算法之冒泡排序【一】
- 栈的应用--中缀表达式转后缀表达式
- 自学python买什么书比较好-python入门学习哪个书比较好(python视频教程知乎)
- 整理 linux常用命令及工具
- 设置 jetbrains 的背景颜色和字体。
- Visual Studio启动、附加进程调试,多个Web Application时启动多个WebServer关闭方法
- 央央家政解读:育儿嫂服务内容和标准
- openCV学习资料整理
- wincc项目 CS结构 ES工程师站下装到OS服务器失败或者特别慢的原因
- 激活后服务器无限重启,服务器无限重启
- java -cp 与 java -Djava.ext.dirs的区别与坑
- Jetpack系列之Navigation----入门(五)
热门文章
- MyBatis 集成到Spring 的原理是什么?
- 解决2次查询User的问题(ThreadLocal)
- 开闭原则coding
- 元素的选中问题 元素选中的问题 切换复选框选中 全选和全不选
- android 字符串下标,android – 在TextView中为特定字符设置下标和上标?
- java动物飞翔接力赛源程序_java-submityourcode
- linux的tns 日志,Oracle 11g R2 常用配置与日志的文件位置
- 解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码
- ubuntu nano的使用 nano的关闭快捷键
- 位操作/获取数组的个数