背景

由于目前从事桌面云相关的工作,需要经常创建虚拟机以及为该虚拟机分配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. php计算属相,一个判断干支、属相和星座的php函数
  2. P1160 队列安排 链表
  3. 笔记本电脑u盘装linux系统,用U盘给Linux笔记本电脑重装Win7/XP系统的图文教程
  4. Source Insight checking for modified files 卡顿(Reload externally modified files automatically取消)(未解决)
  5. vmware workstation 上创建的centos 7.2 ,新添加一块网卡。无法找到配置文件。
  6. 形参与实参, 值传递与引用传递, ref参数与out参数的区别和联系?
  7. Travis CI 配置文件 .travis.yml 的语法介绍和一些用法举例
  8. 汇编语言-004(LABEL 、间接寻址、变址操作数、指针使用、TypeDef、LOOP、DWORD变量交换高位低位字)
  9. Tomcat 6、7在EL表达式解析时存在的一个Bug
  10. 两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set(utf-8)两种方法)
  11. SpringBoot2.x整合Redis数据库
  12. 下载百度文库的受限文件-冰点下载器
  13. python+appium出现selenium.common.exceptions.WebDriverException: Message: Method has not yet been imple
  14. java面试最后问面试官什么问题,详细说明
  15. 商业网站建设和运营的四度:Approachability、Usability、 Accessibility 和 Profitability...
  16. Unity 关于Toggle的ison默认没有显示监听结果的解决
  17. php文件上传代码dsn,数据源名称无效-使用php、PDO和DSN连接到MySQL
  18. 云南中考计算机操作题,2015年云南省初中信息技术会考操作题及解题步骤.ppt
  19. Java猿社区—log4j2一站式教程
  20. UnityShader水体渲染

热门文章

  1. css flex布局下
  2. 算法数据结构 - 数据结构绪论
  3. LeetCode - 70. 爬楼梯(人肉递归、动态规划)2
  4. 晒一手hbs helper
  5. C++一些常见的面试题
  6. 陈天桥三口之家幸福插曲
  7. 创造与魔法282服务器哪天维护,创造与魔法新版本开启时间详细介绍
  8. Linux 第三章 压缩与归档 文件搜索、排序
  9. Dew Lab Studio 2020 VCL软件包,很好的RAD(快速软件开发)工具
  10. JVM基础知识和调优