计算机网络【四】数据链路层基本概念+点到点通信(PPP协议)

数据链路层基本概念

路由器是网络层设备

数据链路层:数据管道,传输的是数据包加上发送地址,接收地址,校验的数据帧
在这里插入图片描述

数据链路层的信道类型:

  • 点到点信道:使用一对一的点到点通信方式(两个设备之间直接使用网线相连)
  • 广播信道:使用一对多的广播信道方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送

链路:一条点到点的物理线路段,中间没有其他交换节点。一条链路只是一条通路的一个组成部分。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

  • 现在最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。
  • 一般的适配器都包括了数据链路层和物理层这两层的功能。

数据帧

数据帧=数据包+帧头+帧尾+物理层地址+校验值
在这里插入图片描述

数据链路层解决的问题

封装成帧

在这里插入图片描述

透明传输

在这里插入图片描述

  • 字节填充解决透明传输
    发送端的数据链路层在数据中出现控制字符SOHEOT的前面插入一个转义字符ESC(0x1B)
    接收端的数据链路在将数据发送给上一层的网络层的时候会删除前面的转义字符
    如果转义字符也出现在数据当中,那么应该在转义字符前插入一个转义字符。当接收端收到两个连续的转义字符的时候就删除其中前面那个
    在这里插入图片描述
    因此只有如果接收数据中含有一个ESC那么一定是数据中开始字符或者结束字符。
差错控制

误码率(BER):传输错误的比特占所传输比特总数的比率。误码率和信噪比有很大的关系。
如果传送过程中出现错误,路由器发现错误后会直接丢掉这个帧。可靠传输由传输层实现。

  • 循环冗余检验(CRC)
    在这里插入图片描述
    运算过程为加上x个0以后,用x+1位数作为除数(随便选一个)。每次进行异或操作。要确保每次会至少减少一位,意思是如果某次的余数的最高位位0,则商为0,如果最高位为1,则商为1.
    帧检验序列FCS为运算的余数,可以通过多种方法得到,不一定是CRC
    最后传输的数据是数据加上FCS,如果余数不为0,则丢弃

特点:

  • 这种检测方法不能确定究竟是哪一个或哪几个比特出现了差错
  • 如果除数选择的足够好(位数足够长),那么检错能力就很强

使用循环冗余检验(CRC)差错检测技术只能做到无差错接受。
无差错接收:凡是接收的帧我们几乎都能认为是没有差错的。

要做到可靠传输(发送什么接收什么)就必须加上确认重传机制

CRC是一种无比特差错,而不是无传输差错的检测机制。虽然数据链路层要求做成无传输差错的,但是目前没有做到。

两种情况下的数据链路层

点对点通信

使用PPP协议,用于点到点通信。全世界用的最多的数据链路层协议。

PPP协议特点:

  • 简单
  • 封装成帧
  • 透明传输
  • 差错检验
  • 多种网络层协议:可以在PPP协议种封装TCP/IP协议,可以封装IPX,SPx协议
  • 多种数据链路
  • 检测连接状态
  • 最大传送单元
  • 网络层地址协商
  • 数据压缩协商
    缺点:
  • 不能纠错
  • 不能流量控制
  • 不能得到序号
  • 不支持多点线路
  • 不支持半双工或单工链路
PPP协议的组成
  • 数据链路层协议可以用于异步串行或者同步串行介质
  • 使用LCP(链路控制协议)建立并维护数据链路连接
    ADSL拨号上网账号密码正确、有网费数据链路层才会通。即LCP有身份验证和计费功能
  • 网络控制协议(NCP)允许点到点连接上使用多种网络层协议

在这里插入图片描述

PPP协议帧格式

在这里插入图片描述

A段是地址,因为是点对点传输,所以是固定的FF,没有起什么作用
C段是控制字段,但是没有使用,一般是03
协议中的两个字节表示数据包中是什么内容
标志字段F=0x7E
PPP是面向字节的,所有PPP帧的长度都是整数字节

  • 字节填充实现透明传输
    将信息字段中出现的每个0x7E(01111111)字节转换成0x7D 0x5E(0111111001011111)
    如果信息字段中出现0x7D(01111110)的字节,则将其转换为2字节序列(0x7D,0x5D(0111111001011110)
    如果信息字段中出现ASCLL码的控制字符(数值小于0x20)则在前面加入一个0x7D
    最后接收的时候再转换为原来的信息

  • 零比特填充方法实现透明传输
    如果信息字段发送的不是字节,而是二进制流,则在发送端,只要发现5个连续的1就在其中填入一个0。在接收的时候每接收5个1就删除一个0。

  • 不使用序号和确认机制
    在数据链路层出现差错概率不大时,使用比较简单的PPP协议比较合理
    在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的
    帧检验序列FCS字段可保证无差错接受

PPP协议的工作状态(拨号上网的过程):当用户拨号拨入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这些分组及其响应选择一些PPP参数,进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,时PC机成为因特网上的一个主机。
通信完毕时,NCP释放网络层链接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接,最后释放物理层链接。

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

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

相关文章

Linux网络编程——tcp并发服务器(poll实现)

https://blog.csdn.net/lianghe_work/article/details/46535859想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》 代码&#xff1a;#include <string.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#…

Linux网络编程——I/O复用函数之epoll

https://blog.csdn.net/lianghe_work/article/details/46544567一、epoll概述epoll 是在 2.6 内核中提出的&#xff0c;是之前的 select() 和 poll() 的增强版本。相对于 select() 和 poll() 来说&#xff0c;epoll 更加灵活&#xff0c;没有描述符限制。epoll 使用一个文件描述…

操作系统【三】内存管理基础+连续内存分配

内存的基础知识 内存分为按字节编址&#xff08;8位&#xff09;和字编制&#xff08;不同计算机不一样&#xff0c;64位计算机就是64位&#xff0c;即8个字节&#xff09; 相对地址逻辑地址 绝对地址物理地址 从逻辑地址到物理地址的转换由装入解决。 装入的三种方式 绝对…

MSG_PEEK标志

https://blog.csdn.net/aspnet_lyc/article/details/28937229 MSG_PEEK标志可以用来读取套接字接收队列中可读的数据&#xff0c;一些情况会用到它&#xff0c;比如为了避免不阻塞而先检查套接字接收队列中可读的数据长度&#xff0c;再采取相应操作。当然&#xff0c;不阻塞也…

C++的单例模式与线程安全单例模式(懒汉/饿汉)

https://www.cnblogs.com/qiaoconglovelife/p/5851163.html1 教科书里的单例模式我们都很清楚一个简单的单例模式该怎样去实现&#xff1a;构造函数声明为private或protect防止被外部函数实例化&#xff0c;内部保存一个private static的类指针保存唯一的实例&#xff0c;实例的…

计算矩阵的逆和行列式的值(高斯消元+LU分解)

计算矩阵的逆 选主元的高斯消元法 朴素的高斯消元法是将矩阵A和单位矩阵放在一起&#xff0c;通过行操作&#xff08;或者列操作&#xff09;将A变为单位矩阵&#xff0c;这个时候单位矩阵就是矩阵A的逆矩阵。从上到下将A变为上三角矩阵的复杂度为O(n3n^3n3)&#xff0c;再从下…

Linux网络编程——tcp并发服务器(epoll实现)

https://blog.csdn.net/lianghe_work/article/details/46551871通过epoll实现tcp并发回执服务器&#xff08;客户端给服务器发啥&#xff0c;服务器就给客户端回啥&#xff09; 代码如下&#xff1a;#include <string.h>#include <stdio.h>#include <stdlib.h&g…

证明AVL树的上界和下界

对于n个节点的AVL树&#xff0c;其高度最低的时候肯定为叶子节点只在最后一层和倒数第二层的时候。即对于2k−1<n≦2k1−12^k-1< n\leqq 2^{k1}-12k−1<n≦2k1−1的时候下界都为kkk。因此下界为h┌log2(n1)┐−1h\ulcorner log_2(n1)\urcorner-1h┌log2​(n1)┐−1 对…

浅谈dup和dup2的用法

https://blog.csdn.net/u012058778/article/details/78705536一、dup和dup2函数 这两个函数都可以来复制一个现有的文件描述符&#xff0c;他们的声明如下&#xff1a;#include <unistd.h>int dup(int fd);int dup2(int fd, int fd 2); 123 关于dup函数&#xff0c;当我…

C++ cin 实现循环读入

习惯了使用while(~scanf("%d",x)){}来实现循环读入&#xff0c;但是有时候使用泛型编程的时候就必须使用C中的cin&#xff0c;但是当我想要实现循环读入的时候却发现有些困难。 我们可以看一下下面这个简单的例子&#xff1a; #include <iostream>using name…

BFPTR算法详解+实现+复杂度证明

BFPTR算法是由Blum、Floyed、Pratt、Tarjan、Rivest这五位牛人一起提出来的&#xff0c;其特点在于可以以最坏复杂度为O(n)O(n)O(n)地求解top−ktop-ktop−k问题。所谓top−ktop-ktop−k问题就是从一个序列中求解其第k大的问题。 top−ktop-ktop−k问题有许多解决方法&#xff…

随机化快速排序+快速选择 复杂度证明+运行测试

对于快速排序和快速选择我之前的文章已经有详细的说明&#xff0c;需要了解的同学可以移步 传送门&#xff1a;快速排序&#xff5c;快速选择(BFPTR) 所谓随机化其实就是选择枢纽的时候使用随机数选择而已&#xff0c;实现起来很简单。但是我们使用随机数如何保证复杂度呢&am…

【Linux基础】Linux的5种IO模型详解

引入 为了更好的理解5种IO模型的区别&#xff0c;在介绍IO模型之前&#xff0c;我先介绍几个概念 1.进程的切换 &#xff08;1&#xff09;定义 为了控制进程的执行&#xff0c;内核必须有能力挂起正在CPU上运行的进程&#xff0c;并恢复以前挂起的某个进程的执行。即从用户…

计算机网络【五】广播通信+以太网

局域网的拓扑 广域网使用点到点通信 局域网使用广播通信 可以随意向网络中添加设备。 总线网星形网&#xff0c;使用集线器。现在多使用星形网络。环状网树形网 其中匹配电阻用来吸收总线上传播的信号。 共享通信媒体 静态划分信道 频分复用、时分复用、波分复用、码分复用…

聊聊Linux 五种IO模型

一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了&#xff0c;要理解同步、异步、阻塞与非阻塞重要的两个概念点了&#xff0c;没有看过的&#xff0c;建议先看这篇博文理解这两个概念点。在认知上&#xff0c;建立统一的模型。这样&#xff0c;大家在继续看本篇时&#…

操作系统【四】分页存储管理

连续分配方式的缺点&#xff1a; 固定分区分配&#xff1a;缺乏灵活性&#xff0c;产生大量的内部碎片&#xff0c;内存的利用率较低 动态分区分配&#xff1a;会产生许多外部碎片&#xff0c;虽然可以用紧凑技术处理&#xff0c;但是紧凑技术的时间代价较高 基本分页存储管理…

操作系统【五】分段内存管理+段页式内存管理

基本分段存储管理 与分页最大的区别&#xff1a;离散分配时所分配地址空间的基本单位不同 进程的地址空间&#xff1a;按照程序自身的逻辑关系划分为若干个段&#xff0c;每个段都有一个段名&#xff0c;每段从0开始编址 内存分配规则&#xff1a;以段位单位进行分配&#xff…

计算机网络【六】网络层协议

网络层负责在不同网络之间尽力转发数据包&#xff08;基于数据包的IP地址转发&#xff09;。不负责丢失重传&#xff0c;也不负责顺序&#xff08;每一个数据包都是单独选择路径&#xff09;。 可靠传输是由传输层实现。 网络设备和OSI参考模型 通过分层&#xff0c;屏蔽了…

计算机网络【3】网络层

主要任务时把分组从源端发送到目的端&#xff0c;为分组交换网上的不同主机提供服务。网络层传输单位是数据报 功能&#xff1a; 路由选择与分组转发&#xff08;最佳路径 &#xff09;异构网络互联拥塞控制 数据交换方式 电路交换&#xff1a;通信时延小、有序传输、没有冲…

Linux探秘之用户态与内核态

https://www.cnblogs.com/bakari/p/5520860.html 一、 Unix/Linux的体系架构 如上图所示&#xff0c;从宏观上来看&#xff0c;Linux操作系统的体系架构分为用户态和内核态&#xff08;或者用户空间和内核&#xff09;。内核从本质上看是一种软件——控制计算机的硬件资源&…