数据链路层知识分享【计算机网络】【以太网帧 | MTU的影响 | ARP技术】

  博客主页:花果山~程序猿-CSDN博客

文章分栏:Linux_花果山~程序猿的博客-CSDN博客

关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!

在这里插入图片描述

目录

前文

一, 以太网帧格式

(1).理解局域网通信原理

第一种:在同一网段中

第二种:在不同网段中

二,MTU对上层的影响

mtu对IP协议的影响

MTU对UDP协议的影响

MTU对TCP协议的影响

如何理解滑动窗口&MSS的联系,区别

三,ARP技术

四,其他重要协议或技术

1.DNS——域名解析(了解)

2.NAT技术(了解)

NAPT策略

NAT & 代理服务器


嗨!收到一张超美的图,愿你每天都能顺心!

前文

        经历过网络层,我们开始向下继续探索。首先我们先了解一下什么是以太网(防止误导,这里使用AI回答)

        以太网是一种广泛使用(目前最广泛)的局域网(LAN)技术,它让相连的计算机和设备在一个有限区域内共享资源和交换数据,和以太网并列的还有令牌环网, 无线LAN等。

        以太网标准由IEEE 802.3定义,涵盖了物理层的连线、信号及数据链路层的介质访问控制协议。最初运行在同轴电缆上,现多使用双绞线和光纤,数据传输速率已从10Mbps发展到10Gbps甚至更高。以太网采用CSMA/CD(载波监听多路访问/冲突检测)机制来管理网络中数据的发送,确保多设备公平访问网络。随着技术演进,现代以太网常见于星型拓扑结构中,使用交换机连接设备,提高了网络效率和速度。

生活例子:

如何查看本机网络属性:

ifconfig    // linux

ipconfig   // windows

一, 以太网帧格式

        数据在不同层会有不同的叫法,在传输层UDP(报文),TCP(TCP段),网络层(IP数据包),而在数据链路层数据将以 " " 作为数据传输单位

源地址和目的地址:是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的(大部分情况下网卡不能修改),MAC地址全球唯一,但MAC主要使用场景是在局域网标识唯一主机,而非广域网。
什么?为什么不使用IP地址,它不是也可以标识主机了?
答:理论上IP地址已经可以达成标识唯一主机的功能,这样设计是为了—— 解藕网络层和数据链路层,这样不至于网络层IP修改,导致数据链路层也得修改。
(MAC地址用来识别数据链路层中相连的节点; 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
帧协议类型字段:有三种值,分别对应IP(0800)、ARP(0806)、RARP(8035);例子:如果为0800,则数据段是IP报文,将向上交付给网络层;如果是其他两种类型,将交付给其他地方,这个我们后面细讲。
帧末尾是CRC校验码

(1).理解局域网通信原理

        这里用比较通俗的方式讲解局域网中基本的通信原理,如果想查看详细技术可以查阅相关书籍。

第一种:在同一网段中

下面我们了解一下网桥(采用AI回答

        网桥(Bridge)是一种传统的局域网(LAN)设备,工作在数据链路层(OSI模型的第二层),主要用于连接两个或多个网络段,实现它们之间的数据传输。网桥的基本功能是对收到的网络数据帧进行分析,根据帧中的MAC地址决定是否转发以及转发到哪个网络段,从而实现网络分段和通信控制。

        总之,网桥用于局域网,将局域网划分为多网络段,显著减少网络碰撞即可。

第二种:在不同网段中

        

        假设主机A向主机B,就需要在多个网段移动,这里以帧经过路由器A为例,我们可以知道关于帧格式的变化:目的IP不变,目的mac变化,源mac地址将变成路由器A的,而里面的NAT技术我们后面再说。

这样我们可以再次理解 mac地址与IP地址

        在一次信息传递的过程中,mac地址(指的是源mac地址&目的mac地址)可能会多次变化,更多表示的是一个网段的起点&终点地址;目的IP地址则不会改变。

二,MTU对上层的影响

什么是mtu,是做什么的?

MTU是数据链路层的一个特性,它不仅限于以太网,不同类型的网络技术(如PPP、帧中继、Wi-Fi等)都有各自默认的MTU值,这些值根据物理媒介和协议规范而定。

这里我们了解以太网下的MTU:

以太网是最常见的局域网技术,其标准MTU值通常为1500字节。

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);

mtu对IP协议的影响

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

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

MTUUDP协议的影响

让我们回顾一下UDP协议:
一旦UDP携带的数据超过 1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报. 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了。( UDP被分片后,丢一个片,这个报文就不能用了)

MTU对TCP协议的影响

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为 MSS(Max Segment Size);
MSS是TCP连接双方在 三次握手期间协商确定的一个值(在一次tcp连接中不改变),它定义了一个TCP报文段中数据部分的最大长度(不包括TCP头部和IP头部)。MSS的设定主要考虑了网络中不同链路的MTU(最大传输单元)限制,以避免IP层的分片。通过设置合适的MSS,可以优化数据传输效率,减少因分片带来的额外开销和复杂性。
MSS 存在TCP中的选项中。

如何理解滑动窗口&MSS的联系,区别

        首先我们先回顾一下滑动窗口:

        滑动窗口是TCP协议中实现流量控制的一个机制。它通过动态调整发送方和接收方的窗口大小来控制数据的发送速率,从而保证数据的可靠传输且不致接收方缓冲区溢出。滑动窗口分为发送窗口(sender's window)和接收窗口(receiver's window)两部分。

联系

MSS影响了单个TCP段的大小,从而间接影响滑动窗口的使用效率。如果MSS设置得合适,可以减少数据传输过程中的分片和重组,使得每个TCP段能更有效地利用滑动窗口的容量。在计算实际发送数据量时,发送方会考虑当前的滑动窗口大小和MSS,确保不会发送超过接收方窗口大小或单个段超过MSS的数据

区别

  • 关注点不同。滑动窗口大小是用于流量控制的策略,关注的是数据传输效率和可靠性,并不关注下层协议如何实现传递(决策者视角);MSS则需要根据连接时的数据包的传输效率和网络兼容(真正做事的)
  • 变化方式不同。滑动窗口大小是动态改变的;而MSS是在进行建立连接时,就保持不变,除非重新连接。

三,ARP技术

        为什么直接讲ARP技术?这里回答在前面埋的一个坑,我们已经知道了帧格式,那么问题在封装帧数据时,我们怎么知道目的mac地址?ARP技术就出现了

ARP 不是一个单纯的数据链路层的协议 , 而是一个介于数据链路层和网络层之间的协议;
注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果 链路层其它类型的网络则有可能是必要的。
硬件类型:指链路层网络类型,1为以太网;
协议类型:指要转换的地址类型,0x0800为IP地址;
硬件地址:长度对于以太网地址为6字节;
协议地址:长度对于和IP地址为4字节;
op字段为1 表示ARP请求,op字段为2 表示ARP应答
第一次用ARP向网络询问目标主机时,以太网目的地址设置为 FFF...全F的形式(广播),收到该ARP帧报文的机器都将进行接收, 交付给处在数据链路层的 ARP协议层进行分析,首先根据OP判断ARP类型,然后再判断IP正确性,随后封装ARP应答,返回目标mac地址。(并不是每次发数据,都需要ARP一躺,主机会缓存目标mac地址一段时间(一段时间进行一次ARP,防止主机下线);并不是只有主机与主机直接才进行ARP,路由器与路由器直接也会ARP交换mac地址,两主机之间需要通信,就需要ARP)
实践:
1.查看ARP缓存
arp -a

四,其他重要协议或技术

1.DNS——域名解析(了解)

它负责将人类容易记忆的域名(如www.example.com)转换成用于网络通信的实际IP地址(如192.0.2.1)。这一过程称为域名解析。DNS的设计实现了域名与IP地址之间的映射,使得用户无需记住复杂的IP地址就能访问网站。主机拿到IP地址后,会对其进行缓存,方便下次访问。

最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的.
如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.
这样就太麻烦了, 于是产生了DNS系统.
一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
如果新计算机接入网络, 将这个信息注册到数据库中;
用户输入域名的时候, 向DNS服务器发送 UDP请求报文, 由DNS服务器检索数据库, 得到对应的IP地址.
至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容.
域名简介
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.
www.badu.com
连接
com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
baidu: 二级域名, 公司名.
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格
式, 来表示主机支持的协议

2.NAT技术(了解)

背景:

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题,NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;
NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的

NAT IP转换过程
NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

NAPT策略

那么问题来了 , 如果局域网内 , 有多个主机都访问同一个外网服务器 , 那么对于服务器返回的数据中 , 目的 IP 都是相同的。 那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机 ?
这时候 NAPT 来解决这个问题了。 使用 IP+port 来建立这个关联关系

说点好玩的:如内网穿透,一般都是我们向服务端提出请求,服务端响应,而服务端又如何在外边访问内网呢?而内网穿透就是干这个的,比如远程开机,操作等

总之,NAT技术在路由器上维护一个映射表,负责替你向公网发送与接收,最后转发给你。

NAT & 代理服务器

路由器往往都具备 NAT 设备的功能 , 通过 NAT 设备进行中转 , 完成子网设备和其他子网设备的通信过程 . 代理服务器看起来和NAT 设备有一点像 . 客户端像代理服务器发送请求 , 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后 , 代理服务器又把结果回传给客户端。

正向代理:

正向代理位于客户端和目标服务器之间,主要服务于客户端。它代表客户端向目标服务器发起请求,并将响应结果返回给客户端。

 

反向代理

反向代理位于服务器端,位于客户端和目标服务器集群之间,主要服务于外部客户端,对客户端透明。客户端并不直接知道它正在与哪个具体的后端服务器交互。

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获,请动动你发财的小手点个免费的赞,你的点赞和关注永远是博主创作的动力源泉。

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

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

相关文章

【操作系统】操作系统课后作业-聊天程序

无名管道与有名管道的区别 无名管道: 它是半双工的,具有固定的读端和写端。 只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 不是普通的文件,不属于其他任何文件系统,并且只存…

Electron+Vue开源软件:洛雪音乐助手V2.8畅享海量免费歌曲

洛雪音乐助手是一款功能全面且完全免费的开源音乐软件,支持在Windows、Android和iOS平台上使用。 平台支持: 桌面版:采用Electron Vue技术栈开发,支持Windows 7及以上版本、Mac OS和Linux,具有广泛的用户群体覆盖。 …

深信服终端安全管理系统EDR版本升级过程

EDR当前版本为3.7.12,具体参考版本详情参数。需要升级到6.0.2R1版本,该版本更改了产品名称,叫做“统一端点安全管理系统aES” 当前版本详情 版本基础信息 软件版本:3.7.12.3829 病毒库版本:20240618174426 漏洞规则库&…

定制化物联网设备:开启智能生活新篇章

随着科技的进步,物联网(IoT)已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化,物联网设备以其独特的功能和特性,极大地提高了我们的生活质量和工作效率。然而,在众多的物联网设备中&am…

Window常用的脚本有哪些?快来看看有哪些是你正在用的!(欢迎评论补充~)

前言 在日常开发中,如果能熟练掌握以下这些使用频率很高的脚本,那工作起来真的是手拿把攥,事半功倍,接下来给大家介绍一些我们日常使用率很高的一些脚本! 常用脚本(Batchfile & VBScript) 1.一键启动.bat 一次…

每年1-1.2万人毕业,男女比例约3:1,测绘工程的就业率如何

测绘工程,一个让人闻风丧胆的理科专业,虎扑评分4.2: 干过测绘的,苦不苦只有大家心里知道,带大家来感受一下,兄弟们的精神状态都十分美妙: 测绘专业到底是什么情况? PS.测绘分为本科…

mongodb-java apispringboot整合mongodb

mongodb入门mongodb-java api的使用springboot整合mongodb评论 一 MongoDB 1.1 MongoDB简介 ​ MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ​ MongoDB是一个介于关系数据库和非关系数据库之间的产品&…

等保2.0对于物联网设备的漏洞管理还有哪些规定?

等保2.0针对物联网设备的漏洞管理,主要规定了以下几个方面: 1. 漏洞发现与识别:要求定期进行漏洞扫描和评估,利用专业的漏洞扫描工具和安全服务,及时发现物联网设备及其软件中的安全漏洞。这包括但不限于操作系统、应…

文献解读-流行病学-第十期|《SARS-CoV-2 德尔塔和奥密克戎合并感染和重组的证据》

关键词:基因组变异检测;全基因组测序;流行病学; 文献简介 标题(英文):Evidence for SARS-CoV-2 Delta and Omicron co-infections and recombination标题(中文)&#xf…

手持风扇哪个品牌好?五大手持风扇品牌推荐!

随着炎热夏季的到来,手持风扇已成为人们出行的必备清凉神器。然而,面对市场上众多品牌的手持风扇,如何选择一款既时尚又高效的产品成为了许多消费者的难题。为了解决这个困扰,我们精心挑选了五大手持风扇品牌进行推荐。这些品牌不…

报表控件Stimulsoft 图表轴的日期时间步长模式

Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了…

Qt|海康摄像头多个页面展示问题

为大家分享一个使用海康摄像头的小功能,希望对大家有用~ 使用场景: 在程序中多个不同功能页面需要展示摄像头的实时预览画面,该如何高效的展示呢? 对于海康摄像头的实时预览接口调用流程,如下所示: 按照流…

JS正则表达式构造函数和正则表达式字面量的区别

背景 笔者在使用正则表达式的过程中,经常看到两种使用方式,比较好奇这两种方式有什么不同。 一种是 正则表达式构造函数:new RegExp(“[xxx]”) 另一种是 正则表达式字面量: /[xxx]/ 于是,就去网上搜了一下…结果看到国…

阿里云ECS(CentOS/Alibaba Cloud Linux)安装最新 Docker 方法

最近(6月份)我发现 docker 官方无法正常访问,docker pull 命令也执行失败,用 TZ 也一样😔。 以下步骤适用于 CentOS 7/8或Alibaba Cloud Linux 系统。 1. 更新系统包 首先,确保您的ECS实例系统软件包是最…

使用nvm管理nodejs版本,设置淘宝NPM镜像源

nvm-windows https://github.com/coreybutler/nvm-windows nvm配置文件的路径 C:\Users\用户名\AppData\Roaming\nvm 修改 settings.txt 文件,添加淘宝镜像源地址 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors…

【FAS】《Survey on face anti-spoofing in face recognition》

文章目录 原文基于手工设计特征表达的人脸活体检测方法基于深度学习的人脸活体检测方法基于融合策略的人脸活体检测方法人脸检测活体数据库点评 原文 邓雄,王洪春,赵立军等.人脸识别活体检测研究方法综述[J].计算机应用研究,2020,37(09):2579-2585.DOI:10.19734/j.issn.1001-3…

程序员们,能告诉我你们为什么选择arch linux吗?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! Arch Linux 受到程序员青…

IDC发布2023年中国Web应用防火墙市场份额报告

全球范围内针对Web应用的网络攻击从未停止,经验丰富的网络攻击者仍在不断尝试使用更为高效和不易察觉的攻击方式入侵到Web应用内部,利用Web应用的脆弱性进行网络攻击,成为企业敏感数据泄露、内容篡改、业务中断等问题的主要原因,对…

NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解

1. MindSQL(库) MindSQL 是一个 Python RAG(检索增强生成)库,旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成,还通过扩展核心类,将其功能扩展到 Sn…

实例详解C/C++中static与extern关键字的使用

目录 1、概述 2、编译C++代码时遇到的变量及函数重复定义的问题 3、用 extern 声明外部变量 4、extern与全局函数 5、为何在变量和函数前添加一个static关键字编译就没问题了呢? 6、静态局部变量 7、函数的声明与定义都放置到一个头文件中,不使用static,通过宏控制去…