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

【网络原理6】数据链路层协议——以太网

 数据链路层负责的是相邻两个网络节点之间的数据以帧为单位进行传输。

 具体关于数据链路层的介绍,已经在这一篇文章当中提到了。

初识网络:IP、端口、网络协议、TCP-IP五层模型_革凡成圣211的博客-CSDN博客TCP/IP五层协议详解https://blog.csdn.net/weixin_56738054/article/details/128666970?spm=1001.2014.3001.5501

目录

以太网数据帧的格式

 以太网帧头

如何查看mac地址

为什么有了IP地址,还需要mac地址 

 IP地址和mac地址是如何相互配合的

帧头当中的"类型"属性 

   类型:0800

类型:0806

类型:0835

 MTU


以太网数据帧的格式

当数据从网络层传输到数据链路层的时候,数据链路层会进一步对数据进行包装。

会包装上帧头、帧尾。

以太网数据帧=帧头+载荷(完整的IP数据段)+帧尾。

下图来源于《小林coding》


 以太网帧头

  以太网帧头当中有3个属性,分别是:目的地址、源地址、类型。

  其中目的地址和源地址并不是IP地址(网络地址),而是mac地址。

这个mac地址不像IP地址一样是可以动态分配的,而是在网卡出场的时候就已经决定好了的。


如何查看mac地址

打开cmd,输入一行命令:ipconfig /all

可以看到,显示"物理地址"的那一行,就是mac地址。


为什么有了IP地址,还需要mac地址 

       这其实是一个历史遗留的问题。假设只有一套地址(一套IP或者一套mac),这样也是完全行得通的。

       但是由于研发IP地址的科学家和研发mac地址的科学家并不是"一伙人",因此也就产生了不一样体系。

       干脆就直接各用各的就ok了,于是就演化成了两套地址体系相互配合的现状


 IP地址和mac地址是如何相互配合的

       IP地址用来描述整个网络传输过程的起点和终点。也就是一台主机另外一台主机之间的传输过程;mac就负责相邻的两个网络节点之间的管理。

      下面举一个例子,来说明一下:

      假如小明想去小红家,那么他需要首先规划路线:

      假如他去一次小红家相当于网络通信一次,那么,就可以认为:

      源IP:小明家

      目的IP:小红家。也就是一次网络通信的起始的网络地址目标网络地址

       而源mac和目的mac就有很大变化了:

       如果小明选择了上面的那一条传输路径。那么

       当小明经过:小明家-->长沙这一段路径的时候,源mac和目的mac分别是:

     源mac:小明家

     目的mac:长沙 

        当小明经过长沙-->武汉这一段路径的时候:

     源mac:长沙

     目的mac:武汉

   接下来的路段,同理......


帧头当中的"类型"属性 

   类型:0800

    普通的以太网数据帧,载荷部分是一个完整的IP数据包


类型:0806

     载荷部分,是一个ARP报文。ARP是一种数据链路层协议。

    通过这个协议,让某个,路由器/交换机,能够认识局域网里面的其他设备。

    这个协议拥有一个类似于哈希表的结构,来映射IPmac之间的关系。


类型:0835

载荷部分,是一个RARP报文。 RARP是一种数据链路层协议。


 MTU

  描述了一个数据链路层的数据帧能够承受的最大长度。

  也就是:载荷部分的最大长度就是MTU

  对于以太网协议:MTU为1500(字节)

  由于数据链路层的MTU的限制,对于IP较大的数据包就要进行分包。

关于怎样分,已经在这一篇文章当中提到了:

【网络原理5】IP协议篇_革凡成圣211的博客-CSDN博客IP数据报https://blog.csdn.net/weixin_56738054/article/details/129045225?spm=1001.2014.3001.5502 

http://www.lryc.cn/news/12837.html

相关文章:

  • 组合数学原理与例题
  • 【机器学习 深度学习】通俗讲解集成学习算法
  • 汉字----dgfont
  • C# chart绘图 鼠标响应
  • 结构体与引用
  • 13.罗马数字转整数
  • JVM垃圾回收机制
  • Java File类、IO流、Properties属性类
  • MySQL备份恢复(十二)
  • 【Java|golang】1792. 最大平均通过率---封装最小堆
  • PHP 页面静态化
  • 【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法
  • 基于android的无人健身房
  • 带你Java基础入门
  • VNCTF 2023 - Web 象棋王子|电子木鱼|BabyGo Writeups
  • 「JVM 编译优化」插入式注解处理器(自定义代码编译检查)
  • 一文彻底理解大小端和位域 BIGENDIAN LITTLEENDIAN
  • 面试准备知识点与总结——(虚拟机篇)
  • spring cloud 集成 seata 分布式事务
  • k8s篇之概念介绍
  • JavaScript学习第1天:浏览器组成、JS的组成、变量、数据类型转化、运算符、while和do...while循环
  • 【Flutter入门到进阶】Dart进阶篇---Dart多线程异步原理
  • WEB系列(二)-----------XSS
  • [python入门㊾] - python异常中的断言
  • 一文告诉你什么是财务数据治理?
  • MySQL数据库调优————ORDER BY语句
  • Linux命令之grep
  • 一起学 pixijs(4):如何绘制文字md
  • mac m1设备上安装Qt并使用qt编程遇到的问题以及解决方式
  • tensorflow 学习笔记(二):神经网络的优化过程