背景

由于目前从事桌面云相关的工作,需要经常创建虚拟机以及为该虚拟机分配IP地址。在一个局域网中,我们的IP地址要求唯一性,如果设置的IP地址已经被利用,虚拟机就无法创建成功或者出现其他无法预料的事情。

那么我们应该用什么办法来判断某个IP地址是否已经被占用呢?我们我知道的有两个方法:

  • ping命令
  • arping命令

ping命令

从事IT工作的基本都知道这个命令,它用来判断目标地址网络通路是否正常以及对应的主机是否存在。例如:


如果使用ping 目标主机地址,提示无法访问目标主机,一般情况下,可表明这个IP地址没有被使用或者网络不通。但是,对方主机若开启了防火墙,我们使用ping命令也会提示“无法访问主机”,实际上该IP地址已经存在了,IP地址已经存在则无法创建虚拟机。此时,则需要使用arping命令了。

另外ping命令可以之window和linux系统均支持。

ARP地址解析协议

在linux系统下面,我们还可以使用arping命令来判断某个IP的地址是否被占用。该命令主要使用了地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

其主要过程如下:

  1. 主机发送信息时将包含目标IP地址的ARP请求包广播到网络上的所有主机;
  2. 目标主机的IP和APR请求包匹配时,目标主机返回对应的物理地址
  3. 主机收到返回消息后将该IP地址和物理地址存入本机ARP缓存中。

为了提高查询效率,本地的ARP缓存都会保留一段时间。下次请求时会直接查询ARP缓存以节约资源。我们可以使用命令arp -a命令查询ARP缓存信息,例如:

arping命令

由于arping命令是基于ARP地址解析协议,我们可以在同网段中使用arping命令来判断目标主机是否存在,若存在目标主机会给出响应以及mac地址信息。

例如:

[root@xxxxx ~]# arping 103.29.xxx.xxx
ARPING 103.29.xxx.xxx from 103.29.71.92 eth0
Unicast reply from 103.29.xxx.xxx [F8:66:F2:xx:xx:41]  11.512ms
Unicast reply from 103.29.xxx.xxx [F8:66:F2:xx:xx:41]  11.966ms
Unicast reply from 103.29.xxx.xxx [F8:66:F2:xx:xx:41]  4.512ms
Unicast reply from 103.29.xxx.xxx [F8:66:F2:xx:xx:41]  5.966ms
^CSent 6 probes (1 broadcast(s))
Received 6 response(s)

以上信息表明103.29.xxx.xxx主机存在,我们不能再利用这个IP地址。否则表明这个IP地址在同网段中是没有被使用的。

如何判断某一个IP地址是否被占用相关推荐

  1. 阿里面试题-判断是不是一个IP地址的测试用例设计(Python实现)

    写在前面 今天面试阿里巴巴,太紧张了,回答的不好,在此记录和分享 IP地址规则 0.0.0.0~255.255.255.255 由上面的规则我们可以划分四段A.B.C.D A段的测试用例设计(BCD的 ...

  2. 一个路由器两个网段互通_如何判断两个IP地址是否在同一个网段?什么是子网掩码?...

    前几天咱们了解:三种方法告诉你项目超过255个摄像机怎么设置IP?什么是公网ip?什么又是内网ip?为什么ip地址通常以192.168开头? 也学习了:二.三层交换机与路由器的区别! 但是有好多人对I ...

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

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

  4. 判断输入的IP地址是否合法

    判断输入的IP地址是否合法,ip地址的值在0~255之间,先把输入的IP的地址转换为一个字符串. #define LEN (sizeof(xx)/sizeof(xx[0])) const char * ...

  5. 如何判断两个IP地址是不是处于同一网段?

    个人理解,欢迎指正. 一.要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果-->网络号,如果网络号相同, 就在同一子网,否则,不在同一子网. 例:假定选 ...

  6. 怎样判断两个ip地址是不是在同一个网段中?

    我们先来了解一下,判断两个ip地址是不是在同一个网段的方法. 要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中. 例子: ...

  7. 如何判断两个IP地址是不是同一个网段(超实用)

    IP地址 IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"一台电话&qu ...

  8. 给一个IP地址,如何划分为几个子网?

    1. 基本知识介绍 1.1网络中的每一个主机或路由器至少有一个IP地址: 在Internet中不允许有两个设备具有同样的IP地址: 1.2IP地址采用分层结构: IP地址是由网络号(net ID)与主 ...

  9. 教你如何判断两个IP地址,是否在同一个网段

    目录 前言 一.什么是子网掩码? 二.如何根据掩码来确定ip地址网段 总结 前言 子网掩码的介绍以及如何根据掩码来确定IP地址网段. 一.什么是子网掩码? 子网掩码只有一个作用,就是将某个IP地址划分 ...

最新文章

  1. 《Java基础入门》课后习题答案 资源分享
  2. java switch 值_Java switch多值匹配操作详解
  3. 【数据分析】年轻人如何才能实现年薪百万呢?用数据分析来帮你探探路
  4. IntelliJ IDEA 显示行号方法
  5. 汇编:采用顺序编程方法,实现在屏幕上显示大写字幕A
  6. 8、SpringBoot+Mybatis整合------参数取值方式
  7. mysql教程实验4.1_【MySQL】数据库课程实验
  8. C# StringBuilder 和 String 的区别?(简单易懂不抽象)
  9. Java面试 Java简历 Java简历模板
  10. win10设置计算机关机时间,Win10怎么设置自动关机时间_Win10设置自动关机教程-192路由网...
  11. 专科咋了?5年时间从三流外包到阿里P6,逆袭成功终于肝出了这份大厂Android研发岗中高级面经!
  12. ArcGIS三大文件格式解析
  13. 树莓派bullseye 系统安装QT5
  14. 《富爸爸穷爸爸》书摘-富爸爸穷爸爸
  15. js如何动态获取object类型里的键值
  16. 单曲循环 翻译_“单曲循环” 用哪个词?
  17. RabbitMQ之消息模式简单易懂,超详细分享
  18. PAT(BASIC)1037. 在霍格沃茨找零钱(20)
  19. 差分管电路图_差分电路
  20. 【C#】RabbitMQ高阶指南

热门文章

  1. OSChina 周六乱弹 ——她穿裙子还没你好看呢
  2. html静态页面作业——京东网购商城模板(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 HTML网页设计制作大作业
  3. 设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
  4. avi怎么转换成视频?
  5. linux 如何打开iso镜像文件,linux下如何读取使用iso 镜像文件的方法
  6. 独行怎能走远——给不喜欢有人教的学生
  7. smt生产线关键流程介绍
  8. android通过查询电话号码获取联系人头像
  9. 部署“极客猿导航geek-navigation遇到的问题”——作者没说但你就会遇到(1)
  10. 谷歌调试器调试的js_时辰?? “时间旅行”调试器