计网第三章(数据链路层)(一)

news2024/12/26 22:25:45

一.数据链路层概述

数据链路层还没有牵扯到多个网络互连的问题,第三章主要研究的是在同一个局域网中,分组怎样从一个主机传送到另一个主机,中间并没有路由器的转发。

1.信道分类

点对点信道:

即一对一的通信方式。

广播信道:

即一对多的广播方式。

2.链路和数据链路

链路:

从一个节点到相邻节点的一段物理线路。中间没有任何的交换节点。

数据链路:

在链路上加上实现通信协议的硬件和软件就叫数据链路。

3.数据链路层的基本问题

(1)封装成帧:

发送方发送一段数据时,数据从应用层开始往下传输,每层对该段数据都会执行不同的操作,然后交付给下一层。

而数据链路层就是给网络层交付下来的数据单元添加帧首部和帧尾部将其封装成帧。如图:

这里有一个小概念:帧的数据部分长度上限,即最大传送单元MTU,这个MTU实际就是帧去掉帧头和帧尾的数据部分。也就是整个IP数据报(就是网络层协议数据单元)。

 

所以在后面进行网络层计算有关分片的问题时,要切记如果题目告诉的是MTU,要想获取IP数据包中的数据部分就需要减去固定首部。

(2)差错检测:

传输过程中可能会出现误码,比如比特0变成比特1。

发送方在发送之前,基于待发送的数据和检错算法计算出检错码。并封装在帧尾。接收方主机收到后,利用检错码和检错算法判断是否出现误码,此为差错检测。

目前数据链路层广泛使用了循环冗余检验CRC检错技术;除了CRC检验技术,奇偶校验也需要了解一下。
在此提醒两个检错技术的一些小细节:

首先是关于CRC检错技术,其中FCS指的是帧检验序列即添加在数据后面的冗余码,不要把它和CRC搞混。其次如果计算时告诉了接收到的数据,那么冗余码已经算出来了,冗余码的位数取决于除数P,从个数上来说即比P少一位,从二进制角度来说(二进制最低位是0),位数即是最高位。对除数P取余,余数为0就没有差错,反之则有,但无法精准判断错误。  最后就是除数P,一般除数P用多项式来表示,位置对应的是二进制位,1表示多项式中有X的对应该位的次方,0表示没有,在多项式中不写,最低位的1就表示1(因为在二进制中最低位就是0,x的0次方就是1)。比如1101,转换为多项式应该为X^{3}+X^{2}+1

其次是奇偶校验,奇偶校验无法检验偶数个错位。原因很简单,这种检错技术本来就是靠观察初始的比特和结果的比特的奇偶性是否一致来判断是否出错。如果有奇数个比特1,出现偶数个错误(即比特0变成比特1)时,那么结果还是奇数(因为奇数加偶数还是奇数)。同样地,如果有偶数个比特1,出现偶数个错误,结果还是偶数(因为偶数加偶数还是偶数)。简单来说,就是偶数个错位不会使奇偶性发生变化。由此可知,奇偶校验无法检验偶数个错位。

这两个检错技术都只能检错,但是无法纠错。

(3)透明传输/可靠传输(取决于所用教材和资料,谢希仁老师的教材是透明传输):

透明传输:

指数据链路层应该对上层传输的数据不加任何修改或解释,即上层发送的数据在传输过程中应该原封不动地传输到接收方,不添加额外的控制字符或其他转义机制。这样可以确保上层协议对传输的数据不受影响,使数据链路层的传输对上层来说是透明的。

可靠传输:

指数据链路层上的数据传输应该是可靠的,即保证数据能够正确无误地传送到接收方。为了实现可靠传输,数据链路层使用了各种差错检测和纠正技术,如循环冗余检验(CRC)、帧序列号和确认应答机制等。这些技术可以检测和纠正传输过程中出现的错误,以确保数据的完整性和准确性。

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

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

相关文章

西瓜书南瓜书第一、二章

(存在疑问的地方使用红色字体进行了标注) 第一章 什么是机器学习 人工智能:研究如何让机器变得像人一样拥有智能的学科 机器学习:让计算机像人一样能从数据中学习出规律的一类算法 深度学习:神经网络类的机器学习算…

科大讯飞星火模型申请与chatgpt 3.5模型以及new bing的对比

科大讯飞星火模型 申请科大讯飞星火认知大模型账号科大讯飞星火认知大模型使用1.界面介绍2. 在编程能力上与chatgpt 3.5对比科大讯飞星火模型chatgpt 3.5模型 3. 在图片生成能力上与new bing对比 总结 申请科大讯飞星火认知大模型账号 注册网址: 科大讯飞星火认知大…

Python基础知识:列表推导式详解

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 我们经常需要这样处理一个列表: 把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表。 👇 👇 👇 更多精彩机密、教程,尽在下方…

如何给 Keycloak 用户加上“部门”、“电话”等自定义属性

Keycloak 是一款开源的用户认证和授权软件。在默认安装情况下,它只给新创建的用户提供了 email 属性,但是在许多应用场景中,客户都会要求给新创建的用户增加诸如“部门”、“电话”等自定义属性。 本文会介绍如何给 keycloak 中新创建的用户…

Android上架商城 隐私政策需要网页 没有怎么办

Android开发的项目上架商城的时候会需要你填写url,但其实并不需要真的去发布一个网站 使用腾讯文档新建文档 填写隐私政策 点击生成网页 再将网址填写即可 下面我找到的一个隐私政策文档供大家参考 将XXXX应用一键替换为自己的应用 将XXXXXX公司一键替换为公司 …

【Linux】多线程1——线程概念与线程控制

文章目录 1. 线程概念什么是线程Linux中的线程线程的优点线程的缺点线程的独立资源和共享资源 2. 线程控制Linux的pthread库用户级线程 📝 个人主页 :超人不会飞)📑 本文收录专栏:《Linux》💭 如果本文对您有帮助&…

记一次触发器拦截更新操作

1、背景 业务上有一张表记录仓库和经纬度的,正常情况不怎么做变更;业务反馈经常出现经纬度被更新的情况,操作人都是接口或者admin,人工运维后又会被接口/admin覆盖更新掉 2、过程 遇到这种情况,我的第一反应是定位代…

【Kubernetes】Kubernetes的Pod控制器

Pod控制器 一、Pod 控制器的概念1. Pod 控制器及其功用2. Pod 控制器有多种类型2.1 ReplicaSet2.2 Deployment2.3 DaemonSet2.4 StatefulSet2.5 Job2.6 Cronjob 3. Pod 与控制器之间的关系 二、Pod 控制器的使用1. Deployment2. SatefulSet2.1 为什么要有headless?2…

.Net Core 动态加载和卸载程序集

从 .Net Core 3.0开始支持程序集的加载和卸载,在 .Net FrameWork中使用独立的应用程序域来实现同样的功能,.Net Core 不支持创建多个应用程序域,所以无法使用多个应用程序域来实现程序集动态加载和卸载。 AssemblyLoadContext 程序集加载上下…

Antd的日期选择器中文化配置

当你使用antd的日期选择器后,你会发现日期什么都是英文的:即便你已经在项目中配置了中文化: 我确实已经配置了中文化: 但是为啥没生效?官网回答:FAQ - Ant Design dayjs中文网: 安装 | Day…

宝塔部署阿里云盘webdav

安装Docker 我的系统是CentOS8,如果直接安装会出错,可以看这篇文章:Failed to download metadata for repo ‘appstream‘ docker 国内镜像: http://hub-mirror.c.163.com/下载镜像 宝塔安装docker管理器,然后搜索…

深入了解IP地址查询的几种方式

随着互联网的发展,IP地址已经成为网络世界中不可或缺的部分。而准确地了解IP地址的来源和所属地区,对于网络安全和数据分析等方面具有重要意义。本文将介绍几种常见的IP地址查询方式,帮助读者深入了解IP地址的查询方法。 WHOIS查询 WHOIS查询…

VMware 安装 Centos7

VMware 安装 Centos7 1、首先,下载我们需要安装的 Centos7 镜像 链接:https://pan.baidu.com/s/1-O5nc4OwQye_yvzTCHeyvg 提取码:88882、打开VMware,点击新建虚拟机 3、选择典型,点击下一步 4、选择Centos7 iso文件镜…

实验二十九、正弦波变锯齿波电路

一、题目 将峰值为 1 V 1\,\textrm V 1V、频率为 100 Hz 100\,\textrm{Hz} 100Hz 的正弦波输入电压,变换为峰值为 5 V 5\,\textrm V 5V、频率为 200 Hz 200\,\textrm {Hz} 200Hz 的锯齿波电压。利用 Multisim 对所设计的电路进行仿真、修改,直至满足…

什么是主数据管理?企业主数据管理方法论

什么是主数据管理? 主数据又被称为黄金数据,其价值高也非常重要。对企业来说,主数据的重要性如何强调都不为过,主数据治理是企业数据治理中最为重要的一环。主数据管理的内容包括 主数据管理标准、主数据应用标准 和 主数据集成服…

虚拟化和容器化

目录 一. 虚拟化和容器化的概念 什么是虚拟化、容器化 案例 为什么要虚拟化、容器化? 二. 虚拟化实现方式 应用程序执行环境分层 虚拟化常见类别 虚拟机 容器 JVM 之类的虚拟机 三. 常见虚拟化实现 主机虚拟化(虚拟机)实现 容器虚拟化实现 容器虚拟化实现原理 容器…

JDK19 - 虚拟线程如何进行业务代码的改造

JDK19 - 虚拟线程如何进行业务代码的改造 一. 线程池的改造二. for 循环同步代码块改造2.1 自动关闭资源会等待所有异步任务执行完毕吗? 一. 线程池的改造 假设我们的代码中,原本是这样使用线程池的: public static ExecutorService getThr…

套接字类型,地址族,数据序列

Socket: 1.套接字中使用的协议族 2.套接字数据传输类型信息 3.计算机间通信中所使用的协议信息 PF_INET协议族中, 符合SOCK_STREAM的只有一个: tcp 所以第三个参数为0 UDP同理 TCP套接字: 可靠的,按序传递的,基于字节的面向连接的数据传输方式的套接字 :tcp套接字数据不存在边…

前后端分离------后端创建笔记(10)用户修改

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

(二)结构型模式:4、组合模式(Composite Pattern)(C++实例)

目录 1、组合模式(Composite Pattern)含义 2、组合模式应用场景 3、组合模式的优缺点 4、组合模式的UML图学习 5、C实现组合模式的简单示例(公司的OA系统) 1、组合模式(Composite Pattern)含义 组合模…