精华内容
下载资源
问答
  • 实验二:获取以太网ip地址与mac地址的对应关系 - 计算机网络实验二:获取以太网IP地址与MAC地址的对应关系2.1 实验目的熟悉ARP的帧结构以及工作原理,深入了解IP地址和MAC地址的有关概念,掌握WinPcap开发包的...

    实验二:获取以太网中ip地址与mac地址的对应关系 - 计算机网络

    实验二:获取以太网中IP地址与MAC地址的对应关系

    2.1 实验目的

    熟悉ARP的帧结构以及工作原理,深入了解IP地址和MAC地址的有关概念,掌握WinPcap开发包的实验方法以及自定义构造数据包。

    2.2 实验要求

    要求自行构造arp请求数据帧,用WinPcap的相关函数实现数据帧的发送,并解析响应的数据帧,获得IP地址与MAC地址的对应关系。本实验要求通过操作系统提供的命令和WinPcap编程两种方式获取以太网中主机的MAC地址。

    2.3 实验原理

    ARP是地址解析协议,它的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在TCP/IP协议中,每一个网络结点是用IP地址标识的,IP地址是一个逻辑地址。而在以太网中数据包是靠48位MAC地址(物理地址)寻址的。因此,必须建立IP地址与MAC地址之间的对应(映射)关系,ARP协议就是为完成这个工作而设计的。TCP/IP协议栈维护着一个ARP cache表,在构造网络数据包时,首先从ARP表中找目标IP对应的MAC地址,如果找不到,就发一个ARP request广播包,请求具有该IP地址的主机报告它的MAC地址,当收到目标IP所有者的ARP reply后,更新ARP cache。ARP cache有老化机制。ac地址,把目的地址设置为自己的IP地址,获取局域网内其他主机的IP地址与MAC地址的映射关系就需要发送广播ARP请求帧,然后通过解析捕获到的ARP响应数据包,得到IP地址与MAC地址的映射关系。

    2.4 实验内容

    2.4.1 利用系统提供的命令获取IP地址与MAC地址的对应关系

    (1)多数操作系统都内置一个arp命令,可以使用arp -a显示高速cache中的ARP表,如果期望的IP地址与MAC地址没有出现在表中,则可以ping 该IP地址,成功后,在执行arp-a,就可以看到ARP表项的变化情况。

    图3:arp-a的结果

    (2)添加ARP静态表项,命令:arp –s inet_addr eth_addr,其中inet_addr表示IP地址,eth_addr表示其对应的MAC地址。

    2.4.2 利用WinPcap编程获取IP地址与MAC地址的对应关系

    实验步骤:(1)安装WinPcap驱动和DLL程序,在VC++中配置WinPcap,选项卡Tools->options->Directories,添加WinPcap的Include和Lib文件。:

    图4:添加WinPcap库文件

    (2)新建MFCAppwizard(exe)工程,在打开的工程下,选择Project->Settings的C/C++选项卡,选择Link选项卡,在Object/library modules中添加wpcap.lib ws2_32.lib和packet.lib三个库文件(三者之间用空格隔开),使工程在编译连接的时候将WinPcap的响应的库模块加载进去。

    (3)设计界面,并添加控件变量,本实验中设计的界面如下:

    图5:界面设计

    (4)在CapturePacket1Dialog.h添加头文件,在响应的库文件添加到工程里。

    #include "pcap.h"

    #pragma comment(lib,"wpcap.lib")

    #pragma comment(lib,"ws2_32.lib")

    (5)在OnInitDialog()中添加初始化界面的代码。可以根据自己的需要进行设计,此处就不列举代码。

    (6)响应结构体的定义,本实验要自行构造请求包,对以太网帧和ARP的格式和有一定的了解,定义结构体如下:(仅供参考)

    struct?ethernet_head{//?物理帧帧头结构????unsigned?char?dest_mac[6];???????????????????????? //目标主机MAC地址(6字节)????unsigned?char?source_mac[6];????????????????????????//源端MAC地址(6字节)????unsigned?short?eh_type;??????????????????????????????//以太网类型(2字节)};struct?arp_head{//ARP数据帧????unsigned?short?hardware_type;?????????????

    展开全文
  • MAC: private void setEthernetMac() { ... } } private boolean isUsingStaticIp() { return Settings.System.getInt(getContentResolver(), Settings.System.ETHERNET_USE_STATIC_IP, 0) == 1 ? true : false; }

    MAC:

    private void setEthernetMac() {

    BufferedReader reader = null;

    String ethernetMac = getResources()

    .getString(R.string.text_default_mac);

    try {

    reader = new BufferedReader(new FileReader(

    "sys/class/net/eth0/address"));

    ethernetMac = reader.readLine();

    Log.v(TAG, "ethernetMac: " + ethernetMac);

    if (ethernetMac == null || ethernetMac.trim().length() == 0) {

    ethernetMac = getResources().getString(

    R.string.text_default_mac);

    textMac.setTextColor(Color.parseColor("#ff0000"));

    } else {

    ethernetMac = ethernetMac

    + getResources().getString(R.string.text_normal);

    textMac.setTextColor(Color.parseColor("#00ff00"));

    }

    textMac.setText(ethernetMac);

    } catch (Exception e) {

    Log.e(TAG, "open sys/class/net/eth0/address failed : " + e);

    } finally {

    try {

    if (reader != null)

    reader.close();

    } catch (IOException e) {

    Log.e(TAG, "close sys/class/net/eth0/address failed : " + e);

    }

    }

    }

    IP:

    private String getEthernetIp() {

    String mEthIpAddress;

    if (!isUsingStaticIp()) {

    EthernetManager mEthManager = (EthernetManager) getSystemService(Context.ETHERNET_SERVICE);

    String tempIpInfo;

    String iface = mEthManager.getEthernetIfaceName();

    tempIpInfo = SystemProperties.get("dhcp." + iface + ".ipaddress");

    if ((tempIpInfo != null) && (!tempIpInfo.equals(""))) {

    mEthIpAddress = tempIpInfo;

    } else {

    mEthIpAddress = getResources().getString(

    R.string.text_default_ip);

    }

    return mEthIpAddress;

    } else {

    return Settings.System.getString(getContentResolver(),

    Settings.System.ETHERNET_STATIC_IP);

    }

    }

    private boolean isUsingStaticIp() {

    return Settings.System.getInt(getContentResolver(),

    Settings.System.ETHERNET_USE_STATIC_IP, 0) == 1 ? true : false;

    }

    展开全文
  • 展开全部 读取ipconfig/all... } 一行一行的读取命令行的东西,直到我们想要的一行 如下图我们需要的是“以太网适配器 本地链接:”这里面的物理地址,上面的代码就是找到这一行,然后再下去五行就是我们要的MAC地址

    展开全部

    读取ipconfig/all里面的内容:

    public static String checkPhysicalAddress() {

    String physicalAddress ="";

    try {

    String line;

    Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all");

    BufferedReader bufferedReader = new BufferedReader(

    new InputStreamReader(process.getInputStream()));

    int temp=1;

    int switchon=0;

    while ((line = bufferedReader.readLine()) != null) {

    if(switchon ==1){

    temp++;

    }

    if(line.indexOf("以太网适配器 本地连接62616964757a686964616fe58685e5aeb931333337626261:") !=-1){

    switchon=1;

    continue;

    }

    if (temp == 5) {

    line = bufferedReader.readLine();

    System.out.println("1:"+line);

    if (line.indexOf(":") != -1) {

    physicalAddress = line.substring(line.indexOf(":") + 2).replaceAll("-", "").trim();

    break; //找到MAC,推出循环

    }

    }

    }

    //process.waitFor();

    } catch (Exception e) {

    e.printStackTrace();

    }

    return physicalAddress;

    }

    一行一行的读取命令行的东西,直到我们想要的一行

    如下图我们需要的是“以太网适配器 本地链接:”这里面的物理地址,上面的代码就是找到这一行,然后再下去五行就是我们要的MAC地址

    93904402af7865dbd8bae6f190c7562b.png

    展开全文
  • linux ubuntu系统服务器修改网络配置,将以太网网口配置成dhcp或静态ip。 注:服务器在本场景中作为客户端,与PC相同,并非使用服务器为其他客户端提供ip服务。 方法 ubuntu通过ifconfig命令查看网络端口状态 $ ...

    问题场景:

    linux ubuntu系统服务器修改网络配置,将以太网网口配置成dhcp或静态ip。
    注:服务器在本场景中作为客户端,与PC相同,并非使用服务器为其他客户端提供ip服务。


    方法

    ubuntu通过ifconfig命令查看网络端口状态

    $ ifconfig
    eno1      Link encap:Ethernet  HWaddr *
              inet addr:*  Bcast:*  Mask:*
    

    配置网络端口的方法是,通过修改/etc/network/interfaces文件,分为3步:

    一、修改为dhcp服务
    配置该文件中关于目标网口的行,以eno1为例进行如下配置,并用#注释掉其他与eno1相关的所有行:

    auto eno1
    iface eno1 inet dhcp
    

    二、修改为静态ip服务
    要想将上文ifconfig查询到的参数改成新的参数,需要先将上面dhcp配置的两行通过#注释掉,之后添加以下几行:

    iface eno1 inet static
    address *
    netmask *
    gateway *
    

    具体信息分别对应你的目标ipv4地址、子网掩码和网关。

    三、修改后重启ubuntu网络服务
    修改了interfaces文件后,需要重启网络服务,配置了dhcp的话还需要让dhcp服务执行以获取ip地址,具体方法如下。

    ubuntu重启网络服务:

    sevice network-manager restart
    /etc/init.d/networking restart
    

    dhcp获取ip地址(其他方式不需要),以eno1为例:

    dhclient eno1
    

    其他问题:

    虽然都是linux系统,但每个系统的network service的名称和配置文件的位置可能不同。
    ubuntu的是network-manager,也有其他的,比如比较旧的network以及nmclient配置网络工具等。

    展开全文
  • /** * @author yins * @date ... 以上就是Java获取电脑真实IP地址的示例代码的详细内容,更多关于Java获取IP地址的资料请关注云海天教程其它相关文章! 原文链接:https://www.cnblogs.com/lm970585581/p/13366139.html
  • 本文介绍Windows操作系统的电脑通过网线连接上路由器(或其他网络设备)后,查看电脑获取到的IP地址的方法。注意:文中提供的是有线网卡查询方式,无线网卡的IP地址查询方式与有线网卡相似,可参考本文。Windows XP...
  • 手动来回更改IP实在太麻烦,通过以下代码可自动更改,并可在1、2的基础上,无限新增待更改IP。 @echo off rem //设置变量 set NAME="以太网" rem //以下属性值可以...rem //以上属性依次为IP地址、子网掩码、网关、
  • uniapp如何获取IP地址

    千次阅读 2021-04-30 10:40:36
    uniapp如何获取IP地址获取ip地址js获取ip地址uni-app获取ip地址 获取ip地址 最近一个uni项目涉及到获取IP地址,在网上看到用引入外部JS的方法来获取,uni-app配置模板没有找到index.html这个文件,所以这个没法在...
  • Linux无法获取IP地址

    2021-05-13 05:13:54
    0.0.1稍后会截图上来,试过很多办法一直无法实现IP地址,请教下大家。|确定dhcp过程执行了吗?或者dhcp服务器有没有什么限制?|这个本机的vmdhcp和vmnat服务都要打开的而且linux的ip要改成自动获取如果你在安装的...
  • /*** 文件名: EthernetUtil* 创建时间: 2020/8/21 on 11:22* 描述: TODO 设置以太网静态ip 动态ip地址** @author 阿钟*/public class EthernetUtil {/*** 设置以太网动态获取IP*/public static boolean setDynamicIp...
  • import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.... } } 使用postman测试效果如下图: image.png 然后是控制台相关输入截图如下: image.png 获取本地ip地址完毕。
  • Java获取本机IP地址

    2021-06-09 10:37:51
    InetAddress.getLocalHost().getHostAddress()
  • android系统中,针对以太网Ethernet的静态IP和动态Dhcp获取ip相关的接口: package com.mili.systemutils.utils; import android.content.Context; import android.net.ConnectivityManager; import android.net....
  • ARP协议工作原理:主机想要知道某个IP地址的主机对应的物理地址是什么。主机向自己所在的网络发送ARP广播,广播里包含一个目标地址。这个目标地址也是主机所在的网络的主机里面的。此网络中的其他机器都会收到这个...
  • 网络相关对象在java.net包中。1.获取主机对象InetAddress//获取...//根据ip地址或主机名获取主机对象,以主机名获取主机时需要DNS解析InetAddress host = InetAddress.getByName("192.168.100.124");InetAddress ...
  • 原因可能是你的电脑ip地址不是自动或许的,以前手动修改过,可能修改成自动获取ip地址本文适用于不会把电脑ip地址改成自动获取的用户Windows XP系统自动获取ip地址设置第一步:右键点击桌面上的“网上邻居”,选择...
  • 服务器IP您可以从$ _SERVER [‘SERVER_ADDR’]获取服务器IP地址。服务器MAC地址对于MAC地址,您可以解析netstat -ie在Linux中的输出,或ipconfig / all在Windows中的输出。客户端IP地址您可以从$ _SERVER [‘REMOTE_...
  • 问:如何查看windows10系统电脑获取IP地址?如何查看windows8电脑系统获取ip地址是多少?怎么知道windows7电脑网卡获取ip地址?怎么查看windows xp系统的电脑网卡的ip地址?答:对于以上提问的问题总结一个...
  • /* 获取本地接口IP地址*/ if(ioctl(reqfd, SIOCGIFADDR, ¯eq) != 0) return 1; memcpy(lc_addr, &((struct sockaddr_in *)(¯eq.ifr_addr))->sin_addr, ipln); return 0; } void prmac(u_char *ptr) { ...
  • 记事本新建bat文件,编码ANSI:@echo off &... setlocal enabledelayedexpansionecho =-----------------------------------------=echo = 本BAT只列出一个有线和一个无线的IP信息 =echo = 读取信息请耐心等待 =echo...
  • Win7无法自动获取DNS与IP地址怎么办腾讯视频/爱奇艺/优酷/外卖 充值4折起电脑在连接上网的时候会自动获取DNS与IP地址,保证浏览器能够正常连接浏览,但也有遇到意外的时候,有Win7用户就反映他的系统无法自动获取DNS...
  • 作者:Ronak Nathani校对:星空下的文仔(才云)、bot(才云)Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 ...
  • 目录一 网络配置中出现的错误及解决方案二 VMware下网络配置的三种模式简介1、桥接模式(Bridged)2、网络地址转化模式(NAT)3、仅主机模式(host-only)一 网络配置中出现的...,等过了一天再使用时发现获取不到IP地址...
  • I would like to retrieve the ethernet address of the network interface that is used to access a particular website.How can this be done in Java?Solution Note that the accepted solution of getHardwareA...
  • 网络相关对象在Java.net包中。1.获取主机对象InetAddress//获取...//根据ip地址或主机名获取主机对象,以主机名获取主机时需要DNS解析InetAddress host = InetAddress.getByName("192.168.100.124");InetAddress ...
  • C#获取本机网络连接名,获取和设置IP地址 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; ...
  • 获取当前局域网下所有连接设备的ip地址和mac地址

    万次阅读 多人点赞 2021-07-03 16:53:18
    今天我们计划实现通过Python读取当前局域网下所有连接设备的IP地址和Mac地址。 基本原理: 通过ipconfig /all 命令获取局域网所在的网段 通过arp -d *命令清空当前所有的arp映射表 循环遍历当前网段所有可能的ip...
  • 已发相关文章请参考Python获取本机所有网卡的MAC地址本文代码使用ARP协议获取局域网内所有计算机的IP地址与MAC地址,思路是使用系统命令arp获取ARP表并生成文本文件,然后从文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,131
精华内容 15,652
关键字:

以太网ip地址获取