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. Linux系列(42) - 防火墙相关命令

    # 开启 service firewalld start # 重启 service firewalld restart # 关闭 service firewalld stop # 查看防火墙规则 fi ...

  2. openTSDB-采集器批量部署-tcollector

        前提: 所需安装采集器服务器与部署服务器之间都已经配置无密码登录 1.安装服务器安装expect包 安装服务器与需要安装Tcollector服务器之间未配置无密登录需要此步. yum inst ...

  3. Object of type type is not JSON serializable

    报这个错的原因是因为json.dumps函数发现字典里面有bytes类型的数据,无法编码.解决方法:将bytes类型的数据就把它转化成str类型. 定义dates[]后return JsonRespo ...

  4. 简单易行的美化方案:Ubuntu 18.04 把启动过程中的紫色美化为黑色

    背景 给笔记本装了一个Ubuntu,嫌弃启动的颜色很丑:因此在网上找到了一些修改方法,集成为一个傻瓜脚本. 参考文档: https://askubuntu.com/questions/5065/how ...

  5. 基于AM335X,如何搭建优良的Linux开发环境(下)

    接着上一篇文章的Linux开发环境搭建,文章中详细讲解了 VMware14.1.1虚拟机安装.基于虚拟机安装Ubuntu14.04.3操作系统.安装Ubuntu14.04.3操作系统.安装虚拟机工具. ...

  6. P7046-「MCOI-03」诗韵【SAM,倍增,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P7046 题目大意 给出一个长度为 \(n\) 的字符串,然后 \(m\) 次把它的一个子串加入集合.如果一个字符串 ...

  7. Linux学习笔记整理-1

    内核检测常用的7个命令: fdisk命令:用于检查磁盘使用情况,以及可以对磁盘进行分区. #fdisk -l 列出系统内所有能找到的设备的分区 #fdisk /dev/sda 列出sda磁盘的分区情况 ...

  8. 一个Electron的设计缺陷及应对方案

    当你想实现阻止Electron窗口关闭,并弹出询问对话框,提示用户:"文章尚未保存,是否要关闭窗口"这类业务时,那么你99%会碰到这个BUG: https://github.com ...

  9. win32 TreeCtrl控件通知消息, LVN_SELCHANGED和LVN_ITEMCHANGED用法

    今天出了个奇怪的问题,当我在主窗口上创建一个用模板对话框的子窗口时, 在子窗口上放的TreeCtrl控件不响应LVN_SELCHANGED消息,也是晕死了, 我以为是消息捕获的问题,我在主窗口上也捕获 ...

  10. C++学习 1 数组

    一维数组: 定义:1.数据类型 数组名 [ 数组长度 ]: int arr [5];//赋值 arr[0]=10; arr[1]=20; arr[2]=30; arr[3]=40; arr[4]=50 ...