网络原理-数据链路层

news2024/11/24 17:22:43

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

由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.coloradmin.cn/o/2185830.html

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

相关文章

【Android 14源码分析】Activity启动流程-3

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

后台管理系统脚手架

后台管理系统脚手架 介绍 在快速迭代的软件开发世界里,时间就是生产力,效率决定成败。对于构建复杂而庞大的后台系统而言,一个高效、可定制的后台脚手架(Backend Scaffold)无疑是开发者的得力助手。 脚手架 后台脚…

Python案例--这天第几天

如何使用Python计算一年中的第几天:详细指南 在处理日期和时间时,我们经常需要确定一个特定日期是一年中的第几天。这在许多应用场景中都非常有用,比如日历应用程序、数据分析和时间管理工具。Python,作为一种广泛使用的编程语言…

低功耗4G模组Air780E之串口通信篇

你对低功耗4G模组Air780E有多少了解? 今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法,小伙伴们,学起来吧! 一、硬件准备 780E开发板一套,包括天线、USB数据线。 USB转TTL工具或线(例如ch340、…

用CSS创造三角形案例

6.3.2 用CSS创造三角形 用div来创建,角上是平分的,所以要是内部宽高为0,其他边透明,正好是三角形。 代码 div {border: 12px solid;width: 0;height: 0;border-color: transparent red transparent transparent; } 与伪元素aft…

基于SSM的校园社团管理系统的设计 社团信息管理 智慧社团管理社团预约系统 社团活动管理 社团人员管理 在线社团管理社团资源管理(源码+定制+文档)

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

【rCore OS 开源操作系统】Rust 字符串(可变字符串String与字符串切片str)

【rCore OS 开源操作系统】Rust 语法详解: Strings 前言 这次涉及到的题目相对来说比较有深度,涉及到 Rust 新手们容易困惑的点。 这一次在直接开始做题之前,先来学习下字符串相关的知识。 Rust 的字符串 Rust中“字符串”这个概念涉及多种类型&…

Pikachu-xss实验案例-钓鱼

攻击思路:提供一个与攻击网站相似的登陆的钓鱼页面;让用户输入登陆信息 查看项目源代码,首先访问 fish.php ,提供输入的登陆框, 从登陆框获取到账号、密码后,重定向到xfish.php 做保存; 因此,需…

遥感图像变换检测实践上手(TensorRT+UNet)

目录 简介 分析PyTorch示例 onnx模型转engine 编写TensorRT推理代码 main.cpp测试代码 小结 简介 这里通过TensorRTUNet,在Linux下实现对遥感图像的变化检测,示例如下: 可以先拉去代码:RemoteChangeDetection 分析PyTorch示…

C++基类构造器的自动调用

C基类构造器的自动调用 虽然基类的构造器和解构器不会被派生类继承,但它们会被派生类的构造器和解构器自动调用,今天我们用代码实证一下。 验证代码 源代码,仔细看注释内容: D:\YcjWork\CppTour>vim c2004.cpp #include &l…

特征工程与选择:优化模型性能的关键步骤----示例:特征工程在泰坦尼克号生存预测中的应用、使用递归特征消除(RFE)进行特征选择

特征工程和特征选择是机器学习流程中至关重要的环节,直接影响到模型的性能。特征工程涉及从原始数据中提取或构造有用的特征,而特征选择则是从已有的特征集中挑选出最相关的子集。 特征工程 特征工程是指创建能够使机器学习算法更好地理解数据的新特征的…

平面电磁波(解麦克斯韦方程)

注意无源代表你立方程那个点xyzt处没有源,电场磁场也是这个点的。 j电流面密度,电流除以单位面积,ρ电荷体密度,电荷除以单位体积。 j方程组有16个未知数,每个矢量有三个xyz分量,即三个未知数,…

样式重置 normalize.css

安装normalize.css npm install --save normalize.csspnpm add normalize.css安装less yarn add less -Dmain.ts import { createApp } from vue import App from ./App.vue // 引入 import normalize.csscreateApp(App).mount(#app)index.less import less中的语法 imp…

JDBC 概述

JDBC 概述 JDBC的基本概念与功能JDBC的工作原理JDBC的组件与类JDBC的类型与特性JDBC的应用场景 JDBC(Java Database Connectivity)即Java数据库连接,是Java编程语言用于与数据库进行连接和操作的API(应用程序编程接口)…

K8s域名解析方案CoreDNS(K8s Domain Name Resolution Solution CoreDNS)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

MFC工控项目实例二十一型号选择界面删除参数按钮禁用切换

承接专栏《MFC工控项目实例二十手动测试界面模拟量输入实时显示》 对于禁止使用的删除、参数按钮,在选中列表控件选项时切换为能够使用。 1、在TypDlg.h文件中添加代码 #include "ShadeButtonST.h" #include "BtnST.h" class CTypDlg : publi…

(C语言贪吃蛇)9.贪吃蛇撞墙找死

目录 游戏说明​ 1.撞墙死翘翘的情况 2.如何解决初始化问题 封装函数initSnake(); 注意事项 解决方法 总结 效果演示 游戏说明 玩家通过上下左右按键来控制小蛇的移动,我们之前的内容完成了小蛇每按下一次右键小蛇便向右移动一格,但是玩贪吃蛇一…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第2关Python 基础知识

学员闯关手册:https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频:https://www.bilibili.com/video/BV1mS421X7h4/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 关…

某度假村定岗定编项目成功案例纪实

某度假村定岗定编项目成功案例纪实 引入分级定编系统,将个人工资和度假村当日绩效总额挂钩,解决忙闲不均带来的人工成本问题 【客户行业】文旅行业、酒店行业、度假村 【问题类型】定岗定编 【客户背景】 某度假村是一家集住宿、娱乐、健身等服务为…

【Nacos架构 原理】内核设计之Nacos寻址机制

文章目录 前提设计内部实现单机寻址文件寻址地址服务器寻址 前提 对于集群模式,集群内的每个Nacos成员都需要相互通信。因此这就带来一个问题,该以何种方式去管理集群内部的Nacos成员节点信息,即Nacos内部的寻址机制。 设计 要能够感知到节…