ICMP 协议仿真及ping命令用途
1、实验目的
加深对 IPv4 协议首部各定义域的理解,掌握路由表的结构和基本配置命令,熟悉 ICMP 的调试操作。
2、实验原理
IPv4 协议定义,网络层协议的相关 RFC 定义和描述。
3、实验内容
3.1 ping命令抓包对比
RA配置
Sysname RA
Interface Ethernet 0/0/0
Ip address 202.38.75.1 255.255.255.0
Interface ethernet 0/0/1
Ip address 202.38.77.1 255.255.255.0
ip route-static 202.38.73.0 255.255.255.0 202.38.75.254
ip route-static 202.38.74.0 255.255.255.0 202.38.75.254
Return
RB配置
Sysname RB
Interface Ethernet 0/0/0
Ip address 202.38.76.254 255.255.255.0
Interface ethernet 0/0/1
Ip address 202.38.73.1 255.255.255.0
ip route-static 202.38.74.0 255.255.255.0 202.38.76.1
ip route-static 202.38.77.0 255.255.255.0 202.38.76.1
Return
RC配置
Sysname RC
Interface GigabitEthernet 0/0/0
Ip address 202.38.75.254 255.255.255.0
Interface GigabitEthernet 0/0/1
Ip address 202.38.76.1 255.255.255.0
interface GigabitEthernet 0/0/2
Ip address 202.38.74.1 255.255.255.0
ip route-static 202.38.73.0 255.255.255.0 202.38.76.254
ip route-static 202.38.77.0 255.255.255.0 202.38.75.1
Return

我们使用ping命令测试A1主机和C2主机的连通性,并分别在RA的0/0/1端口,RC的0/0/0端口和RC的0/0/2端口处进行抓包。


在IP首部中,同样一个发送请求只有两个区别,即TTL和首部校验和。每跳过一个路由器,TTL - 1,因此三个包的TTL依次为128,127,126。而首部校验和是因为TTL发生改变而改变。
再来看一下回送请求和回送回答的ICMP报文有什么区别。

可以看出,回送请求的ICMP包中,Type为8,code为0,而回送回答的ICMP报文中Type为0,code为0。这说明ping命令实际上是通过一系列的ICMP发送请求和回送请求来测试某个主机的可达性。在data部分,包含一个可选的数据字段,在回送回答的时候,返回的字段和回送请求时的可选字段一模一样。
3.1 tracert命令抓包对比

我们使用ping命令测试A1和B1的路由距离,并分别在RA的0/0/1和0/0/0端口,RC的0/0/1端口和RB的0/0/1端口处进行抓包。


从RA的0/0/1端口处的数据抓包情况可以看出,tracert命令使用ICMP报文和IP分组中的TTL来找出其与目的地址的距离。
首先,tracert送出一个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个ICMP TTL exceeded。直到TTL设置为4时,会收到回送回答报文,此时收到的回送回答报文中,TTL=125,这是因为A1和B1之间的距离是三个路由器。
关于回送请求和回送回答报文的Type,我们已经在ping部分讨论。
此时我们再来看一下超时报文的部分

超时报文中,Type为11。此时code为0,说明该报文由于超时而被丢弃。报文中包含了收到的IP数据报的首部以及数据报数据的前8个字节。
3.3 本地端口网络配置查看
3.3.1 查看本地端口的配置
使用ipconfig命令

使用route print 查看本地路由表

第1行:目标ip如果没有记录在本路由表中,都通过接口192.168.31.33(本机),发往网关192.168.31.1(路由器)
第5行:如果目标ip的为192.168.1.x,都通过接口192.168.31.33(本机),直接访问。在链路上:表示目标ip和本机ip属于同一网段
第6行:如果目标ip为192.168.31.33,都通过接口192.168.31.33(本机),直接访问。这条路由比上一条路由更详细,所以优先使用。这是自己访问自己的一条路由,并不会真的在链路上传播。127.x 和上面介绍同理,只不过是因为某些原因的方便单独保留了127ip段。
第7行:ip末尾为255,这条路由为本地广播,即给192.168.31.x的主机发送广播。
第11行:组播dizhi 。
第14行:广播。当主机没有获得ip地址时,通过本条路由广播;当主机获得IP地址后通过第7行的本地广播路由发送广播。
3.3.2 ping命令不同选项字用途及抓包分析
无参数 ping :在默认情况下,一般都是只发送四个32字节数据包,通过这个命令从数据包返回的最短时间、最长时间、平均时间可以衡量网络速度、延迟,从丢失率可以衡量网络的稳定性。

ping -f :在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。

将其与无参数ping进行对比,可以发现在flag字段,ping -f的设置为Don't Fragment。
ping -l size:发送size指定大小的到目标主机的数据包。

如果将发送的数据包大小改为2000,并使用ping -f, 可以看出此时显示需要拆分数据报但是设置为DF。
ping -r:在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。

ping -r 需要先用tracert跟踪到下一个目标地址的路径距离,因为其是用来检查目标的路由数量,每经过一个路由就是一个hop,如果节点数量太多,就会出现超时结果。
ICMP 协议仿真及ping命令用途的更多相关文章
- ICMP、ARP协议介绍和ping命令
交换机工作原理和常用的简单命令 一.ICMP协议 1)ICMP协议的封装 二.ARP协议 1)什么是ARP协议 2)ARP相关命令 三.Ping命令的使 ...
- Linux用ICMP协议实现简单Ping网络监测功能
ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...
- (转)协议森林06 瑞士军刀 (ICMP协议)
协议森林06 瑞士军刀 (ICMP协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 到现在为止,我们讲解了网络层中最重要的I ...
- Linux和Windows下ping命令详解(转:http://linux.chinaitlab.com/command/829332.html)
一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ \ -R ] [ -a add ...
- Linux和Windows下ping命令详解
转:http://linux.chinaitlab.com/command/829332.html 一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] ...
- Ping命令与ICMP协议
ICMP协议 ICMP是"Internet Control Message Ptotocol"(Internet控制消息协议)的缩写.它是TCP/IP协议族的一个子协议,用于在IP ...
- ICMP协议Ping命令的应用
ICMP的全称是 Internet Control Message Protocol ,它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机.路由器之间传递控制消息.从技术角度来讲,就是 ...
- UNIX网络编程——利用ARP和ICMP协议解释ping命令
一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit) ...
- 利用ARP和ICMP协议解释ping命令
一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit).如果IP ...
随机推荐
- 3gcms导航,实现当前栏目高亮的办法
<volist name="menu" id="vo" offset="0" length='8' key='k'> <l ...
- ci框架 自定义配置方法
系统自动在Application文件夹下生成的config.php文件,采用key-value关联数组的形式来存放配置项和值.为了使结构更清晰,手动新建另外一个配置文件myconfig.php,所采用 ...
- Kotlin基础入门之必知必会,查漏补缺来一手~~~
数据类型 Kotlin跟 java 相同,基本数据类型有八种 boolean,char,int,short,long,float,double,byte 类型 位宽 最小值 最大值 Short 16 ...
- 10.12 LNMP
yum install nginx php php-fpm mariadb-server php-mysql php.conf server { listen 8000; # pass the PHP ...
- 6.堆和GC
一. 堆和GC介绍 1.java堆的特点 <深入理解java虚拟机>是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共 ...
- typora博客笔记上传图片时不能显示
前言 markdown具有轻量化.易读易写等特性,并且对于图片.超链接.图片.数学公式都有支持. 但是最近在使用Typora的过程中我发现,在写文章笔记的时候导入的图片,因为图片保存在我们电脑本地,当 ...
- Java初步学习——2021.10.09每日总结,第五周周六
(1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学习了菜鸟教程实例部分 一.字符串 1.字符串比较--compareTo方法 public class Main { p ...
- 其他css属性和特性
其他css属性和特性 设置元素的颜色和透明度 下表列出了这些属性. 颜色相关属性 属 性 说 明 值 color 设置元素的前景色 <颜色> opacity 设置颜色的透明度 <数值 ...
- SpringBoot配置文件-多环境切换
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境: 多个文件-配置多环境: 需要多个配置文件,文件名可以是 application-{prof ...
- Windows内核开发-9-32位和64位的区别
Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. ...