ICMP
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
-
ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
-
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。
-
它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。
-
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。ping 和 tracert是两个常用网络管理命令,ping 用来测试网络可达性,tracert 用来显示到达目的主机的路径。ping和 tracert 都利用 ICMP 协议来实现网络功能,它们是把网络协议应用到日常网络管理的典型实例。
-
目的不可达 ICMP报文(目的网络、目的主机、目的协议、目的的端口不可达)
-
超市 ICMP报文(TTL每经过一次路由器就-1,-到0时,数据包被丢弃。Trace充分利用了 ICMP超时报文)
-
重定向 ICMP报文(向源主机通知更好的路由)
-
ICMP回应请求与回应应答(ping发送和接受ICMP echo/icmp echo reply报文)
ping命令
ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP;回声请求消息给目的地并报告是否收到所希望的ICMP echo (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令
-
ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。
-
ping和ICMP的关系:ping命令发送数据使用的是ICMP协议。
-
ping的主要功能是确定一个给点的IP地址是否可以到达。如果ping执行成功,则暗示:
-
从源到目的的节点存在一条可以工作的路径
-
目标IP地址对应的机器在正常工作
-
从目标节点到源节点存在一条可以工作的路径。
但是,从源到目标的路径与从目标回源节点的路径可能不一致。即不对称路由
-
打开cmd直接输入ping命令回车,就可以看到系统给出的最详细的说明了
命令参数 | 解释 |
---|---|
-t | Ping 指定的计算机直到中断。 |
-a | 将地址解析为计算机名。 |
-n count | 发送 count 指定的 ECHO 数据包数。默认值为 4。 |
-l size | 发送包含由 size 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。 |
-f | 在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。 |
-i ttl | 将"生存时间"字段设置为 ttl 指定的值。 |
-v tos | 将"服务类型"字段设置为 tos 指定的值。 |
-r count | 在"记录路由"字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。 |
-s count | 指定 count 指定的跃点数的时间戳。 |
-j host-list | 利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。 |
-k host-list | 利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 |
-w timeout | 指定超时间隔,单位为毫秒。 |
destination-list | 指定要 ping 的远程计算机。 |
用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
ping最常用的就是ping加域名了,方法就是ping加一个空格,后面跟域名即可:
ping www.baidu.com
pingip地址,就是直接在ping后面加ip地址就行:
ping 127.0.0.1
Ctrl + C 结束
ping命令输出结果
返回结果 | 示意 |
---|---|
! | Ping 操作成功,收到了 ICMP echo reply 报文 |
. | 未收到任何报文 |
U | ICMP不可到达目的主机 |
N | ICMP不可到达目的网络 |
P | ICMP不可到达目的端口 |
Q | ICMP源地址失踪 |
M | ICMP禁止数据包分段 |
? | 收到无法识别的数据包 |
Traceroute命令
traceroute (Windows 系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL 值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP 呼叫报文的TTL 值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。
作用:在测试网络连通性的同时测试从源到目的地址的详细路径
原理:
- 最开始,源向目的地址发送3个TTL=1的数据包,第1个路由器收到该包后将其TTL改为0,并向源发送一个ICMP超时消息,源在接到这个消息后便知道了到达目的地址要经过的第1个路由器的地址。
- 接下来,源向目的地址发送3个TTL=2的数据包,于是,第一个路由器收到该包后改其TTL=1并转发给第2个路由器,第2个路由器改其TTL=0,并向源发送一个ICMP超时消息,源就知道了应经过的第2个路由器的地址。
- 最后向目的地发送3个TTL=n且目的节点不认识的包,目的节点就向源发回一个目的地址不可达的ICMP消息,于是,源就知道自己已到达了最终目标,
- 依据上述原理,源就知道了到达目的地址应经过的各个路由器的地址。
解释
它由遍布全球的几万局域网和数百万台计算机组成,并通过用于异构网络的TCP/IP协议进行网间通信。互联网中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为Traceroute,MS Windows中为Tracert。 Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
地址解析协议 ARP
ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址
-
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
-
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存
-
由上攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
-
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
ping 对方IP 再用arp -a 查看机器上的arp缓存,其中一个是你自己机器的还有个就是对方IP的MAC地址了。
用ipconfig /all 可查询自己的MAC地址
反向地址解析协议 RARP
RARP:Reverse Address Resolution Protocol 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN
ARP(地址解析协议)是设备通过自己知道的IP地址来获得自己不知道的物理地址的协议。
- 假如一个设备不知道它自己的IP地址,但是知道自己的物理地址,网络上的无盘工作站就是这种情况,设备知道的只是网络接口卡上的物理地址。
- 这种情况下应该怎么办呢?RARP(逆地址解析协议)正是针对这种情况的一种协议。
RARP以与ARP相反的方式工作。
- RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。
- 虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。