计算机网络:MAC地址 IP地址 ARP协议

计算机网络:MAC地址 & IP地址 & ARP协议

    • MAC地址
    • IP地址
    • ARP协议


MAC地址

如果两台主机通过一条链路通信,它们不需要使用地址就可以通信,因为连接在信道上的主机只有他们两个。换句话说,使用点对点信道的数据链路层不需要使用地址

再来看使用共享信道的总线型局域网:

在这里插入图片描述

总线上的某台主机要给另一台主机发送帧,表示帧的信号通过总线会传送到总线上的其他所有主机,那么这些主机如何判断该帧是否是发送给自己的呢?

很显然,使用广播信道的数据链路层必须使用地址来区分各主机,也就是说,当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。

如图所示,假设总线上各主机的地址分别用一个不同的大写字母来表示:

在这里插入图片描述

在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制(Media Access Control)的,其英文缩写词为 MAC,因此这类地址被称为 MAC地址。

如图所示,这是主机 C 要发送给主机D的帧:

在这里插入图片描述

帧首部中的目的地址字段应填入主机 D 的 MAC地址。在源地址字段应填入主机 C 自己的 MAC地址,这样总线上其他各主机收到该帧后,就可以根据帧手部中的目的地址字段的值是否与自己的 MAC地址匹配,进而丢弃或接受该帧:

在这里插入图片描述

MAC地址一般被固化在网卡中,因此 MAC地址也被称为硬件地址。但这并不意味着 MAC地址属于网络体系结构中的物理层,而是属于数据链路层的范畴。

一般情况下,用户主机会包含两个网络适配器,一个是有线局域网适配器,也就是有线网卡。另一个是无线局域网适配器,也就是无线网卡。每个网络适配器都有一个全球唯一的 MAC地址,而交换机和路由器往往拥有更多的网络接口,所以就会拥有更多的 MAC地址。

综上所述,严格来说, MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

接下来我们介绍 IEEE 802 局域网的 MAC地址格式:

在这里插入图片描述

它由 48 个比特构成,从左至右依次为第1字节到第6字节

前三个字节是组织唯一标识符 OUI,生产网络设备的厂商需要向管理机构申请一个或多个OUI。

后三个字节是网络接口标识符 EUI ,获得 OUI 的厂商可自行随意分配。

MAC地址的标准表示方法是将每 4 个比特写成一个十六进制的字符,共 12 个字符,将每两个字符分为一组,共 6 组,组间用短线连接。

例如Windows 系统中,MAC地址表示为00-0C-CF-93-8C-92

也可以将短线更改为冒号。例如Linux 系统、苹果系统、安卓系统中,MAC地址表示为00:0C:CF:93:8C:92

在这里插入图片描述

MAC地址第一字节的 b0 位取 0 时,表示该地址是单播地址,取 1 时表示该地址是多播地址。

MAC地址第一字节的 b0 位取 0 时,表示该地址是全球管理的,也就是全球唯一的。取 1 时,表示该地址是本地管理的。

需要注意的是,当MAC地址的比特位全部为 1,就是广播地址。

下面我们来举例说明单播 MAC地址的作用。

假设这是一个拥有三台主机的总线型以太网,各主机网卡上固化的全球单播 MAC地址如图所示:

在这里插入图片描述

假设主机 B 要给主机 C 发送单播帧,主机 B 首先要构建该单播帧。在帧首部中的目的地址字段填入主机 C 的 MAC地址,源地址字段填入自己的 MAC地址,再加上帧中的其他字段,就构成了该单播帧。

主机 B 将该单波针发送出去,主机 A 和 C 都会收到该单播帧:

在这里插入图片描述

主机 A 的网卡发现该单播帧的目的 MAC 地址与自己的 MAC地址不匹配,于是丢弃该帧。
主机 C 的网卡发现该单播帧的目的 MAC地址与自己的 MAC 地址匹配,于是接受该帧并将该帧交给其上层处理。

再来看广播 MAC地址的作用:

在这里插入图片描述

假设主机 B 要发送一个广播帧,主机 B 首先要构建该广播帧在帧首部中的目的地址,广播地址是 16 进制的全 F。 源地址字段填入自己的 MAC 地址,再加上帧首部中的其他字段就构成了该广播帧。

主机 B 将该广播帧发送出去:

在这里插入图片描述

主机 A 和 C 都会收到该广播帧,发现该帧首部中的目的地址是广播地址,就知道该帧是广播帧,接受该帧并将该帧交给上层处理

再来看多播 MAC地址的作用:

在这里插入图片描述

假设主机 A 要发送多播帧给该多播地址07-E0-12-F6-2A-D8。主机 A 首先要构建该多播帧在帧首部中的目的地址字段填入该多波地址,源地址字段填入自己的 MAC地址。再加上其他字段,就构成了该多播帧。

主机 a 将该多拨帧发送出去:

在这里插入图片描述

主机 B 和 C 发现该多播帧的目的 MAC 地址在自己的多播组列表中,因此主机 B 和 C 都会接受该帧并送交上层处理,而主机 D 发现该多波帧的目的 MAC地址不在自己的多播组列表中。主机 D 丢弃该多播帧。


IP地址

IP 地址属于网络层的范畴,而非数据链路层的范畴。属于数据链路层的 MAC 地址和属于网络层的 IP 地址,它们之间存在一定的关系。

IP 地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:用来标识因特网上数以百万的网络
  • 主机编号:用来标识同一网络上不同主机或路由器各接口

假设这是因特网的一部分:
在这里插入图片描述

我们给网络 N8 上的两台主机各分配了一个 IP 地址,给路由器 R4 连接该网络的接口也分配了一个 IP 地址。这三个 IP 地址的前三个数192.168.0是相同的,也就是网络 N8 的编号,而最后一个十进制数各不相同,是网络 N8 上各主机和路由器接口的编号。

换句话说,同一个网络上的各主机和路由器的各接口的 IP 地址的网络号部分应该相同,而主机号部分应该互不相同

N9 上的各主机和路由器的接口各分配了一个 IP 地址,这三个 IP 地址的前三个数192.168.1是相同的,也就是网络 N9 的编号,而最后一个数各不相同,是网络 N9 上各主机和路由器接口的编号。

因特网中不同网络的网络编号必须各不相同。例如,在本例中,网络 N8 的编号为192.168.0,而网络 N9 的编号为192.168.1

接下来我们来看看数据包在转发过程中 IP 地址与 MAC地址的变化情况,如图所示:

在这里插入图片描述

假设主机 H1 要给主机 H2 发送一个数据包,我们从网络体系结构的角度来看,数据包在传输过程中 IP 地址与 MAC地址的变化情况。

需要注意的是,主机中有完整的网络体系结构,而路由器的最高层为网络层,它没有网络体系结构中的运输层和应用层

主机H1处理过程:

网络层封装的 IP 数据报首部中,源 IP 地址应填写主机 H1 的 IP 地址 IP1,目的 IP 地址应填写主机 H2 的 IP 地址IP2,也就是从 IP1 发送给IP2

而在数据链路层封装的帧首部中,源 MAC地址应填写主机 H1 的 MAC地址MAC1,目的 MAC地址应填写路由器 R1 的 MAC地址 MAC3,也就是从MAC1发送给MAC3

路由器R1处理过程:

网络层封装的 IP 数据报,源 IP 地址仍然填写主机 H1 的 IP 地址IP1,目的 IP 地址仍然填写主机 H2 的 IP 地址IP2,也就是从 IP1 发送给IP2

而在数据链路层封装的帧首部中,源 MAC地址应填写路由器 R1 的 MAC地址 MAC4, 目的 MAC地址应填写路由器 R2 的 MAC地址 MAC5,也就是从 MAC4 发送给 MAC5

路由器R2处理过程:

网络层封装的 IP 数据报,源 IP 地址仍然填写主机 H1 的 IP 地址IP1,目的 IP 地址仍然填写主机 H2 的 IP 地址IP2,也就是从 IP1 发送给IP2

而在数据链路层封装的帧首部中,源 MAC地址应填写路由器 R2 的 MAC地址 MAC6, 目的 MAC地址应填写主机 H2 的 MAC地址 MAC2,也就是从 MAC6 发送给 MAC2

通过本例可以看出,在数据包转发过程中,源 IP 地址和目的 IP 地址始终保持不变,而源 MAC地址和目的 MAC地址逐个链路或逐个网络改变

对于本例主机 H1 ,路由器 R1R2 都存在一个共同的问题,那就是只知道目的 IP 地址,但不知道其相应的 MAC地址。如何通过 IP 地址找出其对应的 MAC地址,这是协议 ARP 所要实现的功能。


ARP协议

刚刚我们提出了这样一个问题,那就是如何通过 IP 地址找到其相应的 MAC地址。这就是地址解析协议 ARP 所要实现的主要功能。下面我们就来举例说明 ARP 协议的工作原理。

这是一个共享总线型的以太网,假设主机 B 要给主机 C 发送数据报:

在这里插入图片描述

主机 B 知道主机 C 的 IP 地址,但不知道他的 MAC地址。因此主机 B 的数据链路层在封装 MAC帧时就无法填写目的 MAC地址字段,进而也就无法构建出要发送的 MAC帧。

实际上,每台主机都会有一个 ARP 高速缓存表,ARP 高速缓存表中记录有 IP 地址和 MAC地址的对应关系

当主机 B 要给主机 C 发送数据报时,会首先在自己的 ARP 高速缓存表中查找主机 C 的 IP 地址所对应的 MAC地址,但未找到:

在这里插入图片描述

因此主机 B 需要发送ARP 请求报文来获取主机 C 的 MAC地址。

ARP请求报文的内容是:

我的 i p 地址为192.168.0.2,我的 MAC地址为 00-E0-F9-A3-43-77。我想知道 IP 地址为 192.168.0.3 的主机的 MAC地址。

需要说明的是,为了简单起见,这里我们以比较通俗的语言来描述 ARP 请求报文的内容,但实际上请求报文有其具体的格式。

ARP请求报文被封装在MAC帧中,发送目的地址为广播地址

主机 B 发送封装有 ARP 请求报文的广播帧,总线上的其他主机都能收到该广播帧。

在这里插入图片描述

  • 主机 A 的网卡收到该广播帧后,将其送交上层处理。上层的 ARP 进程解析ARP 请求报文,发现所询问的 IP 地址不是自己的 IP 地址,因此不予理会。

  • 主机 C 的网卡收到该广播帧后,将其送交上层处理。上层的 ARP 进程解析 ARP 请求报文,发现所询问的 IP 地址正是自己的 IP 地址,需要进行响应。

主机 C 首先将 ARP 请求报文中所携带的主机 B 的 IP 地址与 MAC地址记录到自己的 ARP 高速缓存表中。然后给主机 发送 ARP 响应报文,以告知自己的 MAC地址。

ARP响应报文的内容是:

我的 IP 地址是192.168.0.3,我的 MAC地址为 00-0C-CF-B8-4A-82

需要注意的是, ARP响应报文被封装在 MAC帧中,发送目的地址为主机 B 的 MAC地址。主机 C 给主机 B 发送封装有 ARP 响应报文的单播帧。

在这里插入图片描述

  • 主机 A 的网卡收到该单播帧后,发现其目的 MAC地址与自己的 MAC地址不匹配,直接丢弃该帧。
  • 主机 B 的网卡收到该单播帧后,发现其目的 MAC地址就是自己的 MAC地址,将其交付上层处理。上层的 ARP 进程解析 ARP 响应报文,将其所包含的主机 C 的 IP 地址与 MAC 地址记录到自己的 ARP 高速缓存表中。

在这里插入图片描述

主机 B 现在可以给主机 C 发送之前想发送的数据包了。

ARP 高速缓存表中的每一条记录都有其类型,分为动态和静态两种。

  • 动态类型:记录是主机自动获取到的,其生命周期默认为 2 分钟。当生命周期结束时,该记录将自动删除。这样做的原因是 IP 地址与 MAC地址的对应关系并不是永久性的。例如,当主机的网卡坏了,更换新的网卡后,主机的 IP 地址并没有改变,但主机的 MAC地址改变了。

  • 静态类型:记录是用户或网络维护人员手工配置的,不同操作系统下的生命周期不同。例如系统重启后不存在,或在系统重启后依然有效。

ARP 协议只能在一段链路或一个网络上使用,而不能跨网络使用


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550226.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考…

Proxyman Premium for Mac v5.1.1激活版:卓越的网络调试与分析工具

Proxyman Premium for Mac是一款功能强大的网络调试与分析工具,专为开发人员和测试人员精心打造。它集多种功能于一身,为用户提供了全面、高效的网络开发体验。 Proxyman Premium for Mac v5.1.1激活版下载 作为一款跨平台代理工具,Proxyman …

# RAG | Langchain # Langchain RAG:打造Markdown文件的结构化分割解决方案

【文章简介】 在信息技术的现代背景下,高效地处理和分析文本数据对于知识获取和决策支持至关重要。Markdown文件因其易读性和高效性,在文档编写和知识共享中占据了重要地位。然而,传统的文本处理方法往往忽视了Markdown的结构化特性&#xff…

WIN7用上最新版Chrome

1.下载WIN10最新版Chrome的离线安装包 谷歌浏览器 Chrome 最新版离线安装包下载地址 v123.0.6312.123 - 每日自动更新 | 异次元软件 文件名称:123.0.6312.123_chrome_installer.exe。 123.0.6312.123_chrome_installer.exe 文件右键解压缩得到 chrome.7z&#x…

Elasticsearch:下载、启动和账号密码登录

因为我的电脑是 window,以下都是以 window 环境举例。 一、下载 Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,安装前注意java环境的准备。 官网地址:https://www.elastic.co/cn/ 下载地址&#xf…

第十五届蓝桥杯题解-好数

题目大意&#xff1a;一个数的低位为奇数&#xff0c;次低位为偶数&#xff0c;以此类推的数成为好数&#xff0c;例如&#xff1a;1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9 给定一个n&#xff0c;求1-n所有好数的个数&#xff0c;n<1e7 思路&#xff1a;一…

Python 数学应用(四)

原文&#xff1a;zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十一章&#xff1a;其他主题 在本章中&#xff0c;我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…

Python也可以合并和拆分PDF,批量高效!

PDF是最方便的文档格式&#xff0c;可以在任何设备原样且无损的打开&#xff0c;但因为PDF不可编辑&#xff0c;所以很难去拆分合并。 知乎上也有人问&#xff0c;如何对PDF进行合并和拆分&#xff1f; 看很多回答推荐了各种PDF编辑器或者网站&#xff0c;确实方法比较多。 …

C++学习————第六天 (运算符重载 const成员 取地址)

这一篇我们来补齐上一天的 留下的三个默认成员函数 //上一天内容 &#xff1a; nullhttps://blog.csdn.net/island1314/article/details/137371086?spm1001.2014.3001.5502 1、重载 1.1 运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊…

AUTOCAD输出或打印PDF文件时,如何将图形居中且布满图纸?

AUTOCAD输出或打印PDF文件时,如何将图形居中且布满图纸? 如下图所示,我们打开一份DWG格式的图纸文件,然后点击上方的“打印“图标, 如下图所示, 打印机/绘图仪这里选择“DWG To PDF“; 图纸尺寸:这里以普通的A4纸为例进行说明; 打印比例选择“布满图纸“; 打印偏移…

uniapp 组件传值

uniapp 组件传值 父传子子传父 uniapp 组件传值 父传子 在uniapp中&#xff0c;组件传值主要通过props进行。以下是一个简单的例子&#xff1a; 首先&#xff0c;创建一个组件MyComponent.vue&#xff1a; <template><view><text>{{ message }}</tex…

计算机网络(六)应用层

应用层 基本概念 服务器端&#xff08;Server&#xff09;&#xff1a; 服务器是网络中提供服务的计算机或软件程序。服务器通常具有更高的性能、更大的存储空间和更高的带宽&#xff0c;用于提供各种服务&#xff0c;如文件存储、数据库管理、Web托管、电子邮件传递等。服务…

Redis 缓存预热、预热数据选取策略、缓存保温、性能边界

缓存预热 热点数据预热&#xff1a;根据业务分析或统计数据&#xff0c;确定热点数据&#xff08;经常被访问的数据&#xff09;&#xff0c;并将其提前加载到Redis缓存中。可以根据访问频率、访问量或其他业务指标来确定热点数据。定时预热&#xff1a;可以设置定时任务&…

住宅IP代理和机房IP代理之间的区别?

一、什么是数据中心/机房IP代理&#xff1f; 数据中心/机房IP代理是使用数据中心拥有并进行分配和管理的IP的代理&#xff0c;俗称机房IP代理。 二、数据中心/机房IP代理的特点 与住宅代理通过使用ISP拥有和分配的IP地址的设备路由请求的情况不同&#xff0c;数据中心代理利…

什么是线程?线程和进程谁更弔?

第一个参数是所创建进程的pid。 第二个是线程的属性。 第三个参数是返回值为void*&#xff0c;参数也为void*的函数指针。 第四个参数是给第三个参数的参数&#xff0c;也就是给给函数传参。 #include<iostream> #include<pthread.h> #include<unistd.h>…

8thWall vs. AR.js

对于熟悉 JavaScript、WebGL 和 HTML5 等 Web 技术的数字创作者来说&#xff0c;8th Wall 提供了功能丰富且强大的 AR 开发平台&#xff0c;尽管价格较高。 然而&#xff0c;新手开发人员和专注于基于标记的 AR 的开发人员可能会发现 AR.js 更易于使用且更经济实惠。 1、8th Wa…

利用redis和fastapi实现本地与平台策略进行交互

redis在pandas一文有详细使用方法(一文教会pandas-CSDN博客)&#xff0c;具体可视化软件有redisstudio等。它是一个由 Salvatore Sanfilippo 写的 key-value 存储系统&#xff0c;是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络…

看图找LOGO,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建生活场景下的商品商标LOGO检测识别系统

日常生活中&#xff0c;我们会看到眼花缭乱的各种各样的产品logo&#xff0c;但是往往却未必能认全&#xff0c;正因为有这个想法&#xff0c;这里我花费了过去近两周的时间采集和构建了包含50种商品商标logo的数据集&#xff0c;基于YOLOv8全系列的参数模型开发构建了对应的检…

02_JavaWeb中的Tomcat(详解)

文章目录 Tomcat1, 概述1.1 安装1.2 目录结构1.3 启动/停止 2, 资源部署2.1 直接部署: 主要和重要的方式2.2 虚拟映射: 重要2.2.1 方式一:2.2.1 方式二: 2.3 原理解析 3, Tomcat组件3.1 Connector3.2 Engine3.2.1 Host3.2.1.1 Context 4, 其它: 重要4.1 设置 Tomcat 1, 概述 w…

OSPF - 链路状态路由协议

IGP 外部网关路由协议&#xff1a; OSPF &#xff0c; IS-IS EGP 内部网关路由协议&#xff1a; BGP 协议算法&#xff1a; 距离矢量路由协议 链路状态路由协议 lsdb:链路状态数据库 - 存放lsa的地址 RIP&#xff1a;有方向的矢量&#xff0c;距离矢量路由协议&#xf…