当前位置: 首页 > news >正文

数据链路层之以太网

目录

​前言

什么是以太网?

以太网帧格式

6位源地址和目的地址

什么是MAC地址?

MAC地址和IP地址的区别

2位类型

ARP协议

ARP协议的作用

ARP协议的工作流程

数据长度

MTU对IP协议的影响

CRC校验和


前言

在前面,我们已经讲了在TCP/IP模式下的几个层次:应用层——程序员自定义协议、传输层——常用的TCP协议、UDP协议、网络层——IP协议,那么本篇我们就来了解一下在数据链路层的以太网协议。

什么是以太网?

  • 以太网不是一种具体的网络,而是一种技术标准;既包括了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
  • 以太网中的网线必须使用双绞线;传输速率有10M,100.100M等;
  • 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网、无线LAN等。

以太网帧格式

6位源地址和目的地址

源地址和目的地址记录了该数据帧要从哪里发送到哪里,记录了发送方和接收方的地址,需要注意的是,这里的地址不是IP地址,而是指网卡的硬件地址(MAC地址)。

什么是MAC地址?

MAC 地址,全称为 Media Access Control 地址,是分配给网络接口控制器(NIC)的唯一标识符,用于在物理网络段中进行通信。它是网络通讯的基础组成部分,尤其是在局域网(LAN)技术中,包括 Ethernet 和 Wi-Fi。MAC 地址由 48 位或 64 位组成,通常以六组两位十六位进制数表示,例如 00:1A:2B:3C:4D:5E。这种格式使得 MAC 地址既容易阅读又便于处理。 

MAC地址在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(虚拟机中饭的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)。

我们可以打开cmd输入ipconfig -all进行查看:

MAC地址是用6个字节表示的,比4个字节的IP地址能够分配的数量多上6w多倍,现在的MAC地址其实是能够满足人类的需求,那为什么还要有IP地址?

这是在网络最开始的时候,IP地址和mac地址是由两个团队在同一个时间段各自独立的提出来的,虽然这两个都能用来表示地址,但是使用场景不同,IP地址是在网络层的,MAC地址是在数据链路层使用的,且一个设备具有唯一的MAC地址,一般不能修改。

IP地址用来表示在网络上两个设备之间的起始地和目的地,而MAC则表示在从发送方到接收方路径上每两个节点之间的起始地和目的地

假设我现在在广东汕头,想要去西安。那么我们就先得做好路径规划,从汕头——>广州——>长沙——>西安。路径规划就是网络层做的事,源IP地址是汕头,目的IP地址是西安。那么如果我们现在要出发从汕头到广州,,此时在以太网数据帧(数据链路层)中,源IP地址是汕头,目的IP地址是西安,但源MAC是汕头,目的MAC地址是广州。从广州到长沙,源IP和目的IP依旧是汕头和西安,但源MAC是广州,目的MAC是长沙;而从长沙到西安,源MAC地址是长沙,目的MAC地址是西安。 我们可以观察到,源IP地址和目的IP地址从始至终都是不变的,但源MAC地址和目的MAC地址则是根据两个相邻节点不断变化的。

MAC地址和IP地址的区别

  • IP地址是由服务商分配的,MAC地址是网卡的物理地址;
  • IP地址空调在局域网内随意更改,但MAC地址一般不能更改;
  • IP地址是32位(4个字节),而MAC地址是48位(6个字节);
  • IP地址应用于网络层,MAC地址应用于数据链路层。
  • IP地址描述的是路径总体的起点和终点;而MAC地址描述的是路途上每两个节点的起点和终点。

2位类型

2位类型字段用来描述载荷中存储的是什么类型的数据。可以用来区分不同的以太网帧类型,如以太网帧、IP数据报(0800)、ARP请求(0806)和应答、RARP请求和应答(8035)等

ARP协议

 ARP(全称Adress Resolution Protocol,地址解析协议),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

IP协议路由转发的过程中都是拿着IP地址来进行查路由表的,从而来得到“网络接口”,具体来说就是要传输给哪个MAC地址的设备。这个过程就涉及到了IP地址转换成MAC地址,就需要用到ARP协议来建立IP地址和MAC地址的映射关系。

ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系。

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址。

ARP协议的工作流程

数据长度

在以太网帧格式中,能够容纳的IP数据包的字节数最大为1500字节(相当于1.5kb),在数据链路层中能容纳最大载荷长度又叫做MTU最大传输单元)。MTU的大小跟硬件设备直接相关,不同的硬件设备,对应到了不同的数据链路层协议,也就对应不同的MTU。

MTU会对上层协议作出限制,IP数据包的分包和组包更多的是为了应对MTU的限制。当一个IP数据报达到了1500以上,就会自动拆包。

MTU对IP协议的影响

由于数据链路层MTU的上层协议的限制,因此,对于较大的IP数据包需要进行拆包。

  • 将较大的IP数据包分成多个小包,并给每个小包打上标签;
  • 每个小包IP协议头的16位标识(id)都是相同的;
  • 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第三位用来表示结束标记(当前是否是最后一个小包,是的话设置为1,否则为0);
  • 到达对端时再将这些小包进行顺序重组,拼装到一起返回给传输层;
  • 一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。

CRC校验和

校验和用来校验数据在网络的传输过程中是否出现了错误。以太网协议校验和是在帧尾。不同于其他协议。


以上就是有关数据链路层中以太网协议的相关知识点咯~

若有不足,欢迎指正~

相关文章:

  • windows通过文件系统访问ftp传输中文乱码
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 标准版和厂商定制版
  • 51单片机应用开发(进阶)---数码管显示按键“加”“减”计数
  • Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
  • 【JavaEE】——线程池大总结
  • 上海建站提升在线曝光率的关键
  • 记Flink SQL 将数据写入 MySQL时的一个优化策略
  • 宝塔面板部署雷池社区版教程
  • MySql在更新操作时引入“两阶段提交”的必要性
  • 数据结构及基本算法
  • 《深度学习》卷积神经网络CNN 实现手写数字识别
  • 一次阿里云ECS免费试用实践
  • lime使用记录
  • Nginx配置及部署前端项目,安排!
  • Rce脚本自动化amp;批量
  • EventListener原理
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • GitUp, 你不可错过的秀外慧中的git工具
  • gops —— Go 程序诊断分析工具
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js递归,无限分级树形折叠菜单
  • php ci框架整合银盛支付
  • PV统计优化设计
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue自定义指令实现v-tap插件
  • 给github项目添加CI badge
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 理清楚Vue的结构
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 网络应用优化——时延与带宽
  • 学习JavaScript数据结构与算法 — 树
  • 自定义函数
  • 《天龙八部3D》Unity技术方案揭秘
  • 带你开发类似Pokemon Go的AR游戏
  • ​一些不规范的GTID使用场景
  • #{} 和 ${}区别
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (Charles)如何抓取手机http的报文
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (六)激光线扫描-三维重建
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)大型网站架构演变和知识体系
  • ..回顾17,展望18
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CORE Aws S3 使用
  • .Net MVC4 上传大文件,并保存表单