[Linux][网络][数据链路层][一][以太网][局域网原理]详细讲解

news2024/10/6 6:49:45

目录

  • 0.对比理解"数据链路层"和网络层
  • 1.以太网
    • 1.认识以太网
    • 2.以太网帧格式
    • 3.认识MAC地址
    • 4.以太网帧格式如何封装/解包?
    • 5.以太网帧格式如何分用?
  • 2.重谈局域网通信原理
    • 0.如何形象的理解?
    • 1.理解局域网通信
    • 2.在发送数据的时候,别人也想发数据,会发生什么?
    • 3.碰撞了发送方主机知道吗?
    • 4.融会贯通理解
    • 5.局域网中主机越多越好,还是越少越好?
    • 6.如果非得在局域网中连接很多主机怎么办?
    • 7.局域网数据帧发送的时候,数据帧越长越好,还是越短越好?
    • 8.补充


0.对比理解"数据链路层"和网络层

  • 决定将数据交付给下一跳路由器的时候,下一跳路由器一定和我在同一个局域网
    • 本质上的两个节点间的一跳都叫做:局域网转发(子网转发)
  • 宏观上,网络的本质就是一个一个子网构成的。只不过子网和子网之间用对应的路由器进行了连接,路由器的工作就是在这么一个个子网当中不断进行转发、进行决策。所以查找的目标主机的时候必须得先找到目标主机所在的子网
  • 所以网络的最后一层要解决的就是,如何做到将主机A的数据转发到同一个局域网下的路由器A,如此便可以做到后续在各自局域网中的一跳(都是局域网子网问题)

1.以太网

1.认识以太网

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

2.以太网帧格式

请添加图片描述

  • **源地址和目的地址:**网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP
  • 帧末尾是CRC校验码

3.认识MAC地址

  • 在局域网当中,想进行转发的时候,首先必须保证每一台主机的唯一性
    • 因为IP地址实际上是网络层的概念,所以在数据链路层当中无法去标定唯一一台主机
    • 所以对于数据数据链路层,需要一个标识主机的唯一方案:MAC地址(物理地址/网卡地址)
    • 个人理解:
      • 虽然使用IP也是可以的,毕竟在局域网内,私有IP照样是具有唯一性的
      • 但是此处数据链路层采取的是MAC地址(另一套地址方案),主要是不想让数据链路层,有任何使用IP的方式在里面,以达到在软件上进行一定程度上的解耦
  • MAC****地址用来识别数据链路层中相连的节点
    • 长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示
      • 例如:08:00:27:03:fb:19
    • 在网卡出厂时就确定了,不能修改
      • MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突
      • 也有些网卡支持用户配置mac地址)

4.以太网帧格式如何封装/解包?

  • 以太网的帧格式采用的是定长报头,帧末尾CRC校验码同样也是定长
  • 当数据链路层向上层网络层进行交付的时候,只需要将数据帧中的报头和有效载荷进行固定长度的分离就行了
    • 头、尾定长去掉就是有效载荷
    • 解包之后每一个字段该怎么拿,字段的位置与大小也都是固定的,很方便获取信息

请添加图片描述

5.以太网帧格式如何分用?

  • 类型字段填的如果是0800,代表的就是有效载荷放的是IP报文,进而向上交付给IP层就可以了
    • 同样的还有0806、8035,以代表有效载荷的不同,从而交付给不同的软件层
      请添加图片描述

2.重谈局域网通信原理

请添加图片描述

0.如何形象的理解?

  • 一个班级在进行点名,老师A进行点名,当点同学F的时候,老师A点名的这个行为,学生B、C、D、E是都听到了的(在坐的所有人都是听到的),但是只有学生F答了一声到。而学生F向老师A答到的时候,同样的学生B、C、D、E也是都听到了的(在坐的所有人都是听到的)
    • 所以,可以说A和B是在进行众目睽睽之下进行定向的通讯
    • 而之所以学生B、C、D、E未做出反应,是因为老师A并未喊到他们,而他们之所以能知道喊的不是他们就是因为他们也听到了的(接收到了的)

1.理解局域网通信

  • 我们先做出如下约定:
    • MAC:Ma、Mb、Mc…
    • IP:IPa、IPb、IPc…
  • 收到的每一个主机拿着其中的目的地址进行对比,看是否是自己,不是就直接丢弃,是就保留,做报头和有效载荷的分离,然后将有效载荷向上进行交付
  • 局域网通讯原理:直接把数据扔到局域网当中,其他目标主机自动会去识别该数据,是自己的就留下,不是自己的就丢弃
    • 通过路由器转发同理,路由器本就是局域网中的主机,其检测到是发送给其的报文就会保留并作后续转发
      请添加图片描述
      请添加图片描述

2.在发送数据的时候,别人也想发数据,会发生什么?

  • 换句话说向网路中扔进一个数据帧,也就是扔了一个光电信号。在一个公共的介质当中,你说你的我说我的,彼此信息必定就会发送干扰
    • 也就是说:如果局域网中,同时有多台主机都在发送数据,数据之间就发送了碰撞

3.碰撞了发送方主机知道吗?

  • 是知道的
  • 与日常的公共场合说话的一样,所有人都听的到,包括我们自身
    • 碰撞的时候发送方的主机也是可以知道的(通过CRC校验码),而一旦碰撞了数据也就无法使用了,所以尽量不能发生碰撞问题
  • 只有发了才知道会不会碰撞,如果碰撞了就会触发避免碰撞算法 – 发送主机会休息随机时间,然后再重新发送
    • 所以数据链路层也需要可靠性

4.融会贯通理解

  • **结论:**主机A向主机F发送消息,这两台主机是在做进程间通讯
    • 进程间通讯的本质是,先得让主机A和主机F看见同一份资源,而这的典型的同一份资源就是局域网,所以在读写局域网的时候,因为该局域网被所有主机共享,所以该局域网可以称为临界资源
  • 而通过碰撞检测的方式(检测到碰撞,则立马根据相关算法进行重传),一定要保证在己方发数据的时候,没有别人的干扰,这就叫做对资源进行独占
  • 本质上:局域网资源是一个临界资源
    • 当进行多个主机通讯的时候,本质上要保证临界资源的数据一致性,就是任何时刻保证一个数据在发
    • 在之前的进程间通讯的学习中是采用的加锁,而在局域网中是先试试,碰撞了就根据一定算法再试试,直到成功即可

5.局域网中主机越多越好,还是越少越好?

  • 主机越少越好
  • 这也就是为什么局域网不能太大,如果局域网太大就会出现一发数据就碰撞的问题,导致数据发送不出去

6.如果非得在局域网中连接很多主机怎么办?

  • 正因为有这种场景需要,存在一种设备 – 交换机
    • 作用:划分碰撞域
  • **特性:**利用交换机将局域网划分成很多很多的子区域,这些子区域依旧属于局域网
  • 工作场景:
    • 如果A想给F发送报文,可以经过交换机直接将报文给F没有任何问题。但是如果B、D、E也有类似的操作,导致发生碰撞,然后交换机识别到碰撞了,交换机就不会将数据往后转发,此时就减少了碰撞的垃圾数据填充的问题
    • 如果A向B发送消息,交换机就甄别到在其包括的局域网一侧,交换机就不会将数据转发到另一侧了
    • 这样大大减小了压力,在另一侧得数据,交换机以同样的方式进行处理
      请添加图片描述

7.局域网数据帧发送的时候,数据帧越长越好,还是越短越好?

  • 既不能太长,也不能太短
    • 越长代表着其要花费更多的时间在局域网中进行传输,更容易发送碰撞
    • 而太短也不好,太短涵盖的有效数据量又太少了

8.补充

  • 在网络转发的过程中,目的IP是不变的
  • MAC帧报头会发生变化
    • 因为每一个主机都有不同的MAC地址,所以当报文跳一个路由器之后,下一跳的MAC源地址与MAC目的地址就变化了
    • 所以有效数据没有变化,但是MAC帧报头是发生变化的
  • 此时可重新理解体会MAC地址和IP地址
    • IP地址在整个转发过程中,尤其是目的IP是一直不变的
      • IP地址的目标一直不变带来的好处是:IP地址描述的是路途总体的起点和终点
    • MAC****地址描述的是路途上的每一个区间的起点和终点

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

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

相关文章

连接和使用vCenter Server嵌入式vPostgres数据库

vCenter Server 早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMware Postgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQL Server数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台…

算法详解——回溯法

一、回溯法概述——问题背景 回溯法是一种解决约束满足问题的方法,特别适用于解决组合问题、搜索优化问题等。它通过逐步构建候选解决方案并且在这个解决方案不再可能满足约束或条件时进行剪枝和回溯。具体来说,回溯法可以应用于以下类型的问题&#xff…

【高阶数据结构】图--最短路径问题

图--最短路径问题 一、单源最短路径--Dijkstra算法1、简介2、解析3、代码4、测试用例5、打印最小路径代码和测试6、缺陷:不能使用负路径 二、单源最短路径--Bellman-Ford算法1、简介2、解析(1)详情i、负权问题:一个点只跑一趟找最…

整除C++

题目&#xff1a; 思路&#xff1a; 循环遍历7(可以被 7 整除的正整数最小为7)~n&#xff0c;如果i%70&#xff0c;就说明i可以被7整除. 代码&#xff1a; #include<iostream> using namespace std; int n;//一个正整数 int main(){scanf("%d",&n);//输入…

Vue.js【路由】

初识路由 提到路由&#xff08;Route&#xff09;&#xff0c;一般我们会联想到网络中常见的路由器&#xff08;Router&#xff09;&#xff0c;那么路由和路由器之间有什么关联呢&#xff1f;路由是指路由器从一个接口接收到数据&#xff0c;根据数据的目的地址将数据定向传送…

git-删除workspace.xml的跟踪

问题描述 .gitignore 文件内容如下&#xff1a; .pyc *.pyc user_files/ .vscode/ __pycache__//.idea/misc.xml /.idea/modules.xml /.idea/inspectionProfiles/profiles_settings.xml /.idea/inspectionProfiles/Project_Default.xml /.idea/batrp_webbackend-server-dev.i…

Java 开发 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

【Linux笔记】 基础指令(二)

风住尘香花已尽 日晚倦梳头 重命名、剪切指令 -- mv 简介&#xff1a; mv 命令是 move 的缩写&#xff0c;可以用来移动文件或者将文件改名&#xff0c;是 Linux 系统下常用的命令&#xff0c;经常用来备份文件或者目录 语法&#xff1a; mv [选项] 源文件或目录 目标文件或目录…

笨方法自学python(三)-数学计算

数字和数学计算 这章练习里有很多的数学运算符号。我们来看一遍它们都叫什么名字 plus 加号-minus 减号/ slash 斜杠*asterisk 星号% percent 百分号< less-than 小于号greater-than 大于号< less-than-equal 小于等于号 greater-than-equal 大于等于号 print ("I …

刷t2、、、

、、 public class ThisTest {public static void main(String args[]) {int i;for (;;) {System.out.println(1);}} } while()的循环条件等于for中循环条件。循环体会有一个条件改变等于for中类似自增条件。while()判断条件一般在while前面会初始化跟for中初始化一样。这样 w…

【讲解下目标追踪】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

ECharts系列文章汇总(持续更新中)

ECharts介绍 ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;提供了直观、生动、可交互、可个性化定制的数据可视化图表。以下是关于ECharts的详细介绍&#xff1a; 发展历程&#xff1a; ECharts最初由百度团队开源&#xff0c;并在2018年初捐赠给Apache基金会&…

软件工程经济学--期末复习资料

软件工程经济学--期末复习资料 前言第一章 绪论第二章 软件工程经济学基础第三章 软件的成本管理与定价分析第四章 软件工程项目评价方法与经济效果评价第五章 软件生产函数、效益分析及不确定性分析第六章 软件工程项目进度计划的制定结尾总结 前言 软件工程经济学&#xff0…

Github2024-05-10开日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目4JavaScript项目1Lua项目1C项目1Rust项目1Dart项目1 RustDesk: 用Rust编写的开源远…

如何映射公司的BS架构系统,出差也能远程访问?

在现代企业运营中&#xff0c;员工出差和分支机构的协同工作变得越来越普遍。然而&#xff0c;如何确保在不同地点的员工都能安全、便捷地访问公司内网的BS&#xff08;Browser/Server&#xff09;架构办公系统&#xff0c;是一个亟待解决的问题。 贝锐花生壳内网穿透服务提供…

vue 路由url中去掉#

修改前效果 想要去掉/# 如何实现&#xff1f; 1、typeScript中去掉url中# 找到项目中的router/index.ts-----------去掉createWebHashHistory中的Hash 将createWebHashHistory修改为createWebHistory 2、javaScript中去掉url中# 找到项目中的router/index.js-----------添加…

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…

2024年第九届数维杯大学生数学建模挑战赛B 题思路1.0版本

B题&#xff1a;生物质和煤共热解问题的研究 数维杯分享资料&#xff08;问题一代码论文思路&#xff09;链接&#xff08;18点更新&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1GSv9dkqcY6G-XUnd0sJe_A 提取码&#xff1a;sxjm 题目分析&#xff1…

RFID在汽车制造中的应用如何改变行业

随着工业4.0和中国制造2025的推进&#xff0c;企业对于智能化、自动化的需求日益增长&#xff0c;RFID射频技术在制造业中已经相当普遍了。在如今这瞬息万变的行业与时代中&#xff0c;RFID技术可以帮助企业获得竞争优势&#xff0c;简化日益复杂的生产流程&#xff0c;推动企业…

Ansible的安装与基础命令的使用

Ansible Ansible 是一个开源的自动化工具&#xff0c;用于配置管理、应用部署和任务自动化。它由 Michael DeHaan 于 2012 年创建&#xff0c;后来被 Red Hat 收购。Ansible 的设计理念是简单易用&#xff0c;不需要在受管节点上安装任何代理软件&#xff0c;它通过 SSH&#…