【网络】数据链路层

目录

以太网

以太网的帧格式

MSS

交换机

MTU对UDP的影响

ARP协议


数据链路层是软件层的最底层协议,它的下面就是物理层,那么下面我们就来介绍一下它负责在网络通信中完成什么工作

我们前面说的IP协议是解决如何进行跨网络转发的,也就是转发时的路径选择问题。比如一个主机A要跨公网转发到主机B,先不要说A如何到B,我们先说A如何到距离A最近的路由器(与A处于同一个子网,负责转发A的消息的路由器)的,这就需要用到数据链路层

并且跨网络转发到目标主机本质就是一个报文经历了无数个子网

所以数据链路层是解决同一个网段之间的主机的如何通信的问题的,即局域网通信

以太网

我们目前应用非常广泛的局域网就是以太网,就是我们平常的拉网线

“以太网”不是一种具体的网络,而是一种技术标准

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN(WIFI属于无线LAN的一种实现方式)等

每个网卡都有自己的MAC地址,我们可以通过下面的命令看到

ether就是以太的意思,MAC地址占6个字节

以太网的帧格式

下面是以太网的帧格式

我们可以看到数据大小的范围是46-1500,这个1500就是我们之前说的mtu(Maximum Transmission Unit最大传输单元),也正是有mtu的存在,tcp才不会将滑动窗口中的数据一次性全发,而是分批次。

如果IP层给的数据少于46个字节我们不用担心,数据链路层会自动填充。填充后也不用担心找不到IP层有效载荷的结尾,因为IP协议报头字段中不仅要四位首部长度,还有16位总长度

那么以太网发出的报文报头和有效载荷如何分离呢?就是通过14个字节的固定长度的报头

如何分用(向上交付)呢?就是通过报头中的类型字段,不同的数字表示上层是IP还是ARP还是RARP(ARP和RARP也属于数据链路层但是位于MAC帧上层)

MSS

不分片,TCP能发送的单次最大长度是多少呢?也就是说IP报头+TCP报头+TCP有效载荷=1500字节

那么TCP有效载荷其实最大就是1460字节,这个我们叫做MSS(Maximum Segment Size 最大段尺寸)

其实TCP进行三次握手时,双方就会交换这个尺寸,并且用两者间最小的那个作为最终的MSS

所以局域网进行通信就是数据链路层收到一个报文后看报文中的MAC地址是不是自己,不是自己就可以丢弃了,如果是自己在交给上层IP,由IP决定报文中IP地址是否相同,如果相同就交TCP,不同就证明还要继续传,此时再交给数据链路层让它封装发送

以太网同一时刻只能是一台主机发消息,否则信息会碰撞,影响数据。如果消息碰撞那么进行重发,所以不止有TCP会重发

所以我们可以把局域网当成临界资源,同一时刻只允许一台主机访问;像令牌环网就更明显了,令牌就相当于一把锁,只有持有锁的主机才可以发消息

交换机

下面我们来介绍一下交换机,交换机是在局域网中负责转发和划分碰撞域的设备

我们知道局域网中我们要尽量避免消息碰撞,于是我们可以引入交换机这个设备,它的大致工作图像下面这样

一开始交换机其实并不知道各个主机的存在,交换机也不会影响消息的转发,随着消息的不断发送交换机的左右接口慢慢认识到了左边和右边都有哪些主机存在,于是之后比如A向G发消息,那么交换机还是要把消息转发到右边的,但是如果A给C发消息,交换机就不会把消息发送到右边,就减小了消息碰撞的概率

MTU对UDP的影响

一旦UDP携带的数据超过1472(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分成多个IP数据包

者多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败,那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了

ARP协议

上面说数据链路层是负责子网内转发,但事实是我们并不知道以太网帧格式的目的MAC地址,所以ARP就是一种协议,负责把IP地址转成IP对应的MAC地址

ARP也属于数据链路层但是位于MAC帧上层,它属于一个管理的协议,并不向上交付

ARP采取的方式是以广播的形式向局域网内的主机发送请求,然后与目标IP相符的主机会发回它自己的MAC地址,就是通过这样的简单的形式就可以拿到目标主机的MAC地址

我们用arp -a可以查到Linux和Windows中的arp缓存,就是IP地址和MAC地址的对应关系

这个缓存只会缓存一段时间,因为其实MAC地址也会更新,比如换网卡

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

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

相关文章

三维测量与建模笔记 - 3.2 直接线性变换法标定DLT

DLT - Direct Linear Transform 上图中,透视成像对应的公式是共线方程,可以参考以下链接: https://zhuanlan.zhihu.com/p/101549821https://zhuanlan.zhihu.com/p/101549821 对于标定来说,需要找到。已知量是。 (u,v)是…

语音识别中的RPM技术:原理、应用与发展趋势

目录 引言1. RPM技术的基本原理2. RPM的应用领域3. RPM技术的挑战与发展趋势4. 总结 引言 在语音识别和音频处理领域,RPM(Recurrent Phase Model,递归相位模型)技术正逐渐崭露头角。它作为一种创新的信号处理方法,通过…

C语言程序的机器表示(逆向+函数调用栈详解版)

C语言程序的机器表示 1 基本数据类型 在Windows系统中,通常一个字等于两个字节,在32位程序和64位程序,在处理数据时,通常对8,4,2和1字节数据进行处理 x86使用的是浮点寄存器,Intel提供了8个128…

Linux 系统目录结构

1.ls /查看目录 (1)/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 (2)/boot:存放启动 Linux 使用的一些核心文件,包括一些连接文件以及镜像文件。 &#xff0…

基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真。本系统包括PV模块,电池模块,电池控制器模块,MPPT模块,PWM模…

matlab图像处理(1)

注意: 读取图像文件时需若图像不在工程目录文件下,需在代码中表明其其他路径的具体位置及名称

1.3 自然语言处理的应用

自然语言处理(NLP)在多个领域有广泛应用,如自动文摘、机器翻译、情感分析等。本实战将通过NLTK库,演示文本预处理的关键技术,包括小写转换、去噪、文本规范化、词干提取、词形还原、标记化以及删除停止词。这些技术为构…

更改lvgl图片的分辨率(减少像素)达到减小内存占用的目的

lvgl的内存占比过大,更改图片的分辨率(减少像素)达到减小内存占用的目的,可以用更多的空间去开发其他的功能 -- 由于lvgl中图片占的内存过大,所以需要更改图片的分辨率(降低像素的方式) --注意…

斗破QT编程入门系列之一:认识Qt:初步使用(四星斗师)

斗破Qt目录: 斗破Qt编程入门系列之前言:认识Qt:Qt的获取与安装(四星斗师) 斗破QT编程入门系列之一:认识Qt:初步使用(四星斗师) 参考书籍 《Qt5.9 C开发指南》 斗破观…

练习LabVIEW第四十二题

学习目标: 使用labview编写一个用户确认界面: 我们在程序中赋予5个人的账号密码,账号使用人名,密码随便,并规定相关权限。访问权限要在前面板显示,并且访问成功与否也要有显示。 开始编写: 前…

mqtt 传递和推送 温湿度计消息 js

mqtt 传递和推送 温湿度计消息 做了一个mqtt的小网站 包括设备管理,订阅管理,连接认证订阅授权 这里我新增了一个设备 订阅组温湿度里面有两个订阅 设备详情授权给设备使用 设备连接 和之前的wifi连接一样 温湿度也和之前的使用一样 require(u…

xinference 使用命令实践记录

1. qwen-chat 模型相关的参数组合,以决定它能够怎样跑在各种推理引擎上 命令 xinference engine -e http://0.0.0.0:9997 --model-name qwen-chat 结果 2. 将 qwen-chat 跑在 VLLM 推理引擎上,但是我不知道什么样的其他参数符合这个要求。 命令: xin…

【代码随想录day22】【C++复健】77. 组合;216.组合总和III; 17.电话号码的字母组合

77. 组合 这题做完之后还是有一种稀里糊涂的感觉。思考了半天什么范围合理,并且怎么设置才能让这个范围合理,然而一看答案,发现答案完全没考虑这些因素,直接暴力全遍历了。只能说确实这样能够放弃思考,比较省心一些.…

选择适合你的报表工具,山海鲸报表与Tableau深度对比

在数据分析和报表制作的领域,企业往往面临着选择合适工具的难题。尤其是当市场上有很多功能强大的工具时,如何从中挑选出最适合自己需求的报表软件成为了一个关键问题。今天,我们将对比两款报表工具——山海鲸报表和Tableau,看看它…

unity优化webgl下的textMeshPro字体大小

成果:优化前2.5M的字体文件优化后只有几百kb不到1m了 背景:unity微信小游戏要求字体文件在3m以内姑且我认为2.5m以内实际可以干到1M以内。微信小游戏要求尽可能的进游戏快,在这个背景下我们需要对字体进行优化,我采用的是3500字的…

Spark的学习-02

Spark Standalone集群的安装 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接客、资源管理和任务 调度,等同于YARN中的ResourceManager 从:Worker:计算节点:负责利用自己…

Vue前端框架

一.Vue概述 *Vue 是一套前端框架,用于免除原生JavaScript中的DOM 操作,简化书写。 *基于MVVM(Model-View-ViewModel)思想,实现数据的双 向绑定,将编程的关注点放在数据上。 *官网: https://cn.vuejs.org/ 二.Vue快速…

软件设计师 7日速成

数据流图和数据字典 数据流图 定义 数据流图是一种图形化的工具,用于描述系统中数据的流动情况。它可以帮助我们可视化数据在系统中的处理过程,包括数据的来源、去向、存储位置以及处理方式。 组成元素 数据流图通常包含以下四个基本元素&#xff1…

基于 Vue3、Vite 和 TypeScript 实现开发环境下解决跨域问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端(端口 3000)和后端(端口 80)之间的跨域问题: 在开发环境中,前端使用的 Vite 端口与后端端口不一致,会产生跨域错误提示: Access to X…

【Allure】allure装饰器函数

**allure装饰器**​作用:用于将测试用例的数据展示到测试报告中 1.需要将这些装饰器函数添加**测试方法或测试类的开头**。2.同一个类或者一个方法可以添加多个装饰器函数 ,这样此用例就具有了个作用属性 。 allure.epic() 敏捷中的概念 项目名称 allu…