热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机网络(自用)

三、数据链路层1、数据链路层基本概念2、封装成帧3、差错检测4、可靠传输可靠传输的实现机制停止等待协议(Stop-and-Wait)回退N帧协议(Go-Back-N)选择重传协议(


三、数据链路层

  • 1、数据链路层基本概念
  • 2、封装成帧
  • 3、差错检测
  • 4、可靠传输
    • 可靠传输的实现机制
      • 停止等待协议(Stop-and-Wait)
      • 回退N帧协议(Go-Back-N)
      • 选择重传协议(Selective Request)
  • 5、点对点协议(PPP)
  • 6、媒体接入控制
    • 静态划分信道
    • 动态接入控制
      • CSMA/CD
      • CSMA/CA
  • 7、MAC地址、IP地址和ARP协议
  • 8、集线器和交换机的区别
  • 9、以太网交换机的自学习和帧转发流程
  • 10、使用生成树协议提高网络可靠性
  • 11、虚拟局域网VLAN
    • 具体实现


1、数据链路层基本概念


  1. 链路(Link)就是从一个节点到相邻节点的一段物理线路,且过程中没有经过任何网络交换。
  2. 数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,从而实现数据传输。数据链路层以帧为单位传输和处理数据。

使用点对点信道的数据链路层有三个重要问题:
封装成帧:将上层交付的协议数据单元封装
差错检测:根据帧尾的检错码检测帧中是否有误码
可靠传输:实现发送方与接收方的收发内容完全一致


2、封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。帧头和帧尾中包含重要的控制信息,可以实现帧定界

为了提高帧的传输效率,应当使帧的数据部分长度尽可能大。考虑到差错控制等因素,每一种数据链路协议都规定了帧的数据部分长度上限,即最大传送单元MTU(Maximum Transfer Unit)。


3、差错检测

实际的通信链路都不是理想的,比特传输过程中可能会产生差错:1可能变成0,0可能变成1,这称为比特差错。在一段时间内,传输错误的比特占传输出比特总数的比率称为误码率BER(Bit Error Rate)。使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层要解决的重要问题之一。

两种用于差错检测的方法:

奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位)中"1"的个数为奇数(奇校验)或偶数(偶校验)。
如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;如果偶数个位发生变化,则奇偶性不变,不能检测出误码。

循环冗余校验CRC(Cyclic Redundancy Check)


  • 收发双方约定好一个生成多项式
  • 发送方基于待发送数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起发送给接收方
  • 接收方通过收到的数据和生成多项式来判断收到的数据是否产生误码。

不过检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销较大,在计算机网络中很少使用。循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但是易于用硬件实现,因此被广泛应用于数据链路层。在网络中通常会采用检错重传的方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向上层提供的是可靠传输服务还是不可靠的传输服务


4、可靠传输

通常情况下,有线链路的误码率比较低,为了减小开销,不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输的问题由其上层处理;而无线链路易受干扰,误码率较高,因此要求无线链路的数据链路层必须向上层提供可靠的传输服务。
数据链路层中的可靠传输主要是为了解决比特差错,也就是说可靠传输服务不仅局限于数据链路层,其他各层均可以选择实现可靠传输。


可靠传输的实现机制


  1. 停止等待协议(SW)
  2. 回退N帧协议(GBN)
  3. 选择重传协议(SR)

值得注意的是,这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以被应用到计算机网络体系结构的各层协议中。这三种协议都属于自动请求重传协议(ARQ协议)。


停止等待协议(Stop-and-Wait)

在这里插入图片描述


  1. 停止等待的意思是发送方在发送完数据分组后,需要等待接收方传回的确认数据,然后再接着发送数据。
  2. 如果接收方收不到数据分组,就不会发送ACK或NAK等确认消息,因此在发送方可以添加超时计时器,如果达到了设置的重传时间后发送方仍收不到接收方的数据,则发送方重传数据分组,这称为超时重传
  3. 在接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传,但对于误码率较高的点对点链路,为了使发送方尽早重传,也可以向其发送NAK分组
  4. 为了让双方判断收到的数据是否重复,要给数据分组编号。数据链路层一般不会出现ACK分组迟到的情况,因此再数据链路层实现停止等待协议可以不用给ACK分组编号。
  5. 超时计时器设置的重传时间要仔细选择,一般可以将重传时间选为略大于“从发送方到接收方的平均往返时间”。
    在数据链路层点对点的往返时间比较确定,重传时间容易设定;
    在运输层,由于端到端的往返时间非常不确定,因此设置合适的重传时间并不容易。
    停止等待协议的信道利用率:
    在这里插入图片描述
    当往返时延RTT(Round-Trip Time)远大于数据帧发送时延TD时(例如使用卫星链路),信道效率非常低。如果出现重传,信道利用率会进一步降低。为了克服停止等待协议信道利用率很低的缺点,就产生了回退N帧协议(GBN)和选择重传协议(SR)。

回退N帧协议(Go-Back-N)

当接收方的数据接收出现差错时,需要回到最先出现差错的位置重新接收数据。因此被称为回退N帧协议
在这里插入图片描述
在这里插入图片描述
如果WT超过取值范围,就会因为接收方无法分辨新旧数据分组而产生分组重复问题。
回退N帧协议利用发送方连续发送数据分组,是一种连续ARQ协议。在协议工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又被称为滑动窗口协议。由于回退N帧协议的后退特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。


选择重传协议(Selective Request)

发送方将序号落在发送窗口内的多个分组全部发送出去,接收方可接收未按序到达、没有误码且序号落在接收窗口内的数据分组。
为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而要对每个正确接收到的数据分组进行逐一确认。
发送方只有收到已发送数据所有分组的确认后,发送窗口才向前滑动,若收到未按序到达的确认分组,会对其进行记录,以防止其相应数据分组的超时重发,但是发送窗口不能向前滑动。
接收方只有在接收所有的数据分组后,接收窗口才能够向前滑动。


5、点对点协议(PPP)

点对点协议(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议在这里插入图片描述
点对点协议的帧格式
在这里插入图片描述
在这里插入图片描述


6、媒体接入控制

共享信道要着重考虑的一个问题就是怎样协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。实现MAC主要有以下两种方式:


静态划分信道


动态接入控制

静态划分信道:采用信道复用技术,包括频分复用(FDMA)、时分复用(TDMA)、波分复用(WDMA)和码分复用(CDMA)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
码分复用是指各用户使用经过特殊挑选的不同码型进行通信,用户之间不会产生干扰。可以在同样的时间使用相同的频带进行通信。

动态划分信道


CSMA/CD

1、CSMA/CD 载波监听多址接入/碰撞检测的工作原理
载波监听CS:发送帧前先检测总线,若总线空闲96比特时间,则立即发送帧;若总线忙,则持续检测总线直到总线空闲96比特时间后再重新发送。
多址接入MA:多个主机连接在一根总线上,竞争使用总线。
碰撞检测CD:一边发送帧一边检测碰撞,如果检测到碰撞,就立即停止发送,退避一段随机时间后再重新发送。
整个过程可以总结为“先听后说,边说边听,一旦冲突,立即停说,等待时机,重新再说”。

2、使用CSMA/CD协议的以太网争用期(碰撞窗口)
发送帧的主机最多经过以太网端到端往返传播时延2τ这么长时间,就可以检测到本次传输是否发生了碰撞,2τ称为争用期;

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞;

以太网规定2τ的取值为512比特时间(即发送512比特所耗费的时间),对于10Mbps的以太网,2τ为51.2μs。
在这里插入图片描述
在这里插入图片描述
CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。


CSMA/CA

CSMA/CA载波监听多址接入/碰撞避免
在这里插入图片描述


7、MAC地址、IP地址和ARP协议

MAC地址是以太网的MAC子层使用的地址,属于数据链路层
多个主机连接在同一个广播信道上时,要想实现两个主机之间的通信,则每个主机都必须有一个唯一标识,即一个数据链路层地址。在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。这类地址用于媒体接入控制(Media Access Control),被称为MAC地址。
MAC地址一般被固化在网卡(网络适配器)中,因此MAC地址也被称为硬件地址、物理地址。
一般情况下,用户主机会包含两个网络适配器:有限局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以拥有更多MAC地址。
MAC地址是对网络上各个接口的唯一标识,而不是对网络上各设备的唯一标识。

IP地址是TCP/IP协议体系结构网络层所使用的地址
IP地址是因特网上主机和路由器使用的地址,用于标识两部分信息:
网络编号:标识因特网上数以百万计的网络
主机编号:标识同一网络上的不同主机(或者是路由器的各接口)
也就是说,如果只是一个单独的网络,不接入因特网,可以只使用MAC地址。如果主机所在的网络要接入因特网,则IP地址和MAC地址都要使用。
数据包转发过程中源IP地址和目的IP地址保持不变;源MAC地址和目的MAC地址逐个链路(逐个网络)改变。

ARP协议属于TCP/IP协议体系结构的网络层,其作用是通过IP地址解析获取设备的MAC地址。


  • 源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,若找到了,则可以封装MAC帧进行发送;若找不到则发送ARP请求(ARP请求封装在广播MAC帧中)。
  • 目的主机在收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中),ARP响应中包含有目的主机的IP地址和MAC地址。
  • 源主机收到ARP响应后,将目的主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机。
  • ARP的作用范围是同一段链路,不能跨网络作用。

8、集线器和交换机的区别

在这里插入图片描述


9、以太网交换机的自学习和帧转发流程

在这里插入图片描述


10、使用生成树协议提高网络可靠性

在这里插入图片描述


11、虚拟局域网VLAN

使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。随着交换式以太网规模的扩大,广播域相应扩大。巨大的广播域会产生广播风暴等问题,难以维护和管理,因此要对广播域进行分割。但是使用路由器隔离广播域成本较高,因此产生了虚拟局域网VLAN技术。VLAN是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。


具体实现

交换机的端口类型有以下三种:Access、Trunk、Hybrid
交换机各端口的缺省VLAN ID
这里要注意的是,带标签的帧是不能被主机识别的,只有在帧去标签后才是有效的数据帧。


  • 在思科交换机上称为Native VLAN,即本征VLAN。
  • 在华为交换机上称为Port VLAN ID(PVID),即端口VLAN ID。
    在这里插入图片描述

在这里插入图片描述


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
黑衬衫1994
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有