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命令用途的更多相关文章

  1. ICMP、ARP协议介绍和ping命令

    交换机工作原理和常用的简单命令    一.ICMP协议      1)ICMP协议的封装    二.ARP协议      1)什么是ARP协议      2)ARP相关命令    三.Ping命令的使 ...

  2. Linux用ICMP协议实现简单Ping网络监测功能

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  3. (转)协议森林06 瑞士军刀 (ICMP协议)

    协议森林06 瑞士军刀 (ICMP协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 到现在为止,我们讲解了网络层中最重要的I ...

  4. Linux和Windows下ping命令详解(转:http://linux.chinaitlab.com/command/829332.html)

    一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ \ -R ] [ -a add ...

  5. Linux和Windows下ping命令详解

    转:http://linux.chinaitlab.com/command/829332.html 一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] ...

  6. Ping命令与ICMP协议

    ICMP协议 ICMP是"Internet Control Message Ptotocol"(Internet控制消息协议)的缩写.它是TCP/IP协议族的一个子协议,用于在IP ...

  7. ICMP协议Ping命令的应用

    ICMP的全称是 Internet Control Message Protocol ,它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机.路由器之间传递控制消息.从技术角度来讲,就是 ...

  8. UNIX网络编程——利用ARP和ICMP协议解释ping命令

    一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit)      ...

  9. 利用ARP和ICMP协议解释ping命令

    一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit).如果IP ...

随机推荐

  1. 3gcms导航,实现当前栏目高亮的办法

    <volist name="menu" id="vo" offset="0" length='8' key='k'> <l ...

  2. ci框架 自定义配置方法

    系统自动在Application文件夹下生成的config.php文件,采用key-value关联数组的形式来存放配置项和值.为了使结构更清晰,手动新建另外一个配置文件myconfig.php,所采用 ...

  3. Kotlin基础入门之必知必会,查漏补缺来一手~~~

    数据类型 Kotlin跟 java 相同,基本数据类型有八种 boolean,char,int,short,long,float,double,byte 类型 位宽 最小值 最大值 Short 16 ...

  4. 10.12 LNMP

    yum install nginx php php-fpm mariadb-server php-mysql php.conf server { listen 8000; # pass the PHP ...

  5. 6.堆和GC

    一. 堆和GC介绍 1.java堆的特点 <深入理解java虚拟机>是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共 ...

  6. typora博客笔记上传图片时不能显示

    前言 markdown具有轻量化.易读易写等特性,并且对于图片.超链接.图片.数学公式都有支持. 但是最近在使用Typora的过程中我发现,在写文章笔记的时候导入的图片,因为图片保存在我们电脑本地,当 ...

  7. Java初步学习——2021.10.09每日总结,第五周周六

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学习了菜鸟教程实例部分 一.字符串 1.字符串比较--compareTo方法 public class Main { p ...

  8. 其他css属性和特性

    其他css属性和特性 设置元素的颜色和透明度 下表列出了这些属性. 颜色相关属性 属 性 说 明 值 color 设置元素的前景色 <颜色> opacity 设置颜色的透明度 <数值 ...

  9. SpringBoot配置文件-多环境切换

    profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境: 多个文件-配置多环境: 需要多个配置文件,文件名可以是 application-{prof ...

  10. Windows内核开发-9-32位和64位的区别

    Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. ...