精华内容
下载资源
问答
  • mac地址 和以太网地址If you are still new to the whole networking thing, then it can be a bit overwhelming when you first start learning about the different kinds of addresses involved and how they ...
    mac地址 和以太网地址

    mac地址 和以太网地址

    why-are-ethernet-mac-addresses-needed-00

    If you are still new to the whole networking thing, then it can be a bit overwhelming when you first start learning about the different kinds of addresses involved and how they work together. Today’s SuperUser Q&A post seeks to clear up the confusion for a curious reader.

    如果您还不熟悉整个网络,那么当您第一次开始了解所涉及的各种地址以及它们如何协同工作时,可能会有些不知所措。 今天的《超级用户问答》旨在消除好奇读者的困惑。

    Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

    今天的“问答”环节由SuperUser提供,它是Stack Exchange的一个分支,该社区是由社区驱动的Q&A网站分组。

    Image courtesy of Wikipedia.

    图片由Wikipedia提供

    问题 (The Question)

    SuperUser reader user2449761 wants to know more about the need for Ethernet/MAC addresses:

    SuperUser阅读器user2449761想了解有关以太网/ MAC地址需求的更多信息:

    I do not understand why Ethernet/MAC addresses are needed. Surely all computers could just be connected to a unified network and use IP addresses to communicate?

    我不明白为什么需要以太网/ MAC地址。 当然所有计算机都可以连接到统一网络并使用IP地址进行通信吗?

    For example, there is the following mechanism in Ethernet:

    例如,以太网中有以下机制:

    • A computer with the IP address 192.168.1.1 (X.1) wants to send a packet to the address 192.168.1.2 (X.2).

      IP地址为192.168.1.1(X.1)的计算机希望将数据包发送到地址192.168.1.2(X.2)。
    • X.1 uses ARP to get the MAC address of X.2.

      X.1使用ARP获取X.2的MAC地址。
    • To do so, X.1 needs to send a packet to all computers in the network and only one will answer.

      为此,X.1需要向网络中的所有计算机发送一个数据包,并且只有一台计算机可以应答。
    • X.1 gets a MAC address and sends the packet.

      X.1获取MAC地址并发送数据包。

    It would be simpler to just do it in one step:

    只一步就可以做到:

    • X.1 sends a packet to all computers in the network and only X.2 will process it, the others will ignore it.

      X.1将数据包发送到网络中的所有计算机,只有X.2将处理它,其他X.2将忽略它。

    My other question is: Why are IP addresses needed if all devices have unique MAC addresses?

    我的另一个问题是:如果所有设备都有唯一的MAC地址,为什么需要IP地址?

    Why is there a need for Ethernet/MAC addresses?

    为什么需要以太网/ MAC地址?

    答案 (The Answer)

    SuperUser contributor Paul has the answer for us:

    超级用户贡献者Paul为我们提供了答案:

    The different network layers are there to allow them to be swapped for different technologies. The two layers you are talking about here are Layers 2 and 3. Layer 2 in this scenario is Ethernet – from which MAC addresses arise, and Layer 3 is IP.

    那里有不同的网络层,可以将它们交换为不同的技术。 您在这里谈论的两层是第2层和第3层。在这种情况下,第2层是以太网-产生MAC地址,第3层是IP。

    Ethernet only works at the local level between network devices connected to a broadcast network “data link”, whereas IP is a routable protocol and can target devices on remote networks.

    以太网仅在连接到广播网络“数据链路”的网络设备之间的本地级别工作,而IP是可路由的协议,并且可以定位到远程网络上的设备。

    The requirements for each of these layers is different. Ethernet specifies a family of technologies that allow packets to be sent and received between network devices, whereas IP defines a protocol that allows packets of data to traverse multiple networks.

    这些层中的每一层的要求都不同。 以太网指定了一系列技术,允许在网络设备之间发送和接收数据包,而IP定义了一种协议,该协议允许数据包穿越多个网络。

    Neither is reliant on the other, which is what gives networking its flexibility. For example, you may choose to connect to your Internet service using IP over Ethernet, but in your internal network, you might choose to use IP over paper (where someone writes down the contents of each packet and physically walks it over to another machine and types it in). Clearly this would not be particularly fast, but it would still be IP provided the person carrying around the bits of paper respected IP routing rules.

    两者都不依赖对方,这就是赋予网络灵活性的原因。 例如,您可以选择使用基于以太网的IP连接到Internet服务,但是在内部网络中,您可以选择使用基于纸的IP(有人写下每个数据包的内容,然后将其物理地传递到另一台计算机,然后输入)。 显然,这不是特别快,但是如果携带随身携带的纸张遵守IP路由规则的人,那将仍然是IP。

    In the real world there are different data link protocols that you are already using (although their addressing schemes are the same): 802.3 – Ethernet, and 802.11 – Wi-Fi.

    在现实世界中,您已经在使用不同的数据链路协议(尽管它们的寻址方案是相同的):802.3 –以太网,以及802.11 – Wi-Fi。

    IP does not care what the underlying layer is. Equally, IP can be swapped out for different network layer protocols (provided it happens for all participants) such as Asynchronous Transfer Mode (ATM).

    IP不在乎底层是什么。 同样,可以将IP换成不同的网络层协议(前提是所有参与者都可以使用),例如异步传输模式(ATM)

    While there is nothing directly preventing the creation of a protocol that encompasses both Layers 2 and 3, it would be less flexible, less attractive, and therefore unlikely to be used.

    尽管没有什么可以直接阻止同时包含第2层和第3层的协议的创建,但是它的灵活性,吸引力都将降低,因此不太可能被使用。

    Make sure to read through the rest of the lively discussion thread via the link below!

    确保通过下面的链接通读其余的热烈讨论线程!



    Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.

    有什么补充说明吗? 在评论中听起来不错。 是否想从其他精通Stack Exchange的用户那里获得更多答案? 在此处查看完整的讨论线程

    翻译自: https://www.howtogeek.com/201412/why-are-ethernetmac-addresses-needed/

    mac地址 和以太网地址

    展开全文
  • 以太网MAC地址

    2019-12-02 15:08:23
    MAC地址 又称 硬件地址 又称 物理地址 我们的网卡能够收到什么样的数据帧? 单播帧(一对一) 广播帧(一对全体):MAC地址全一的(二进制)或全F(十六进制) 多播帧(一对多) 没有结束标识? 以太网用的...

    MAC地址 又称 硬件地址 又称 物理地址

    我们的网卡能够收到什么样的数据帧?
    单播帧(一对一)
    广播帧(一对全体):MAC地址全一的(二进制)或全F(十六进制)
    多播帧(一对多)

    在这里插入图片描述

    没有结束标识?
    以太网用的曼彻斯特编码,
    曼彻斯特编码:
    只要知道有个头就行了,那怎么判断结束呢?后面没有信号了就是结束了。
    曼彻斯特编码 0和1都有跳变,如果发现后面电压没了,帧就结束了

    无效的MAC帧

    在这里插入图片描述

    展开全文
  • MAC:private void setEthernetMac() {BufferedReader reader = null;String ethernetMac = getResources().getString(R.string.text_default_mac);try {reader = new BufferedReader(new FileReader("sys/class/...

    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;

    }

    展开全文
  • 最近高通平台Android5.1项目中有个关于设置以太网MAC的需求,大致流程是windows写到一块flash片区去保存序列号和以太网MAC地址,然后Android客户端通过相关接口去读取该字符串并加以显示,需要将其MAC地址同步到...

    最近高通平台Android5.1项目中有个关于设置以太网MAC的需求,大致流程是windows写到一块flash片区去保存序列号和以太网MAC地址,然后Android客户端通过相关接口去读取该字符串并加以显示,需要将其MAC地址同步到Android系统中MAC地址。

    首先我加了个设备信息显示序列号和以太网的应用程序,通过LOCAL_JAVA_LIBRARIES加载所需要加载的相关接口库,然后再manifest中通过加载相关声明(注:此声明在application节点下)。这样一来我们的应用层可以正常读取相关flash片区的保存的内容了。

    那么后面问题来了,我们如何同步Android系统内的保存的以太网的MAC地址呢?通过网上查询相关资料文献发现,我们可以通过执行相关Linux命令得到结果。通过串口执行相关命令发现如下命令是可以有效的修改Android5.1的/sys/class/net/eth0/address内保存的地址的:

    netcfg(ifconfig) eth0 down

    netcfg eth0 hwaddr 10:10:10:10:10:10

    netcfg(ifconfig) eth0 up

    所以通过增加Java代码执行这三条命令即可:

    private void executeCMD(String cmd){

    try {

    Log.w(TAG, "cmd= " +cmd);

    Runtime runtime = Runtime.getRuntime();

    Process proc = runtime.exec(cmd);

    } catch (IOException e) {

    Log.w(TAG, "exe fail!!!!");

    e.printStackTrace();

    }

    }

    我们依次执行上述三条linux命令应该就可达到我们的需求。Okay,基本逻辑已经完成,下面进入调试阶段,笔者调试的是项目中的产品MSM8909 Android5.1的一款平板电脑。当我们编译结束后,通过运行应用程序查看日志发现我们的应用确实已经读取到了保存的序列号和MAC地址,可是后面设置系统MAC地址时报了Permission Denied!那么这样一来,就进入了Android权限的赋予和调试的阶段。首先,我们需要给我们的apk是system apk,于是我将其放到系统/system/app下,后面运行发现仍然报IOExeption:Permission Denied!那么后面我在manifest中加入了android:sharedUserId="android.uid.system"让其运行的进程uid为system,然后需要给其签名platform证书,我也对其进行了相关的签名。后面抱着满满的信息去调试的时候发现又有新的权限异常,后面便进入了Adnroid5.1引入的SElinux相关的权限调试当中,过滤有效日志如下:

    avc: denied { net_admin } for capability=12 scontext=u:r:system_app:s0 tcontext=u:r:system_app:s0

    tclass=capability permissive=0

    如此avc权限问题一般都是selinux相关的问题所在,selinux中我们的解决思路就是缺什么权限我们就加什么权限,这样至少不会导致权限的乱序了。关于selinux的赋权都在源码目录/external/sepolicy/文件下进行代码编辑,下面我们顺藤摸瓜找到我们的system_app的权限配置文件(system_app.te),加上对日志的理解我们尝试着加入为我们的apk赋权的语句:

    allow system_app system_app:capability { net_admin };

    对于此语句的语法我们可以网上百度或者参照原本有的内容进行理解,allow后面跟的几个参数分别是scontext(表示一个group),后面跟上需要为此组所添加的权限,分别是tcontext和tclass和权限的名称(关于权限的分类我们可以参考out/target/product/msm8909/obj/ETC/sepolicy_intermediates/policy.conf相关即可。好了,做完这步我们需要重新编译内核bootimage进行烧写。抱着满满的自信心进行编译,结果发现天哪竟然编译不过,看看服务器报的错误信息发现,也就是说在app.tc中不允许添加类似的capability相关类的权限,我们进入app.tc中发现如下语句:

    neverallow { appdomain -bluetooth } self:capability *;

    初步的理解是绝不能允许appdomain除了是bluetooth group的,而我们的system_app.tc中恰好定义了appdomain,那么我们大胆的理解我们可以在app.tc中将我们的group也加进去就行啦。于是就有下面的修改:

    neverallow { appdomain -bluetooth -system_app} self:capability *;

    Okay , 大功告成,再次对内核进行编译。哈哈,竟然编译通过了,这时候感觉比之前的每次调试都更加信心满满了。拷贝出bootimage后进行烧录,重启,运行,查看日志,netcfg查看以太网MAC地址。哈哈,Android系统的MAC地址已经改为我所读出来的MAC地址了,此项需求圆满结束!

    通过此次的需求变更,这让我对Android5.1的SElinux又有了更加深层次的认识了。遇到问题,不慌不忙,我们慢慢的分析问题,定位问题,解决问题(离不开对日志的重要信息的提取和理解)。

    展开全文
  • Mac连接以太网的问题解决 1.BasicIPv6ValidationError 2.关闭IPv6 3.DNS
  • 最近高通平台Android5.1项目中有个关于设置以太网MAC的需求,大致流程是windows写到一块flash片区去保存序列号和以太网MAC地址,然后Android客户端通过相关接口去读取该字符串并加以显示,需要将其MAC地址同步到...
  • 这里为大家推荐一款特别好用的修改工具,这款WiFiSpoof for Mac能够快速生成随机的Mac地址,这款生成的这些地址会每隔30分钟随机改变,可以将这些地址在工作时设置为预定义的MAC地址。WiFiSpoof for Mac特别版能更改...
  • 获取Mac地址以太网和无线网,获取IP地址,希望能够帮到你
  • // 返回以太网MAC return getPhoneMacAddress(); } } /** * Get the STB MacAddress */ public String getPhoneMacAddress() { try { return loadFileAsString("/sys/class/net/eth0/address")....
  • 一、 以太网 ( Ethernet ) 概述、 二、 以太网 ( Ethernet ) 服务、 三、 以太网 ( Ethernet ) 发展、 四、 10BASE-T 以太网、 五、 适配器 与 MAC 地址、 六、 以太网 MAC 帧、 七、高速以太网
  • 组播IP地址以太网MAC地址映射关系图,这个图帮助理解记忆组播IP地址以太网MAC地址映射关系.
  • MAC地址以太网协议

    2019-11-20 18:04:13
    MAC地址:每个物理设备唯一的地址:ipconfig /all查看 ---------------------------------------------------------------------------------------------------------------------------- 以太网的格式...
  • 秒懂以太网MAC 硬件地址

    千次阅读 2020-04-21 11:41:05
    什么是MAC硬件地址,以及物理地址是什么,他们有什么关系,本文介绍了以太网 MAC帧的格式,解释了常见的两种格式,以及一些基础知识,可以在遗忘的时候查阅。
  • 以太网MAC地址

    2011-05-26 08:42:17
    起初,以太网是作为总线拓扑的一部分而实现的。每台网络设备都连接到同一个共享...为协助确定以太网中的源地址和目的地址,创建了称为介质访问控制 (MAC) 地址的唯一标识符。无论使用以太网的哪一种变体,命名约定...
  • android如何获取以太网mac地址

    千次阅读 2015-08-05 19:40:47
    android系统已经应用到了机顶盒及其他设备中,不像手机只能通过wifi... 本文讲述无线网和以太网mac地址获取的方法:  1.以太网获取mac地址  因为机顶盒系统是linux内核的,假设ethernet是eth0,那么可以从以下
  • 获取以太网MAC地址

    千次阅读 2013-10-17 17:51:18
    private String getEthernetMacAddress() { String mac = null; BufferedReader bufferedReader = null; Process process = null; try { process = Runtime.ge
  • Android5.1修改以太网MAC地址(SElinux)

    千次阅读 2017-05-09 15:26:16
    点击打开链接最近高通平台Android5.1项目中有个关于设置以太网MAC的需求,大致流程是windows写到一块flash片区去保存序列号和以太网MAC地址,然后Android客户端通过相关接口去读取该字符串并加以显示,需要将其MAC...
  • } /* * Get the STB MacAddress */ public static String getMacAddress(){ try { return loadFileAsString("/sys/class/net/eth0/address") .toUpperCase().substring(0, 17); } catch (IOException e) { e....
  • 有时因为种种原因我们需要更换Mac地址,这时我们就得利用像WiFiSpoof这样一款wifi地址快速修改工具来帮忙了。WiFiSpoof可以轻松实现新MAC地址输入、一键设定。并且支持原硬件MAC地址一键还原,操作简单明了,非常...
  • 2020以太网数据帧、MACYuLong XiaoZhan玉 龙 小 栈以太网链路传输的数据包称做以太帧,或者以太网...今天给大家介绍一下以太网数据帧格式和MAC地址格式。以太网数据帧以太网II帧格式Ethernet_II 帧类型值大于等于...
  • Android 获取以太网Mac地址和IP地址

    万次阅读 2016-01-29 16:11:57
    MAC: private void setEthernetMac() { BufferedReader reader = null; String ethernetMac = getResources() .getString(R.string.text_default_mac); try { reader = new BufferedReader(new ...
  • 一个制造商在生产制造网卡之前,必须先向 IEEE...制造商在生产制造网卡的过程中,会往每一块网卡的 ROM 中烧入一个 48bit 的 BIA(Burned-In Address,固化地址)地址,BIA 地址的前 3 个字节就是该制造商的 OUI,后 3...
  • 以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层。 第八位为0 对于目的地址,相当于单播通信 为1,对于目的地址,相当于组播通信 前三位:生产厂家 , 后三位:网卡...
  • 先通过地址判断:/sys/class/net/eth0/address ,常由于权限原因而无法访问; 故还需使用另外一种方式读取 @SuppressLint("HardwareIds") @Override protected void updateConnectivity() { try (BufferedReader ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,662
精华内容 1,464
关键字:

mac以太网地址