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. Java基础系列(29)- 方法的重载

    方法的重载 重载就是在一个类中,有相同的函数名称,但形参不同的函数 方法重载的规则: 方法名称必须相同 参数列表必须不同(个数不同.或类型不同.参数排列顺序不同等) 方法的返回类型可以相同也可以不相同 ...

  2. Linux系列(20) - shutdown

    作用 用于关机或重启 例子 [shutdown -h 05:30]:设定凌晨05:30关机 [shutdown -h +30]:30分钟后关机 [shutdown -h now] 立即关机 [shut ...

  3. Linux系列(14) - grep

    简述 grep是在文件当中匹配符合条件的字符串,作用是查找文件内容 格式 grep [选项] 字符串 文件名 选项 -i:忽略大小写 -v:排除指定字符串 -n:显示行号 例子 grep " ...

  4. P4126-[AHOI2009]最小割【网络流,tarjan】

    正题 题目链接:https://www.luogu.com.cn/problem/P4126 题目大意 给出\(n\)个点\(m\)条边的一张有向图和起点终点.对于每条边求其是否是最小割的可行割/必须 ...

  5. YbtOJ#482-爬上山顶【凸壳,链表】

    正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/2 题目大意 \(n\)个点,\(x\)坐标递增,第\(i\)个点向第\(j\)个点连边. 开 ...

  6. 极简SpringBoot指南-Chapter02-Spring依赖注入的方式

    仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...

  7. H5移动端适配方案-rem

    为什么移动端要适配: 由于移动设备的尺寸不一,所以移动端的页面要能够适应不同尺寸的设备,即页面的自适应,让页面在视觉上保持一致. rem:rem 是css3的一种相对单位,参考是根元素HMTL的fon ...

  8. PG集群(PostgreSql环境)搭建

    centos PG集群搭建 一.安装PG 1.安装之前首先查看软件是否已经安装 rpm -qa | grep postgresql #若存在,需要卸载使用 yum remove postgresql ...

  9. C语言知识_1

    +,-,*,/是C语言中表示四则运算的符号.:用来分割不同的语句{}用来对语句进行分组 函数代表了一组数据处理过程,由一对大括号所包含的多条语句来表示这个处理过程.每个函数有唯一的名字,main函数是 ...

  10. 初学python-day2 字符串格式化1