数据链路层协议【MAC帧和ARP协议】

news2024/11/24 3:57:44

全文目录

  • 以太网帧格式
  • MAC地址
    • MAC地址和IP地址对比理解
  • MTU
      • 定义:
      • 细节:
      • 为什么它重要:
    • MTU对IP协议的影响
    • MTU对TCP和UDP的影响
  • ARP协议
    • ARP数据报的格式
    • ARP协议的作用
    • ARP协议的工作流程

以太网帧格式

定义:

以太网是一种数据链路层和物理层标准,用于在计算机之间进行数据帧的传输。它基于多点总线传输方式,使用CSMA/CD(载波侦听多路访问/冲突检测)为媒体访问控制方法。

在这里插入图片描述

我们可以将以太网帧比喻为一封邮件:

  1. 前导码 (Preamble):这就像信封的封口纹理,当你摸到它时,你知道你即将打开一封信。

  2. 起始帧定界符 (SFD):这是你真正开始打开信封的地方,告诉你:“好了,邮件开始了。”

  3. 目的MAC地址:这是信封上写的收件人地址。它告诉邮递员这封信应该送到哪里。

  4. 源MAC地址:这是信封上的发件人地址,告诉你这封信来自哪里。

  5. 类型/长度:这就像信封上的邮票,告诉邮递员这是什么类型的信件(例如,是普通信件、快递还是特快专递),或者信的重量。

  6. 数据与填充:这是信封里的实际信件内容。有时,为了保护信件不被损坏或使其看起来更饱满,我们可能会在里面放一些填充物。

  7. 帧校验序列 (FCS):这就像信封底部的封条,如果它被撕破或损坏,说明信件在途中可能已经被打开或损坏。

将整个以太网帧想象为这样一封邮件,可以帮助我们更形象地理解每个部分的作用和重要性。

MAC地址

MAC地址,全称为"媒体访问控制地址"(Media Access Control Address),是一个网络设备在局域网中的唯一标识。它是一个12位的十六进制数,通常写作6个组,每个组2个字符,例如:00:1A:2B:3C:4D:5E

以下是关于MAC地址的一些要点:

  1. 固定和唯一:每个网络设备出厂时都被分配一个独特的MAC地址。这个地址在生产时被硬编码到设备上,也被称为"物理地址"或"硬件地址"。

  2. 分层:MAC地址是数据链路层(OSI模型的第2层)的地址。与IP地址(网络层地址)不同,MAC地址不是为了指定网络上的位置,而是为了标识网络上的物理设备。

  3. 制造商标识:MAC地址的前半部分是制造商的唯一标识,被称为组织唯一标识符(OUI)。这使得我们可以通过MAC地址推断出制造设备的公司。

  4. 广播地址:全F的MAC地址(FF:FF:FF:FF:FF:FF)是广播地址,发送到这个地址的数据包会被网络上的所有设备接收。

  5. 局域网内使用:MAC地址主要在局域网内使用,用于指导数据在网络内部如何流动。当数据离开局域网进入互联网时,它将依靠IP地址进行路由。

  6. 可变性:虽然每个网络设备都有一个固定的MAC地址,但许多现代设备允许用户更改或伪造MAC地址。

MAC地址是以太网和许多其他网络技术的基础。在一些网络操作中,例如ARP(地址解析协议),MAC地址被用来将网络层的IP地址映射到数据链路层的物理地址。

MAC地址和IP地址对比理解

MAC地址和IP地址的结构化对比:

特性MAC地址IP地址
定义网络接口卡(NIC)的唯一标识符网络上每个设备的逻辑地址
长度和格式12位十六进制数 (例如: 00:1A:2B:3C:4D:5E)IPv4: 32位 (例如: 192.168.1.1), IPv6: 128位
分层OSI模型的数据链路层(第2层)OSI模型的网络层(第3层)
变动性通常固定,但可伪造可以是静态或动态
范围局域网内部全球互联网
作用标识特定的物理设备确定网络上的逻辑位置
来源由设备制造商在生产时分配由网络管理员分配或由DHCP自动分配
可见性仅在本地网络内可见可在整个互联网上可见(除非位于NAT背后)

这种结构化的表示方法更容易为人们快速比较和理解两种地址的主要差异。

MTU

MTU (Maximum Transmission Unit)

定义:

MTU 是指在一个网络链接上可以发送的数据包的最大尺寸,不包括数据链路层的帧开销。换句话说,它是指不需要进行碎片化的数据包的最大长度。

查看硬件地址和MTU

在这里插入图片描述

细节:

  1. 大小: 默认的 Ethernet MTU 为 1500 字节。这意味着对于普通的 Ethernet 设备,任何大于1500字节的数据包都需要在传输前进行碎片化。

  2. 碎片化: 如果数据包的大小超过 MTU,则需要进行碎片化,以便通过网络进行传输。在目的地,这些碎片再次被组装成原始数据包。

  3. 问题: 如果 MTU 设置得过小,将导致更多的碎片化和增加的头开销。如果设置得过大,可能会导致数据包传输失败。

  4. 路径 MTU 发现: 路径 MTU 发现是一种机制,其目的是确定两个 IP 主机之间通信路径上的最小 MTU。这可以避免碎片化并优化网络传输。

  5. 应用: 在某些VPN或隧道协议中,可能需要减小MTU,因为这些协议会增加额外的头信息。

  6. 修改: 在大多数操作系统中,可以手动设置网络接口的 MTU,但通常建议使用默认值,除非有特定的需要。

为什么它重要:

MTU 对于网络性能至关重要。正确的 MTU 设置可以确保网络数据有效、高效地传输,而不会产生不必要的延迟或传输问题。不恰当的 MTU 设置可能导致网络性能下降或其他传输问题。

MTU对IP协议的影响

在这里插入图片描述

MTU(Maximum Transmission Unit)和IP协议之间有紧密的联系。MTU定义了在特定网络技术中,数据链路层可以承载的最大IP数据包大小,而不需要进行碎片化。以下是MTU对IP协议的一些主要影响:

  1. IP碎片化:

    • 当IP数据包的大小超过给定链接的MTU时,数据包必须被碎片化才能传输。
    • 在发送端,IP数据包被分解成更小的碎片,这些碎片独立地通过网络传输,并在接收端重新组装。
  2. 效率与性能:

    • 碎片化和重新组装过程会消耗额外的计算和网络资源,可能导致延迟。
    • 过多的碎片化可能会降低网络性能,因为每个碎片都需要独立的头信息,增加了总体传输的开销。
  3. 路径MTU发现:

    • 路径MTU发现是一种协议机制,用于确定两个IP端点之间的最小MTU。这有助于确保数据包在整个路径上不需要碎片化。
    • 如果路径中的任何链接的MTU小于数据包的大小,路由器通常会丢弃该数据包,并通过ICMP消息通知发送端。
  4. 可靠性问题:

    • 如果某个碎片在传输中丢失,整个原始数据包都可能需要重新发送。
    • 大量的碎片化可能增加丢包的风险。
  5. 安全问题:

    • 碎片化可以被用作网络攻击的一种手段,例如碎片化重叠攻击,其中攻击者发送重叠的IP碎片试图绕过安全设备。
  6. VPN和隧道:

    • 使用VPN或其他隧道技术可能需要减小MTU,因为这些技术为数据包添加了额外的头部。

总之,MTU对IP协议的工作方式、效率和安全性都有深远的影响。正确地管理和配置MTU可以确保网络数据的有效、高效和安全传输。

在这里插入图片描述

MTU对TCP和UDP的影响

MTU(Maximum Transmission Unit)指定了网络层最大可传输的数据单元。当数据需要在网络上进行传输时,它会受到该链接的MTU的限制。如果数据单元(例如TCP或UDP数据包)超过MTU,那么它会在IP层被碎片化。这对于传输层协议,特别是TCP和UDP,有以下影响:

  1. TCP的影响:

    • 自适应MTU:TCP通过路径MTU发现(PMTUD)机制,尝试确定两个端点之间的最小MTU,以避免碎片化。

    • 性能和吞吐量:如果TCP段大小(或MSS)不正确地配置,而超过路径的MTU,可能导致不必要的碎片化。这会增加延迟,降低吞吐量,并可能导致部分或全部TCP段在传输过程中丢失。

    • 拥塞控制:由于碎片化导致的数据包丢失,TCP拥塞控制算法可能错误地将其解释为网络拥塞的信号,从而导致窗口大小减小,降低传输速度。

    • 重传:如果一个碎片在传输过程中丢失,整个原始的TCP段可能都需要被重传,尽管其他碎片已成功到达。

  2. UDP的影响:

    • 不保证重新组装:与TCP不同,UDP不保证数据的传输。如果一个UDP数据包被碎片化,并且其中的一个碎片在传输过程中丢失,那么整个数据包都会被丢弃。UDP没有重传机制来处理这种情况。

    • 应用程序处理:考虑到UDP的这种特性,许多应用程序被设计为发送小于常见MTU值的数据包,例如1400字节,以避免碎片化。

    • 延迟:尽管UDP自身没有拥塞控制,但由于碎片化造成的延迟可能会影响UDP流量,特别是在实时应用程序如VoIP和在线游戏中。

  3. 其他注意事项:

    • 碎片化和防火墙/安全设备:许多安全设备不喜欢处理碎片化的数据包,因为它们可能被用来绕过检测。这可能导致碎片化的数据包被丢弃,从而影响TCP和UDP的可靠性和性能。

    • UDP碎片化攻击:由于UDP不进行重传,它可能更容易受到基于碎片化的DoS攻击。

综上所述,虽然MTU是一个网络层参数,但它对传输层协议,尤其是TCP和UDP,有直接的影响。理解这种影响并正确地配置MTU和相关参数是关键,以确保网络应用程序的最佳性能和可靠性。

ARP协议

ARP (Address Resolution Protocol) 是一个用于将32位的IP地址映射到物理地址(例如MAC地址)的协议。它是局域网内(尤其是在以太网环境中)不可或缺的协议,因为在数据链路层,通信是基于物理地址,也就是MAC地址进行的。

ARP数据报的格式

在这里插入图片描述

字段说明:

  1. 硬件类型 (HTYPE): 这个字段定义了正在使用的硬件类型。例如,以太网的值是1。

  2. 协议类型 (PTYPE): 这个字段定义了操作的上层协议。例如,IPv4的值是0x0800。

  3. HLEN: 硬件地址长度。对于以太网,这个值是6。

  4. PLEN: 协议地址长度。对于IPv4,这个值是4。

  5. 操作码 (OPER): 定义操作类型,1表示ARP请求,2表示ARP响应。

  6. 发送者硬件地址 (SHA): 发送方的硬件地址(通常是MAC地址)。

  7. 发送者协议地址 (SPA): 发送方的协议地址(通常是IP地址)。

  8. 目标硬件地址 (THA): 目标的硬件地址。对于ARP请求,这个字段通常被设置为0,因为发送方正在查找这个地址。

  9. 目标协议地址 (TPA): 目标的协议地址。这是发送方想要知道的硬件地址对应的IP地址。

ARP协议的作用

  1. 解析地址:ARP允许网络设备(如计算机、路由器)在拥有一个目标IP地址的情况下,查询该IP地址对应的MAC地址。这是实现IP网络上的通信的关键,因为在数据链路层,信息是基于MAC地址发送的。

  2. 维护ARP缓存:为了提高通信效率,每个网络设备都维护了一个ARP缓存或ARP表。这个表包含了近期解析的IP地址和对应的MAC地址的映射。通过使用这个缓存,设备可以快速地找到一个已知的IP地址的MAC地址,而无需再次发送ARP请求。

  3. 动态学习:当设备收到一个ARP请求或响应时,它会更新其ARP缓存,从而学习新的IP到MAC的映射。这种动态学习机制使得ARP能够适应网络拓扑的变化。

  4. 广播请求,单播响应:当设备需要解析一个IP地址时,它会广播一个ARP请求到整个局域网。只有拥有该IP地址的设备会响应该请求,发送一个包含其MAC地址的ARP响应。这个响应是单播的,只发送给发起请求的设备。

  5. 防止地址冲突:在某些网络配置场景中,ARP还可以被用来检测IP地址冲突。例如,如果一个设备配置了一个静态IP地址,并在网络上广播一个ARP请求查询这个地址,但接收到了一个响应,这意味着网络上有其他设备使用了同样的IP地址,从而导致地址冲突。

总的来说,ARP是IP网络中的核心协议,它为IP通信提供了必要的地址解析机制。

ARP协议的工作流程

在这里插入图片描述

ARP协议的工作流程主要涉及到地址解析和维护ARP缓存表。以下是ARP协议的基本工作流程:

  1. ARP请求

    • 当主机A想要与同一局域网上的主机B通信,但不知道主机B的MAC地址时,主机A会在网络上广播一个ARP请求。
    • 这个ARP请求包含:发送者的IP和MAC地址(主机A的地址),以及目标的IP地址(主机B的地址)。
    • ARP请求实际上是在询问:“谁拥有这个IP地址,可以告诉我你的MAC地址吗?”
  2. ARP响应

    • 局域网上的所有主机和设备都会收到这个ARP请求,但只有目标IP地址匹配的主机(在这里是主机B)会响应。
    • 主机B会发送一个ARP响应给主机A。这个响应包含:发送者的IP和MAC地址(主机B的地址)。
    • 这个ARP响应实际上是在告诉主机A:“我拥有这个IP地址,这是我的MAC地址。”
  3. 更新ARP缓存

    • 当主机A收到ARP响应后,它会更新其ARP缓存表,添加或更新主机B的IP地址和对应的MAC地址的条目。
    • 为了减少网络上的ARP请求的数量,ARP缓存表中的条目通常会被保留一段时间。但如果长时间不使用,这些条目可能会过期并被删除。
  4. 直接通信

    • 一旦主机A知道了主机B的MAC地址,它就可以开始使用这个地址在数据链路层进行通信。
  5. 地址冲突检测

    • 在某些情况下,ARP也用于地址冲突检测。例如,如果主机A试图配置一个IP地址,它可能首先会在网络上发送一个ARP请求,看看是否有其他设备响应。如果有设备响应,这意味着这个IP地址已经被其他设备使用,从而产生了地址冲突。
  6. ARP欺骗/ARP欺诈

    • 虽然ARP是一个非常有用的协议,但它也容易受到攻击,尤其是ARP欺骗攻击。在这种攻击中,攻击者发送伪造的ARP响应,试图使网络上的设备相信攻击者的MAC地址与某个IP地址相关联。这可以用来执行中间人攻击或其他网络攻击。

总之,ARP协议在局域网内通过简单的请求-响应机制实现IP地址到MAC地址的映射,使得基于IP的通信成为可能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】几种常用的机器学习调参方法

在机器学习中,模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中,模型的超参数调整是模型优化中最重要的环节之一。超参数(Hyperparameters)在机器学习算法中需要人为设定,它们不能直接从训练数据…

儿童产品和婴儿产品上架亚马逊美国站CPC认证测试标准

婴儿橡皮奶嘴 (ASTM F963, EN 1400, AS 2432) 婴儿奶嘴夹 (EN 12586, BS EN 12586) 婴儿学步车 (ASTM F977, EN 1273, BS EN 1273) 婴儿背带 (ASTM F2236, EN 13209, BS EN 13209) 奶瓶奶嘴 (EN 14350, BS EN 14350) 家用双层床 (ASTM F1427, EN 747, BS EN 747, AS/NZS 4…

uni-app小程序使用vant

步骤一:安装 Vant Weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production步骤二:在根目录下创建“wxcomponents”文件夹 步骤三:找…

win7中安装node14和vue

下载并安装低版本node 13 到官网去找早期历史版本的 nodejs 13 msi格式即可,并一键安装,我安装在了 D:\Program Files\nodejs 目录下 https://nodejs.org/download/release/v13.14.0/ 下载高版本node 14 下载高版本的node zip包 https://nodejs.org/…

AndroidPicker的使用

项目地址:https://github.com/gzu-liyujiang/AndroidPicker 历史版本:https://github.com/gzu-liyujiang/AndroidPicker/blob/master/ChangeLog.md 依赖配置 // JitPack 远程仓库:https://jitpack.iomaven { url https://jitpack.io } 所有选择器的基…

网络安全(网络安全)小白自学

想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…

利用日期创建文件-多用于数据库的备份

功能:根据日期变化实现文件的创建 1)知识点,date命令的用法 --date"n day ago" %Y%m%d #n天前,当天则可以去掉--date参数 2)文件名的拼接 ${filename}${date} 3查看结果文件 后期学循环语句可以改一下…

git,ssh,sourcetree代码管理

安装Git并建立与GitHub的ssh连接 1、安装git,设置git的用户信息(需要通过用户信息来显示你是谁) 2、配置SSH, 因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,GitHub需要识别是否是你推送,Git…

部署ELK

一、elasticsearch #拉取镜像 docker pull elasticsearch:7.12.1 #创建ELK docker网络 docker network create elk #启动ELK docker run -d --name es --net elk -P -e "discovery.typesingle-node" elasticsearch:7.12.1 #拷贝配置文件 docker cp es:/usr/share/el…

HTML脚本、字符实体、URL

HTML脚本&#xff1a; JavaScript 使 HTML 页面具有更强的动态和交互性。 <script> 标签用于定义客户端脚本&#xff0c;比如 JavaScript。<script> 元素既可包含脚本语句&#xff0c;也可通过 src 属性指向外部脚本文件。 JavaScript 最常用于图片操作、表单验…

网络安全好就业吗?

现目前而言&#xff0c;网络安全工程师仍是比较紧缺的。但网络安全行业前景好并≠网络安全的入学门槛低&#xff0c;也≠网络安全行业适合所有转岗的人。行业紧缺的一直是技术过硬&#xff0c;德才兼备的优秀人才。 一、网络安全适合哪些人&#xff1f; 首先&#xff0c;是对…

K8s Error: ImagePullBackOff 故障排除

Error: ImagePullBackOff 故障排除 1. 起因 起因是要在一组k8s环境下做个Prometheus的测试,当时虚拟机用完直接暂停了. 启动完master和node节点后重启了这些节点. 当检查dashboard时候发现Pod处于ImagePullBackOff状态,使用命令查看详细情况 kubectl describe pods -n kuber…

极简安装win10

0 概述 本文适合那些追求高性能的人。本文的重点不是具体步骤&#xff0c;而是使用高效系统的思路。 0.1 为什么选win10? 虽然目前win11都出来了&#xff0c;但很吃硬件&#xff0c;新机i12,i13的可以装win11。像我们这些买电脑好几年的(i7),还是win10更合适。 0.2 重装效…

R语言用jsonlite库写的一个图片爬虫

以下是一个使用R语言和jsonlite库下载图片的程序。首先&#xff0c;我们需要导入jsonlite库和options()函数&#xff0c;然后将代理服务器的主机名和端口号设置为"duoip"和"8000"。接着&#xff0c;我们将URL设置为"https://yun.baidu.com/"&…

R语言如何写一个爬虫代码模版

R语言爬虫是利用R语言中的网络爬虫包&#xff0c;如XML、RCurl、rvest等&#xff0c;批量自动将网页的内容抓取下来。在进行R语言爬虫之前&#xff0c;需要了解HTML、XML、JSON等网页语言&#xff0c;因为正是通过这些语言我们才能在网页中提取数据。 在爬虫过程中&#xff0c;…

链表指定结点的删除

删除节点就是将指定结点从链表中删除。 删除节点分为两种情况&#xff0c;一种是链表头删除&#xff0c;另一中链表中间或尾部删除。将待删节点于前一结点解除指向(中间或尾部)或直接删除该节结点并重建链表头(头节点)。 删除结点有以下情况&#xff1a; 1.链表为空&#xf…

ASTM F963-23美国玩具安全新标准发布

新标准发布 2023年10月13日&#xff0c;美国材料与试验协会&#xff08;ASTM&#xff09;发布了新版玩具安全标准ASTM F963-23。 主要更新内容 与ASTM F963-17相比&#xff0c;此次更新包括&#xff1a;单独描述了基材重金属元素的豁免情况&#xff0c;更新了邻苯二甲酸酯的管控…

Classifier-Free Guidance

1.为什么需要分类引导 顾名思义&#xff0c;在原来扩散模型的基础上加上一个引导&#xff0c;让扩散模型朝着我们想要的方向去生成图像 从上图可以了解到生成下一张图像是有分类器参与的 无分类器就是这种形式要参与下一张图像的生成

Proxysql读写分离

Proxysql读写分离 主从配置 # /etc/my.cnf 主节点 [mysqld] log-binmysql-bin server-id1从节点 [mysqld] server-id2 read_only1#初始化以及创建主从复制用户 mysql> alter user rootlocalhost identified with mysql_native_password by Jianren123; Query OK, 0 rows …

【QT】基本的绘图操作和高级绘图

基本绘图 新建项目 重新绘图事件 画基本图形 #include "widget.h" #include "ui_widget.h" #include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }/…