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. TP5多条件搜索,同时有必要条件

    $model = $this->model; // 查询是否有搜索参数 $search = input('?get.search') ? trim(input('get.search')) : ...

  2. Docker系列(23)- CMD和ENTRYPOINT的区别

    CMD和ENTRYPOINT的区别 CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 测试CMD ...

  3. django 安装redis及session使用redis存储

    环境:centos 7.4 第一:安装redis 下载redis并安装: wget http://download.redis.io/releases/redis-5.0.5.tar.gz yum - ...

  4. sql case when 多条件小结

    sql case when 多条件 小结 -- 第一种 格式 : 简单Case函数 : -- 格式说明 -- case 列名 -- when 条件值1 then 选择项1 -- when 条件值2 t ...

  5. 『Python』matplotlib常用函数

    1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...

  6. 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 百篇博客分析OpenHarmonyOS | v2.07

    百篇博客系列篇.本篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核 ...

  7. P5180-[模板]支配树

    正题 题目链接:https://www.luogu.com.cn/problem/P5180 题目大意 给出\(n\)个点的一张有向图,求每个点支配的点数量. \(1\leq n\leq 2\time ...

  8. YbtOJ#573-后缀表达【二分图匹配】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/2 题目大意 给出一个包含字母变量和若干种同级操作符的后缀表达式.求一个等价的表达式满足该表达 ...

  9. CF444C-DZY Loves Colors【线段树,set】

    正题 题目链接:https://www.luogu.com.cn/problem/CF444C 题目大意 \(n\)个物品第\(i\)个颜色为\(i\),权值为\(0\).要求支持\(m\)次操作 给 ...

  10. 【深度学习】线性回归(Linear Regression)——原理、均方损失、小批量随机梯度下降

    1. 线性回归 回归(regression)问题指一类为一个或多个自变量与因变量之间关系建模的方法,通常用来表示输入和输出之间的关系. 机器学习领域中多数问题都与预测相关,当我们想预测一个数值时,就会 ...