以太网协议详解

news2024/10/6 5:53:13

文章目录

  • 前言
  • 一、MAC地址
  • 二、以太网协议
    • 1. 以太网数据格式
    • 2. MAC地址表


前言

  假设有这样一张网络拓扑图:
在这里插入图片描述

  在拓扑图中有A、B、C三台计算机,并且它们三个是通过中间的路由器连接的。这时候计算机A要向计算机C发送一条数据,那么数据是怎么样到达计算机C呢?也就是说路由器是怎么知道A要发送数据给谁呢?
  这就是接下来要讲的以太网协议,分为两部分:第一个是MAC地址,第二个是以太网协议。


一、MAC地址

  MAC地址又称物理地址硬件地址,全世界所有的计算机都拥有唯一的MAC地址。我们可以理解为MAC地址就是计算机设备的身份证号码,通过它就能精确找到每台计算机。
  MAC地址共48位bit,由于48个0、1这样的二进制数不便于记忆和使用,故转化为12个十六进制数来表示(一位十六进制数等于四位二进制)。
  那么如何查看计算机的MAC地址呢?步骤如下。
  第一步:同时按下键盘win+R键,打开运行框。
在这里插入图片描述

  第二步:在里面输入命令cmd,点击确定。
在这里插入图片描述

  第三步:进入黑色控制台,在里面输入命令ipconfig/all,然后按下回车键,就可以查看本机所有的物理设备的MAC地址。
在这里插入图片描述

  上图中箭头指向的12位十六进制数,两两一对且用横杠连接的,就是MAC地址(也叫物理地址)。之所以上面会有两个MAC地址,是因为博主电脑上安装了虚拟机,如果有多个虚拟机,则就有多个MAC地址。如果是笔记本电脑的话,上面还会有无线网卡的MAC地址。

二、以太网协议

  • 以太网(Ethernet)是一种广泛使用的局域网技术
  • 以太网协议是位于数据链路层的协议;
  • 使用以太网可以完成相邻设备的数据帧传输;

1. 以太网数据格式

  以太网数据格式如下:
在这里插入图片描述

  前面的两个部分:目的地址源地址,就是我们刚才说的MAC地址。目的地址是要发送到的主机MAC地址,源地址是发出数据的主机MAC地址。那么两个地址下面的数字6是什么意思呢?上面提到MAC地址总共有48个bit位,一个字节等于8个bit位,48/8=6,这里面的6其实表示的就是6个字节。不管是目的MAC地址,还是源MAC地址都是占用6个字节。类型占用2个字节,最后的CRC(循环冗余校验码)占用4个字节。里面的帧数据占用46到1500个字节。
  以上就是以太网的数据格式,关于类型给大家也做一个拓展,这里的类型表示的是要传输的帧数据到底是采用什么协议类型的数据。
  比如说如果是网络层的IP数据,类型就是0800,这里的每个数字都是十六进制数。
在这里插入图片描述
  如果说帧数据是ARP协议的请求或者应答,那么它的类型就是0806。
在这里插入图片描述

  如果帧数据是RARP协议的请求或者应答,那么它的类型就是8035。
在这里插入图片描述

2. MAC地址表

  接下来看看以太网的MAC地址表,地址表的作用是把每个电脑的MAC地址映射到具体的硬件接口,如下图所示。
在这里插入图片描述
  从上图可以看出每个MAC地址都有对应的接口,比如31-B4-9E-ED-85-CA映射的是接口1。
  那么MAC地址表是存放在哪里呢?该怎么用呢?答案很简单,回到我们刚开始提到网络拓扑图。
在这里插入图片描述

  以及刚开始提出的那个问题:网络中数据从计算机A通过路由器E到达计算机C,路由器是怎样知道A的数据是发给C的呢?假设路由器E中存放了MAC地址表,如下图所示。
在这里插入图片描述

  计算机A的MAC地址连接的是E1硬件接口,计算机B连接的是E2接口,C连接的是E3接口。如果说A需要发送数据给C的话,我们来看整个过程。

  1. A通过网卡发出数据帧。
  2. 数据帧到达路由器,路由器取出前6字节(刚才我们提到了,前面的6个字节就是目的机器的MAC地址)。
  3. 路由器匹配MAC地址表,找到对应的网络接口。(我们知道A需要传输给C,那么在以太网数据里面前6个字节就是C的MAC地址,路由器E就会匹配MAC地址表,发现C的硬件接口是E3)。
  4. 最后路由器通过该网络接口发送数据帧。

  这样就完成了数据从A发送到C以及接收的整个过程,这里面发挥重要作用的是MAC地址表。这个MAC地址表实际就是路由器所拥有的,讲到这里,有的小伙伴可能会有疑问了:如果这个MAC地址表中并不知道C的硬件接口具体是哪个,如下图所示。
在这里插入图片描述

  这时候该怎么办呢?我们来看一下这种情况下,路由器是怎么进行处理的。那么同样的,A发送数据给C。

  • 路由器E检查MAC地址表,发现没有C的信息。
  • 路由器E将广播A的数据包到除A以外的端口(也就是E将会把A的数据发送给B和C)。
  • 然后E将会收到来自B、C的回应,并将它们的MAC地址和接口记录下来。记录下来之后,E就会知道C对应的接口是什么了,那么E就可以准确把数据发送到C。

  这就是当路由器不知道MAC地址映射的时候,它是怎么样进行数据包处理的全部过程。

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

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

相关文章

nvm教程

介绍 这个东西,是nodejs官网有个链接里面有很多列表,这是其中一个 下载 https://github.com/coreybutler/nvm-windows/releases 安装 安装前,将.npmrc文件删除;文件位置: C:\Users{User}\AppData\Roaming\npm C:\…

chatgpt赋能python:Python单行for:如何简化你的代码

Python单行for:如何简化你的代码 在Python编程中,for循环是必不可少的一部分,它可以用于遍历列表、元组和字典等各种数据类型。而Python单行for则是一种更加简单、更加紧凑的语法形式,可以让你更加高效地遍历和处理数据。 什么是…

STL--mapset(手撕AVL树,红黑树)

1. 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 存储的是元素本身。那什么是关…

Yolov5涨点神器:注意力机制---多头上下文集成(Context Aggregation)的广义构建模块,助力小目标检测,暴力涨点

1.数据集性能验证 在crack道路缺陷检测任务中,多头上下文集成(Context Aggregation)的广义构建模块实现暴力涨点mAP50从0.954提升至0.992 🏆🏆🏆🏆🏆🏆Yolov5/Yolov7魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀…

内网渗透(八十三)之安装ADCS证书服务

安装ADCS证书服务 本编文章,我们来讲解安装ADCS证书服务,这里注意一下,因为证书服务特性(不能更改计算机名称、网络参数),因此在部署证书服务器时建议独立部署,ADCS证书服务不能和域控是同一台服务器,这里我用的一台加入域的Server2016搭建 1、以 Enterprise Admins …

chatgpt赋能python:Python内置变量的重要性及常用变量介绍

Python内置变量的重要性及常用变量介绍 Python是一种简单易学的脚本语言,其特点是直观、易读、代码简单且易维护。Python内置变量是开发人员在Python编程中必不可少的一部分,它们在程序中扮演着重要的角色。接下来我们来介绍一些常用的Python内置变量。…

chatgpt赋能python:Python的内部类:优雅的封装性与灵活的应用

Python的内部类:优雅的封装性与灵活的应用 Python的内部类是面向对象编程中强大的封装性工具,它在类的内部定义其他类来辅助实现某些功能,可以有效避免类命名冲突、提高代码灵活性等。本文将详细介绍Python内部类的特点及应用场景&#xff0…

chatgpt赋能python:Python单行判断:提高代码效率的利器

Python单行判断:提高代码效率的利器 在Python编程中,单行判断是常用的一种技巧。相比使用if语句,单行判断可以让代码更加简洁、优美,提高代码的效率和可读性。本文将介绍Python单行判断的用法及其优势,帮助读者更好地…

【2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 20页完整论文及代码

相关链接 【2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 详细数学建模过程 1 题目 2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一半以上。近几年,中国每年新增包裹数量相当于美国整个国家一年的…

基于SpringBoot的留守儿童爱心网站的设计与实现

背景 随着留守儿童爱心管理的不断发展,留守儿童爱心网站在现实生活中的使用和普及,留守儿童爱心管理成为近年内出现的一个热门话题,并且能够成为大众广为认可和接受的行为和选择。设计留守儿童爱心网站的目的就是借助计算机让复杂的管理操作…

如何从Ubuntu Linux中删除Firefox Snap?

Ubuntu Linux是一款广受欢迎的开源操作系统,拥有强大的功能和广泛的应用程序选择。默认情况下,Ubuntu提供了一种称为Snap的软件打包格式,用于安装和管理应用程序。Firefox是一款流行的开源网络浏览器,而Firefox Snap是Firefox的Sn…

<Linux开发>驱动开发 -之-基于pinctrl/gpio子系统的LED驱动

<Linux开发>驱动开发 -之-基于pinctrl/gpio子系统的LED驱动 交叉编译环境搭建: <Linux开发> linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下: <Linux开发> -之-系统移植 u…

chatgpt赋能python:Python二维码解码-从介绍到结论

Python 二维码解码 - 从介绍到结论 二维码在现代数字化时代的应用越来越普及,它能够快速、准确地扫描并解码大量的信息。Python作为一种流行的通用编程语言,已经成为开发人员首选的工具之一,为我们解码二维码提供了强大的支持。本篇SEO文章将…

chatgpt赋能python:Python主模块:入门指南

Python主模块:入门指南 什么是Python主模块? Python主模块指的是一组基本模块,通常在Python程序中使用最为广泛的模块。这些模块包含了各种功能,如文件操作、系统库、数据类型、数学运算等。通过使用这些模块,Python…

Carla自动驾驶仿真五:opencv绘制运动车辆的boudingbox(代码详解)

文章目录 一、安装opencv二、opencv绘制车辆的boudingbox1、构造相机投影矩阵函数2、定义将Carla世界坐标转换成相机坐标的函数3、设置Carla并生成主车和相机4、使用队列接收相机的数据5、计算相机投影矩阵6、定义顶点创建边的列表7、通过opencv显示相机的画面8、通过opencv绘制…

知识点梳理:ATTO 647N NHS ester,ATTO 647N 琥珀酰亚胺酯,荧光标记用于红色光谱区

ATTO 647N NHS ester,ATTO 647N SE,ATTO 647N 琥珀酰亚胺酯,ATTO 647N NHS酯 激发波长(nm):646 发射波长(nm):664 反应图像: 产品规格: 1.CAS号:N/A 2.分子式:N/A 3.分…

Sentinel降级规则

1.降级规则简介 官方文档 熔断降级概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的…

chatgpt赋能python:Python倒序遍历

Python倒序遍历 Python是一种常用的编程语言,其操作序列化和数据结构的方式使得其在网站开发、科学计算和人工智能领域具有重要作用。本文将重点介绍Python中倒序遍历的基本原则和实现方法。 什么是倒序遍历 倒序遍历是指从后往前迭代序列的过程。Python中提供了…

SSRF之GOPHER协议利用

目录 GOPHER协议 GOPHER协议发起的格式 GOPHER利用工具 案例一:CTFSHOW-359关 GOPHER协议 GOPHER协议是一种比HTTP协议还要古老的协议,默认工作端口70,但是gopher协议在SSRF漏洞利用上比HTTP协议更有优势。GOPHER协议可以以单个URL的形式…

chatgpt赋能python:Python编写接口实践:让API更高效、更可靠

Python编写接口实践:让API更高效、更可靠 随着互联网技术的不断发展,API已经成为了现代应用架构的基石之一。而Python作为一种高效、灵活的语言,也逐渐成为了接口开发的首选。 什么是API接口? API是应用程序接口(Ap…