首页 > 其他分享 >从数据链路到神秘的MAC地址和ARP协议

从数据链路到神秘的MAC地址和ARP协议

时间:2023-10-14 21:32:37浏览次数:34  
标签:ARP 协议 主机 地址 MAC 链路层 路到

引言

链路是指从一个结点到相邻结点的一段物理线路。数据链路是在链路的基础上增加了一些必要的硬件和软件。这些硬件包括网络适配器,而软件则包括协议的实现。在网络中,主机、路由器等设备都必须实现数据链路层。

image

在局域网中,主机、交换机等网络设备都必须实现数据链路层,以便实现数据的可靠传输和交换。

image

从层次上来看,数据在网络中的流动可以被划分为不同的层次,其中数据链路层是其中的一层。数据链路层位于网络协议栈的较低层,负责将数据包封装为帧,并通过物理介质进行传输。

image

仅从数据链路层的角度来观察,数据帧的流动可以被定义为在网络中不同节点之间传输的数据单元。

image

主机H1到主机H2所经过的网络可能涉及多种不同类型的链路层,而不同的链路层可能采用各自不同的数据链路层协议。因此,在数据在网络中流动的过程中,数据链路层起到了至关重要的作用,它负责管理和控制数据在不同链路层之间的传输,并确保数据的可靠性、完整性和有序性。

MAC地址和ARP协议

MAC 地址

MAC地址的全称是媒体访问控制地址(Media Access Control Address),它是网络上以太网或网络适配器的唯一标识符。MAC地址可以区分不同的网络接口,并且被广泛应用于各种网络技术,特别是大多数IEEE 802网络。

MAC地址也被称为物理地址、硬件地址和老化地址。

MAC地址主要用于识别数据链路中互联的节点。如下图所示

image

MAC 地址是一个长度为 48 位的标识符,通常在使用网络适配器(网卡)时会被存储在只读存储器(ROM)中。因此,每个网卡的 MAC 地址都是独一无二的。MAC 地址的结构如下:

image

在MAC地址中,3-24位表示制造商识别码,每个网络接口卡制造商都有一个唯一的识别数字。25-48位用于制造商内部识别每个网卡。因此,可以确保全球没有相同的MAC地址的网卡。

尽管如此,MAC地址也有一些例外情况,即可能会出现重复的情况。然而,只要两个MAC地址属于不同的数据链路层,就不会出现问题。

在Windows电脑上,当你查看ipconfig时,你会看到每个网络接口都有一个对应的MAC物理地址。这是因为现代计算机通常具备多个网络接口,每个网络接口都对应一个MAC物理地址。

例如,你的Windows电脑可能同时连接有以太网、Wi-Fi和蓝牙等多个网络接口。每个网络接口都有自己的MAC物理地址,用于标识该接口所属的设备。

如果你的计算机有多个网络接口(如以太网和Wi-Fi接口),你可能需要查看对应接口的MAC地址。确保你查看的是你感兴趣的网络接口的MAC地址。

ARP 是什么

ARP 协议的全称是Address Resolution Protocol(地址解析协议),它是一种用于实现从IP地址到MAC地址的映射的协议。其作用是通过查询目标IP对应的MAC地址来定位数据分包的接收主机。在IPv4中,ARP协议显得尤为重要。

需要注意的是,ARP仅用于IPv4协议,而IPv6协议使用的是邻居发现协议(Neighbor Discovery Protocol,简称NDP),它被纳入了ICMPv6中。

简而言之,ARP是一种解决地址问题的协议,以IP地址为线索,定位下一个应该接收数据分包的主机MAC地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的MAC地址。

ARP 的⼯作机制

让我们来探讨一下 Address Resolution Protocol (ARP) 的工作机制。假设主机 A 和主机 B 位于同一链路上,无需经过路由器转发。当主机 A 想要向主机 B 发送一个 IP 分组时,主机 A 的 IP 地址是 192.168.1.2,主机 B 的 IP 地址是 192.168.1.3。此时,它们都不知道对方的 MAC 地址是什么。此外,主机 C 和主机 D 是同一链路上的其他主机。

image

为了获取主机 B 的 MAC 地址,主机 A 将发送一个 ARP 请求包到以太网上的所有主机,该请求包包含了主机 A 想要了解的主机 B 的 IP 地址对应的 MAC 地址。这个 ARP 请求包将通过广播的方式发送。

image

当主机 A 发送的 ARP 请求包在同一链路上被接收并解析时,每个主机/路由器都会检查 ARP 请求包中的信息。如果 ARP 请求包中的目标 IP 地址与自己的相同,它们会将自己主机的 MAC 地址写入响应包中,并返回给主机 A。

image

由此,可以通过地址解析协议(ARP)从指定的IP地址获取相应的MAC地址,从而实现在同一链路上的通信。

总结

本文主要介绍了数据链路层的概念和作用,以及MAC地址和ARP协议的相关知识。

数据链路层是网络协议栈中的一层,负责将数据包封装为帧,并通过物理介质进行传输。在局域网中,主机、交换机等网络设备都必须实现数据链路层,以实现数据的可靠传输和交换。

MAC地址是网络上以太网或网络适配器的唯一标识符,用于识别数据链路中互联的节点。MAC地址的结构包括制造商识别码和制造商内部识别码,保证了全球没有相同的MAC地址的网卡。

ARP协议是一种用于实现从IP地址到MAC地址的映射的协议。它通过查询目标IP对应的MAC地址来定位数据分包的接收主机。ARP仅用于IPv4协议,IPv6协议使用邻居发现协议。

ARP的工作机制包括发送ARP请求包到当前以太网上的所有主机,其他主机/路由器通过检查ARP请求包中的信息来回复自己的MAC地址,从而实现在同一链路上的通信。

综上所述,数据链路层在网络中起到了重要作用,而MAC地址和ARP协议是实现数据链路层功能的重要组成部分。

标签:ARP,协议,主机,地址,MAC,链路层,路到
From: https://blog.51cto.com/StudiousXiaoYu/7863247

相关文章

  • Mac上使用jenv管理多个java版本
    Mac上可以使用Homebrew安装jenvbrewinstalljenv配置jenv的环境变量,向~/.profile(bash用户)或者~/.zshrc(zsh用户)文件中添加如下代码exportPATH="$HOME/.jenv/bin:$PATH"eval"$(jenvinit-)"使用如下命令添加java_home的路径到jenvjenvadd/Library/Java/JavaVirtual......
  • macOS 安装 clang-tidy
    先安装homebrew,网上教程很多,推荐官方教程,此处略过通过brew安装llvmbrewinstallllvm创建软连接,指向homebrew安装的clang-tidymkdir-p/usr/local/bin/ln-s/opt/homebrew/Cellar/llvm/13.0.0_1/bin/clang-tidy/usr/local/bin/clang-tidy注1:推荐创建软连......
  • 图文并茂手把手教你在MAC配置Android,nodejs环境,配置安卓真机支持投屏以及测试
    先说nodejs和npm这个很简单,只需要点击下面链接,安装node.js环境即可https://nodejs.org/zh-cn/AndroidAndroidStudio下载地址及版本说明Android开发者官网:https://developer.android.com/index.html(全球)https://developer.android.googl......
  • Figma For Mac v114.3「UI协同设计软件」中文汉化版下载 稳定版
    FigmaMAC版是一款简单好用的UI设计软件,FigmaMAC最新版可以让大家都在一个画板上工作,设计、讨论,甚至直接在别人的工作上继续修改,FigmaMAC版还可以直接在设计界面上进行讨论,令协作更加方便,成员间还可以共享色彩库。Figma是一个基于浏览器的UI设计工具绝大部分的设计工具都是本地......
  • cefsharp 执行 js 并返回结果
    privateasyncvoidbutton1_Click(objectsender,EventArgse){varresponse=awaitbrowser.EvaluateScriptAsync("document.title");if(response.Success)MessageBox.Show(response.Result?.ToString());response=awaitbrowser.......
  • cefsharp 循环从多个页面提取数据
    foreach(varurlinurls){varloaded=false;Action<object,FrameLoadEndEventArgs>frameLoadEndProc=(s,args)=>{if(args.Frame.IsMain&&args.Frame.Url==url.Value){loaded=true;......
  • 在Eclipse将Java代码打包为jar用于jmeter BeanShell(HMAC_SHA1)加密
    Eclipse代码importjavax.crypto.Mac;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importjava.nio.charset.StandardCharsets;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;publicclassHMAC_data......
  • macbook设置充电上限
    针对internal芯片参考https://blog.csdn.net/happyyouli/article/details/115805747直接使用make可能会报错,改用cmakegitclonehttps://github.com/hholtmann/smcFanControl.gitcdsmcFanControl/smc-command添加CMakeLists.txtcmake_minimum_required(VERSION3.1......
  • EndNote 21:文献与论文管理的智能化解决方案 Mac+win版
    EndNote21是一款在学术界被广泛使用的文献和论文管理软件,帮助用户轻松高效地组织、引用、分析和分享文献资源。→→↓↓载EndNote21mac/win版 EndNote21具有强大的文献搜索和导入功能,可以方便地从各大数据库、Web资源和其他EndNote用户共享的文献库中导入所需文献。同时,它......
  • CF1886D Monocarp and the Set
    QuestionsMonocarp有\(n\)个整数和一个集合,他需要把这\(n\)个数添加到集合中,每次添加一次除了第一次,每次添加元素都会输出一个字符如果当前添加的元素比原有的元素都要小,那么输出\(>\)如果当前添加的元素比原有的元素都要大,那么输出\(<\)否则输出\(?\)你给......