网络原理-数据链路层

在这一层中和程序员距离比较遥远,除非是做交换机开发,否则不需要了解数据链路层

由AI可知:

数据链路层(Data Link Layer)是OSI(Open Systems Interconnection)七层网络模型中的第二层,它在物理层之上,网络层之下。数据链路层的主要功能是为网络层提供可靠的数据传输服务,即将网络层传来的数据可靠地传输到相邻的节点,同时为物理层提供服务。

数据链路层的主要职责包括:

  1. 帧定界和同步:确定数据帧的起始和结束,确保数据的准确传输。
  2. 物理寻址:在帧的头部加上硬件地址,即MAC地址,确保数据帧能够正确地发送到相邻节点。
  3. 流量控制:防止快速发送方压倒慢速接收方,确保数据链路的稳定性。
  4. 差错控制:检测和重传损坏或丢失的帧,确保数据的完整性。
  5. 访问控制:在多设备共享同一物理介质的网络中,控制设备对介质的访问。
  6. 帧校验序列FCS:通过循环冗余检查(CRC)等技术检测帧在传输过程中是否出现错误。

数据链路层的协议通常包括:

  1. 以太网(Ethernet):最常用的局域网技术之一,定义了数据链路层和物理层的标准。
  2. 点对点协议(PPP):用于点对点连接的数据链路层协议,支持多种网络层协议。
  3. 无线局域网(WLAN):如Wi-Fi,它在数据链路层定义了无线传输的方法。
  4. 帧中继(Frame Relay):一种用于连接计算机系统的面向分组的通信协议。
  5. HDLC(高级数据链路控制):一种面向比特的同步链路层协议,用于广域网通信。

数据链路层的帧结构通常包括:

  1. 帧同步:用于标识帧的开始和结束。
  2. 地址字段:包含发送方和接收方的MAC地址。
  3. 控制字段:包含用于流量控制和差错控制的信息。
  4. 数据字段:承载上层传递下来的数据。
  5. 校验序列:用于检测帧在传输过程中的错误。
  6. 帧结束标志:标识帧的结束。

数据链路层是网络通信中非常重要的一层,它确保了数据在物理介质上的可靠传输,并且为上层网络层提供了服务。

这一层的协议主要是

以太网协议:以太主要是物理学的概念

以太网,横跨数据链路层和物理层,平时使用的有线网络就属于是以太网,网线,光纤都属于以太网线

其中目的地址和源地址都为6个字节,也就是mac地址和物理地址,mac地址和ip地址,目的都是为了区分网络上的不同设备,最开始的时候,mac地址和IP地址是两伙人,独立各自提出的,mac地址有6个字节,目前来说还是够的,因此每个设备上可以认为是有唯一的mac地址,就像牛顿-莱布尼兹公式,后来这两个地址都保留下来了,但是给这两种地址,分配了不同的角色

物理地址,是在网卡出厂的时候就设置好的,原则上说,每个网卡的物理地址都是不相同的,因此物理地址也可以作为你主机的一种身份标识(绑定主机)

IP地址作用是支持整个传输过程转发,MAC的作用支持两个相邻节点之间的转发

举一个栗子:我在内蒙古我要回河北老家

从IP层面上,要进行路线规划

  • 内蒙古->北京->河北
  • 内蒙古->天津->河北
  • 内蒙古->辽宁->北京->河北

具体执行的时候,需要从一个点到达另一个点,假如我走第一条路 内蒙古->北京->河北

内蒙古->北京:

  • 源IP:内蒙古
  • 目的IP:河北
  • 源MAC:内蒙古
  • 目的MAC:北京

北京->河北

  • 源IP:内蒙古
  • 目的IP:河北
  • 源MAC:北京
  • 目的MAC:河北

总结:IP就是长期目标,mac地址就是短期目标

报文格式

PAD:这里的ARP和RARP都不会携带业务上的载荷数据,只是针对转发数据的过程起到辅助效果

IP数据报:分用的时候,发现类型是0x0800的时候,此时就需要把这个数据交给网络层的IP协议了

1500(46-1500):此处的1500也称为MTU(和硬件结构相关联的),MTU这个东西对于不同的数据链路层协议是不同的,以太网是1500,还存在一些其他的网络,MTU不一定一样的,一个以太网数据帧,最大长度其实就是1500字节,IP协议的拆包组包,其实当IP数据包长度达到了1500字节,就会触发拆包组包了

ARP协议:是为了给每个路由器/交换机,建立一个”转发表“(不是路由表),这个表里就记载了IP地址->mac地址映射,表项只是包含,路由器/交换机周围的邻居设备

刚才所说到的转发数据过程中,先根据目的IP,确定接下来往哪里走,知道下一跳的IP(查路由表),根据下一跳的IP,查转发表,知道IP对应的MAC/端口是哪个,然后再发

这个东西的生成比较简单,该设备在局域网中,通过广播地址,发送ARP数据包,收到的设备,都会返回ARP响应,响应中就会包含每个设备,IP和MAC,设备的转发表就可以保存上述信息了,听起来好像是一个hash表之类的东西,但是实际上,这个表很可能是硬件实现的(不是hash这种在内存中的通件构成的表,而是直接通过硬件设备(转发芯片),通过这样的芯片里的一系列寄存器维护上述数据信息,这样的操作比软件实现要快很多)

DNS(域名解析系统)

IP地址,整数->点分十进制,域名就是一串单词,我们可以使用这一串单词来表示某个/某组IP地址了,sogou.com,baidu.com

上古时期,有一个专门的文件,能维护域名和IP的映射关系,hosts文件,这个文件至今存在,而且还有效,计算机访问各种域名,就会在这里进行查询,曾经很有用,现在不再使用了,之前每个人的电脑上,都会有一个这样的很大的文件,所有网站的域名对应的情况,这里的数据不方便更新,每天都有新的网站出现,也有旧的网站消亡,导致文件需要频繁更新

取而代之的是搭建了DNS服务器,把这样的映射关系,使用DNS服务器来保存,咱们的计算机上就不需要保存hosts了,如果要访问域名,就可以通过访问DNS服务器的方式,查询到对应的IP地址了,越来越多的设备都要上网,都要使用DNS服务器,DNS服务器能撑住吗?

客户端缓存

你的电脑尝试访问某个域名,得到了ip(记住了),下次再访问同一个域名的时候,就不会重新查询DNS服务器。,你每天上的就这么寥寥几个网站,但是这些网站访问此时都是很多的

分布式的方式

全世界各个地方,建设了很多DNS镜像服务器,世界上有很多的电信运营商(国内的联通,电信,移动),他们也会搭建DNS镜像服务器,此时你请求DNS服务器,只需要就近访问你这附近的镜像服务器即可,所有镜像服务器中存储的域名和ip的映射关系都是一样的,全世界一共有11个(13个)根域名服务器,其中大部分都是在美国,如果把某个国家所有的网站的域名从这里给删除,就可能导致整个国家网络瘫痪,IPv的DNS服务器系统和IPv4是相互独立的

引入DNS镜像解决了上述问题,但是引入了新的麻烦:如果某个区域的DNS服务器挂了,可能会对你这一片区域造成影响(网页打不开了)

可以制定特定的DNS服务器,也可以由机器自动配置

当前域名体系是‘分级”的体系,例如www.baidu.com分为三级,www为三级域名,baidu为二级域名,com为一级域名,DNS服务器分组的方式,存储不同的域名服务器的,查询过程,先查询一级域名,然后二级三级(不是简单的hash表,而是多级hash)

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

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

相关文章

Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持

作者:来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时,开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型(例如 Gemin…

用网络分析仪测试功分器驻波的5个步骤

在射频系统中,功分器的驻波比直接关系到信号的稳定性和传输效率。本文将带您深入了解驻波比的测试方法和影响其结果的因素。 一、功分器驻波比 驻波(Voltage Standing Wave Ratio),简称SWR或VSWR,是指频率相同、传输方向相反的两种波&#xf…

TCN模型实现电力数据预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色&a…

macOS 开发环境配置与应用开发

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误

当你的电脑出现找不到mfc140u.dll的问题,不少用户在使用电脑时陷入了困扰。这个错误提示就像一道屏障,阻挡了用户正常使用某些软件。无论是办公软件、游戏还是专业的设计工具,一旦出现这个问题,都会导致软件无法正常运行。如果您也…

【AIGC】内容创作——AI文字、图像、音频和视频的创作流程

我的主页:2的n次方_ 近年来,生成式人工智能(AIGC,Artificial Intelligence Generated Content)技术迅速发展,彻底改变了内容创作的各个领域。无论是文字、图像、音频,还是视频,A…

【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制

目录 1. 主库设置2. 从库设置3. 验证主从复制内容汇总表格 摘要: 在Windows系统上通过Docker部署MySQL主从复制,以下是详细的步骤和命令,帮助你设置一主一从的MySQL复制环境。 1. 主库设置 步骤1:运行MySQL主库容器 docker run …

如何在 DAX 中计算多个周期的移动平均线

在 DAX 中计算移动聚合很容易。但是,计算一段时间内的移动平均值时会有一些陷阱。由于其中一些陷阱是定义问题,因此我们必须小心,不要选择错误的方法。让我们看看细节。欢迎来到雲闪世界。 添加图片注释,不超过 140 字&#xff08…

一种路径敏感的数据依赖分析算法

Falcon 1.方法1.1.Basic Rule1.2.改进算法1.3.跨函数分析 2.Evaluation2.1.设置2.2.value-flow分析2.3.Thin Slicing2.4.Bug Detection 参考文献 这篇工作发表于PLDI 24,提出了一种context- 以semi-path-sensitive的数据依赖分析算法,解决path-sensitive…

css中背景色、背景图的使用

1、同时使用背景色、背景图片 参考链接:链接 以下样式,背景色在图片下方(缺点:图片不透明时,背景色会被完全遮挡。) .header {height: 100%;width: 100%;background-color: #000;background-image: url(/static/images/back.pn…

thinkphp6开发的通用网站系统源码

thinkphp6开发的通用网站系统源码。 基于ThinkPHP6框架开发的通用后台权限管理系统,底层采用国内最流行的ThinkPHP6框架, 支持内容管理、文章管理、用户管理、权限管理、角色管理等功能。 代码下载百度网盘

jenkins部署Maven和NodeJS项目

在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能…

基于SSM的宿舍管理系统 (源码+定制+文档)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…

stm32 bootloader跳转程序设计

文章目录 1、bootloader跳转程序设计&#xff08;1&#xff09;跳转程序&#xff08;2&#xff09;、app程序中需要注意<1>、在keil中ROM起始地址和分配的空间大小<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址<3>、main函数中使能中断 总…

C初阶(六)--- static 来喽

前言&#xff1a;C语言中有许多关键字&#xff08;关键字是预先保留的标识符&#xff0c;具有特殊意义&#xff0c;不能用作变量 名、函数名等普通标识符。&#xff09; 比如&#xff1a;前面在变量与常量那一节提到的extern 就是一个关键字&#xff0c;应该还记得e…

Grafana链接iframe嵌入Web前端一直跳登录页面的问题记录

概述 公司有个项目使用到Grafana作为监控界面,因为项目方的环境极其复杂,仅物理隔离的环境就有三四个,而且每个都得部署项目,今天在某个环境测试,查看界面遇到一个比较奇怪的Grafana问题,后面针对该问题进行跟踪分析并解决,故而博文记录,用于备忘。 问题 登录项目We…

Pikachu-Sql Inject-insert/update/delete注入

insert 注入 插入语句 insert into tables values(value1,value2,value3); 如&#xff1a;插入用户表 insert into users (id,name,password) values (id,username,password); 当点击注册 先判断是否有SQL注入漏洞&#xff0c;经过判断之后发现存在SQL漏洞。构造insert的pa…

Redis 篇-深入了解在 Linux 的 Redis 网络模型结构及其流程(阻塞 IO、非阻塞 IO、IO 多路复用、异步 IO、信号驱动 IO)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 用户空间与内核空间概述 2.0 Redis 网络模型 2.1 Redis 网络模型 - 阻塞 IO 2.2 Redis 网络模型 - 非阻塞 IO 2.3 Redis 网络模型 - IO 多路复用 2.3.1 IO 多路复…

【mmengine】配置器(config)(入门)读取与使用

一、 介绍 MMEngine 实现了抽象的配置类&#xff08;Config&#xff09;&#xff0c;为用户提供统一的配置访问接口。 配置类能够支持不同格式的配置文件&#xff0c;包括 python&#xff0c;json&#xff0c;yaml&#xff0c;用户可以根据需求选择自己偏好的格式。 配置类提供…