如果精确判断一个IP是否被占用

我们在局域网经常需要去测试一个IP是否在用,通过使用ping命令去测试网络通还是不通,但这种方法不是很精确。

我在cnaaa.com上购买了云服务器。

原因是 ping 命令使用的是 ICMP 协议(Internet Control Message Protocol),ICMP协议是 TCP/IP 协议族中的一员,它也含IP头,所以我们可以使用 IP 去 ping。ICMP协议是用来侦测网络错误的,ping 命令用到了 ICMP 中的 ICMP ECHO REQUEST 和 ICMP ECHO REPLY,用来判断 IP 地址是否通。之所以说这种方法判断 IP 是否被占用不太可靠,是因为与TCP和UDP协议一样,在防火墙上是可以禁用此类网络包的。也就是对方可以禁ping,让你无法 ping 通对方。

之所以会出现禁ping策略,是因为很多网络攻击是先通过ICMP协议判断主机是否存活,如果 ping 不通有可能会躲避一部分网络攻击。但 ping 不通只说明 ICMP 协议被禁,TCP 或 UDP 协议也可以用来判断主机是否存活,所以禁 ping 只能躲避一些简单攻击,如果对方对端口进行扫描,服务器如果存在开放的端口的话,还是会被对方发现。

我们假定主机就是一台普通PC,没有对外开放服务端口,并且在防火墙上禁了ICMP协议,此时还有没有办法判断此PC的IP是否处于活跃状态?

ping 命令可以跨网段,此时使用的是三层网络,中间会用到IP和路由。如果在二层网络下,设备间是通过 MAC 地址而非IP来进行通讯的。二层网络会被局限在一个VLAN或网段里,也就是说跨网段通信需要三层路由,但在同网段内,设备彼此是可以通过ARP广播来判断 MAC 地址是否存在,如果存在即可存在交换机或终端的ARP表中方便直接进行通讯。

我们看一下 Windows 下PC的ARP表

arp -a

Linux 下命令类似

在 PC 或服务器的 ARP 列表中,只会存与网卡相连的同网段网络 MAC,而不会存跨网络网络的MAC。因为ARP是“Address Resolution Protocol”(地址解析协议)的缩写。在同网段中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。也就是说,IP是三层网络的地址,MAC是二层网络的地址。防火墙工作在三层网络,所以在二层网络,MAC 和 IP 是可以直接被定位到的。

PC 只存同网络的 MAC 地址,跨网络如何查。跨网络的MAC可以在交换机的ARP地址表中查,如果网关在核心交换机上,那么所有需要通信的主机的IP和MAC的相对应的关系都在交换机上可以找到。所以说一个IP有没有占用,交换机肯定是知道的。

我们在交换机ruijie-8610设备上查看VLAN 25的MAC与IP的映射关系

root@ns-xxzx-svr:~# telnet 192.168.25.254Trying 192.168.25.254...Connected to 192.168.25.254.Escape character is '^]'.
User Access Verification
Password:
ZXYYNQ-CORE-RG8610>enable
Password:ZXYYNQ-CORE-RG8610# show arp VLAN 25

交换机的 arp 列表存在缓存,当设备上线或离线时,无法找到设备时会触发ARP广播,从而刷新ARP缓存。在Windows或Linux下可以使用arp -d命令清空arp表,重新通过arpi学习更新arp表。在ping一个地址时,如果arp表为空,此时就会触发一个arp请求。有没有手动进行arp请求的方法?有,这个命令叫 arping ,与 ping 不同,ping 使用的是 ICMP 协议,而 arping 使用 arp 请求来代替 ICMP。

arping 只能 ping 同网段的IP,不能跨网络发起 arp 请求,这是二层网络通信决定的。如果存在多个网卡,此时需要指定网卡接口,不然 arping 不知道从哪个网卡接口出去。

arping -I eth0 192.168.10.1

Windows 下有没有类似的工具?有,但是第三方的,下载地址:

  • https://elifulkerson.com/projects/arp-ping.php

使用方法与 Linux 下一致

总结,通过 arping 可以精确判断一个设备的IP是否是在线状态,此时防火墙是无法阻止对方通过 arping 来 ping 你,如果在 MAC 地址层面不通,说明此网络接口网络不通。

如果精确判断一个IP是否被占用相关推荐

  1. 判断一个IP是否归属于中国

    业务的要求 判断一个IP是不是属于中国的 时间复杂度尽量小,适用于请求量大的业务场景 不要请求第三方接口,防止出现网络异常 由于只需要判断到国家的纬度,所以不需要用到纯真IP库这样庞大的IP库,通过网 ...

  2. 判断一个IP区间(或IP)是否被另一个IP区间所包含

    以下方法实现判断一个IP是否被一个IP区间所包含 有一些静态方法可能引用了同名空间的自定义的类, 至于合并两个相临的IP段,可对其中的最大或最小IP+1 using System; using Sys ...

  3. 怎么判断私网地址_如何判断一个IP地址是私有地址

    如何判断一个IP地址是私有地址,首先,我们得先了解什么是私有地址.本文所指的IP地址,皆是IPV4. 一个IPV4地址,由四段组成,最大值为255,一个IP地址其实就是一个32位的bit串,每8位一段 ...

  4. 如何用Python判断一个文件是否被占用?

    今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为access()返回的是文件的读写属性.为了确认这一点,我简单测试了一下. >>> i ...

  5. 可作为计算机主机的IP地址,怎么样判断一个ip是否可以作为主机ip地址

    两个IP在同一个子网,是指在相同的网段,主要是看看他们的网络标识是否一样. 接下来我们举例说明,如何去判断A和B两个IP是否在同一网段. A IP:202.194.128.9 B IP:202.194 ...

  6. 通过ICMP协议判断一个IP是否可达

    在我们开发过程中,会遇到这样一种情况:在我们请求服务器时,服务器会返回两个或者多个ip给我们,让我们自主选择连接,但我们要选择一个和我们匹配的ip连接,比如我们在内网,那么对应的ip就需要我们能pin ...

  7. 判断一个IP是否属于中国地区

    在 Express.js 中,可以使用 `req.ip` 获取用户的 IP 地址.通常情况下,这个属性会返回当前请求的客户端的 IP 地址.但需要注意的是,在一些特殊情况下(如使用了代理服务器),`r ...

  8. 判断一个IP是否CN2线路的最简单方法

    境外服务器连接中国,目前最快的线路就是CN2.中国电信CN2线路是新一代承载网,其技术构造远远领先于电信原有163骨干网络,采用极为先进的QOS保证网络的畅通性,能够同时满足语音.视频.数据.专线.国 ...

  9. python判断ip地址是否合法_python实现判断一个字符串是否是合法IP地址的示例

    一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:判断一个字符串是否是合法I ...

最新文章

  1. TensorFlow2.0 系列开篇: Windows下GPU版本详细安装教程
  2. Educational Codeforces Round 87 (Rated for Div. 2)C2. Not So Simple Polygon Embedding【几何题】
  3. FISCO BCOS 2.0发布:新增群组架构克服吞吐瓶颈
  4. python中用turtle绘制时钟_python使用turtle库绘制时钟
  5. 活动报名 | 第四范式AI与异构硬件优化最新成果分享
  6. android 4.2 判断桌面快捷,Android 判断桌面是否快捷方式,不存在则创建
  7. 欧洲杯直播助PPTV日均流量登顶视频行业首位
  8. 如何:使用Json插入数据库并从中读取
  9. 【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图
  10. 数据安全治理的几个基本问题
  11. Shell:函数返回值接收
  12. Luogu P5201 [USACO19JAN]Shortcut 最短路树???
  13. Linux嵌入式学习-ds18b20驱动
  14. 注册表清理软件测试自学,注册表检测及修复工具(RegClean Pro)
  15. 强大的USB协议分析工具
  16. 浙江大学PAT考证,计算机专业的可别错过了,轻松就业+高薪
  17. 失望时想起了你是什么歌_你是空你是空色即是空的空空什么歌 《想起了你》哪里听...
  18. Tensorflow基础知识
  19. 云旗OS助手火了!可一站式体验统信UOS
  20. SQL Server 数据库实验课第九周——第六章总结

热门文章

  1. 网站创建:必要探听的域名和空间相关知识
  2. ipad触控笔是哪几款?一般电容笔和Apple pencil区别
  3. Wi-Fi学习总结--AP、STA、BSS、ESS、VAP等
  4. css媒体查询的区间_CSS媒体查询
  5. 小学生计算机课如何管教,少年巧编程| 如何给孩子选择编程课
  6. 【性能优化】404- 从 12.67s到1.06s 性能优化实战
  7. Privoxy 安装配置
  8. 微信小程序hidden不生效原因及解决方法
  9. Azkaban Multi Executor Server 快速入门
  10. 混动,增程,原理剖析 传动箱