计算机网络 ——数据链路层(广域网)

2024-06-06 01:28

本文主要是介绍计算机网络 ——数据链路层(广域网),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

计算机网络 —— 广域网

  • 什么是广域网
  • PPP协议
    • PPP协议的三个部分
    • PPP协议的帧格式
  • HDLC协议
    • HDLC的站
    • HDLC的帧样式
  • PPP和HDLC的异同

我们今天来看广域网。

什么是广域网

广域网(Wide Area Network,简称WAN)是一种地理覆盖范围广泛的计算机网络,其覆盖区域可以从几十公里延伸到几千公里,甚至全球范围。广域网的主要目的是将不同区域的局域网(Local Area Network, LAN)或计算机系统互连起来,使得分布在不同地点的用户和系统能够进行通信和资源共享。

广域网可以跨越城市、国家乃至洲际,常用于连接企业的各个分支机构、数据中心,以及为远程工作人员提供对总部网络资源的访问。它利用多种通信技术来实现长距离的数据传输,包括但不限于公用分组交换网、卫星通信、无线分组交换和光纤网络。

与局域网相比,广域网的特点包括:

  1. 覆盖范围:广域网覆盖的地理范围更广。
  2. 传输速度:通常广域网的数据传输速率低于局域网,但随着技术进步,这一差异正在减小。
  3. 延迟:广域网中的数据传输延迟较高,因为信号需要经过更长的距离和更多的网络节点。
  4. 成本:建设和维护广域网的成本通常高于局域网。
  5. 技术:广域网更多地依赖于路由器和各种长距离通信技术,而局域网则多使用交换机和短距离传输技术。

在这里插入图片描述

广域网的实现形式多样,可以是专用的(如企业内部的私有网络),也可以是公用的(如互联网)。企业或组织使用广域网技术,如MPLS(多协议标签交换)、SD-WAN(软件定义广域网)和VPN(虚拟私人网络)等,来构建高效、安全的远程网络连接。

PPP协议

PPP(Point-to-Point Protocol,点对点协议)是一种广泛使用的数据链路层协议,设计用于在两点之间(通常是两台计算机)通过串行线路(如电话线、DSL线或卫星链接)提供直接的、无误差的数据传输。PPP协议工作在OSI模型的第二层,即数据链路层,它是许多类型点对点连接的基础,包括传统的拨号上网、DSL连接以及某些类型的VPN连接。

PPP协议的主要特性包括:

  1. 多协议支持:PPP可以承载多种网络层协议,如IPv4、IPv6等,这使得它非常灵活,能够适应不同的网络环境。
  2. 动态地址分配:通过网络控制协议(NCPs),PPP能够动态分配IP地址和其他网络配置参数,简化了网络管理。
  3. 错误检测:使用循环冗余校验(CRC)来检测在传输过程中可能发生的错误,确保数据的完整性。
  4. 透明传输:支持特殊字符的传输,如通过转义机制处理帧内的标志字符,保证数据的透明传输。
  5. 认证功能:提供可选的身份验证机制,包括PAP(Password Authentication Protocol)和CHAP(Challenge-Handshake Authentication Protocol),增强了网络的安全性。
  6. 数据压缩:可选地使用协议如CCP(Compression Control Protocol)来压缩数据,提高带宽效率。
  7. 网络控制协议(NCPs):除了基本的LCP(Link Control Protocol)用于建立、配置和测试数据链路连接外,NCPs用于协商更高层协议的参数,如IPCP(Internet Protocol Control Protocol)用于配置IP参数。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

尽管PPP最初是为了在串行链路上使用而设计的,它的灵活性和功能丰富性使其能够被扩展以适应其他环境,比如以太网上的点对点通信(通过PPPoE,即PPP over Ethernet),这使得它在现代网络中仍然扮演着重要角色。

PPP协议的三个部分

PPP(Point-to-Point Protocol)协议主要包括以下三个关键部分:

  1. 封装
    PPP提供了一种封装方法,可以将不同网络层协议的数据报文封装在PPP帧中,从而实现在同一条链路上复用多种网络层协议的数据传输。这种封装格式精心设计,确保了对多数硬件的兼容性,并且能够有效处理数据的透明传输,即正确传输含有特殊控制字符的数据。
  2. 链路控制协议(LCP, Link Control Protocol)
    LCP负责建立、配置、维护和终止数据链路的连接。它处理链路层的参数协商,如最大传输单元(MTU)的大小、确定数据包的格式和大小限制、检测和纠正链路故障,以及可选地执行链路两端设备的身份验证。LCP还支持在链路建立期间协商是否使用其他扩展功能,如数据压缩和加密。
  3. 网络控制协议(NCPs, Network Control Protocols)
    一旦LCP成功建立了数据链路,NCPs就会被用来配置和管理特定的网络层协议,如IPv4、IPv6等。每个NCP都是针对一种网络层协议设计的,负责动态分配和协商该网络层协议所需的参数,例如IP地址分配(通过IPCP, Internet Protocol Control Protocol)。NCP使得PPP连接可以适应不同的网络环境和需求,支持多协议的传输。

这三个部分共同协作,使PPP协议不仅能够提供基础的数据传输功能,还能实现链路的动态配置、错误检测、安全性增强以及效率提升,是点对点通信中不可或缺的数据链路层协议。
在这里插入图片描述
在这里插入图片描述

PPP协议的帧格式

PPP(Point-to-Point Protocol)协议的帧格式基于HDLC(High-Level Data Link Control)帧格式,但进行了简化和调整,以适应点对点通信的需求。一个典型的PPP帧结构包含以下几个部分:

  1. 标志字段(Flag)
  • 占1字节,值为0x7E(二进制为01111110),标志着帧的开始和结束。它用于帧定界,确保接收端可以准确识别单个帧的边界。
  1. 地址字段(Address)
  • 占1字节,值固定为0xFF(二进制为11111111)。在点对点环境中,因为通信双方已经明确,所以这个字段实际上并不起作用,但保留以保持与HDLC的兼容性。
  1. 控制字段(Control)
  • 占1字节,值通常为0x03(二进制为00000011)。在PPP协议中,这个字段同样不携带实际意义的信息,主要用于与HDLC的兼容性。
  1. 协议字段(Protocol)
  • 占2字节,用于标识信息字段的内容类型。例如,当值为0x0021时,表示信息字段包含的是IP数据报;如果为0xC021,则表示信息字段包含的是LCP(链路控制协议)数据;0x8021则表示信息字段是网络控制协议(NCP)的数据。
  1. 信息字段(Information)
  • 可变长度,包含实际要传输的数据。数据可以是任何网络层协议的数据包,如IP、IPX等。
  1. 帧检验序列(Frame Check Sequence, FCS)
  • 占2字节,通常使用CRC(Cyclic Redundancy Check)校验,用于检测帧在传输过程中是否出现错误。
  1. 标志字段(Flag)
  • 再次出现,作为帧的结束标记,与帧的开始标志相同,值为0x7E。

为了实现透明传输(即允许任何数据通过,包括与帧定界符相同的比特序列),PPP协议在数据传输前会对特殊字符进行转义处理。例如,如果信息字段中出现了与帧定界符相同的0x7E或者转义字符0x7D,就会在这些字符前面插入一个转义字符0x7D,并对原始字符进行位操作(对于0x7E变为0x7D5E,对于0x7D变为0x7D5D),确保接收端能够正确还原数据。
在这里插入图片描述

这种帧格式设计确保了PPP协议既简洁又强大,能够适应不同类型的链路和多种网络层协议的需求。

HDLC协议

高级数据链路控制(High-Level Data Link Control,简称HDLC)是一种广泛使用的数据链路层协议,它工作在OSI模型的第二层。HDLC由国际标准化组织(ISO)制定,基于IBM的同步数据链路控制(SDLC)协议发展而来,旨在为网络节点间的数据传输提供一套可靠、高效的控制规程。

  1. 面向比特的协议:HDLC是面向比特的协议,这意味着它可以透明地传输任何比特流,不论数据内容如何,都能确保数据的透明性。
  2. 帧结构:HDLC帧由标志字段、地址字段、控制字段、信息字段、帧校验序列(FCS)等部分组成。标志字段用来界定帧的开始和结束,常用01111110(十进制的0x7E)作为标志序列。
  3. 差错检测:通过循环冗余校验(CRC)来检测数据帧在传输过程中的错误,保证数据的完整性。
  4. 流量控制:提供可选的流量控制机制,确保发送方不会过快地发送数据,超出接收方的处理能力。
  5. 操作模式:定义了三种操作模式,包括正常响应模式(NRM)、异步响应模式(ARM)和异步平衡模式(ABM),适用于不同的网络拓扑和通信需求。
  6. 链路初始化和终止:支持链路的建立、维护和终止过程,包括链路的初始化、参数的协商以及异常情况下的链路恢复。
  7. 多点通信:支持点对点和点对多点的通信模式,可以用于构建非平衡或平衡的网络结构。
  8. 透明传输:通过位填充(bit stuffing)或字符填充(byte stuffing)技术处理特殊控制字符,避免数据中的信息被误解释为控制信息。
    在这里插入图片描述

尽管随着技术的发展,HDLC在一些新兴网络技术中已经被更新的协议(如PPP、Ethernet的LLC子层)所替代,但在许多传统的网络设备和专有系统中,尤其是那些要求高度可靠性和实时性的应用场景,HDLC协议依然得到广泛应用。

HDLC的站

在HDLC(High-Level Data Link Control,高级数据链路控制)协议中,网络中的设备或站点根据它们在数据传输过程中的角色和功能被分为几种类型,主要分为以下三类:

  1. 主站(Primary Station):
  • 主站负责发起和控制链路的建立、维护以及拆除过程。
  • 它发送命令帧给从站,用于启动数据传输、控制数据流、执行错误恢复等。
  • 主站接收从站的响应帧,并基于这些响应做出相应的控制决策。
  • 在多点网络中,主站管理整个链路系统的运行,包括所有从站的活动。
  1. 从站(Secondary Station):
  • 从站响应主站的命令,不主动发起通信。
  • 它们接收主站的命令帧并发送响应帧,以确认接收到的命令或报告错误。
  • 从站在主站的控制下参与数据传输,执行流量控制、差错检测等功能。
  • 在多点配置中,可能存在多个从站,每个都与主站单独通信。
  1. 复合站(Combined Station):
  • 复合站具备主站和从站的双重功能,可以根据需要在通信中扮演任一角色。
  • 这类站可以发起数据传输如同主站,也能响应命令如同从站。
  • 在某些网络配置中,复合站可以在没有明确主站的情况下与其他复合站或从站进行通信,增加了网络的灵活性。

每种类型的站通过发送特定类型的帧(如信息帧、监控帧、无编号帧)来执行其指定的任务,这些帧类型帮助实现数据传输、链路控制、错误检测及恢复等功能。HDLC协议的设计使得这些站点能够有效地协同工作,确保数据在链路上的可靠传输。

在这里插入图片描述

HDLC的帧样式

HDLC(High-Level Data Link Control)协议的帧结构遵循一个标准的格式,确保了数据的高效和可靠传输。以下是HDLC帧的基本组成部分,这些组件共同构成了HDLC的帧样式:

  1. 标志字段(Flag Field)
  • 标志字段由一个字节组成,其值为0x7E(二进制为01111110),用于标记帧的开始和结束。这使得接收器能够正确地识别帧的边界。
  1. 地址字段(Address Field)
  • 在点对点的通信中,地址字段通常被设置为全1(0xFF或0x7F),表示这是一个广播地址,因为在这种情况下不需要指定特定的目标地址。在多点配置中,此字段可以用来指明帧的接收者,但通常仍保留为默认值。
  1. 控制字段(Control Field)
  • 控制字段决定帧的类型和用途。它定义了帧的格式和控制信息,如信息帧(I帧)、监控帧(S帧)或无编号帧(U帧)。控制字段的前几位决定了帧的类别:
  • I帧(信息帧):用于传输数据,控制字段的首位为0。
  • S帧(监控帧):用于流量控制和错误恢复,控制字段的前两位为10。
  • U帧(无编号帧):用于链路控制和状态信息,控制字段的前两位为11。
  1. 信息字段(Information Field)
  • 该字段包含实际要传输的数据。其长度可以变化,取决于实际数据的大小。对于I帧,这是网络层协议数据包或用户数据;对于S和U帧,信息字段可能包含控制信息。
  1. 帧校验序列(Frame Check Sequence, FCS)
  • 通常采用CRC(Cyclic Redundancy Check)算法计算得出,占用2到4个字节,用于错误检测。它覆盖了地址字段、控制字段、信息字段和可能存在的其他字段,确保数据的完整性。
  1. 填充字段(Padding Field)(可选)
  • 在某些情况下,为了满足最小帧长度要求或保持数据同步,可能会在信息字段后插入填充位。填充的目的是确保帧的总长度符合传输要求。

在这里插入图片描述

HDLC协议通过这些帧结构的精确定义,确保了数据在链路层的有效封装、传输和错误检测,支持了点对点和多点的可靠通信。

PPP和HDLC的异同

PPP(点对点协议)和HDLC(高级数据链路控制)都是数据链路层协议,用于在两个网络节点间提供可靠的数据传输服务。下面是它们的异同点概览:

相同点:

  1. 目的相似:二者旨在提供点对点链路上的数据传输和错误检测能力,使用循环冗余校验(CRC)进行错误检测。
  2. 数据封装:都对数据进行封装,包含帧头和帧尾以界定数据单元,并提供帧定界和同步功能。
  3. 全双工操作:支持全双工通信,允许数据同时在两个方向上传输。
  4. 传输方式:都使用同步和透明传输方式,确保数据的透明性。

不同点:

  1. 设计目标和标准:PPP由IETF制定,为了解决SLIP协议的局限性,适应更多网络层协议,并集成了认证、加密等功能;而HDLC源自ITU-T标准,起初用于X.25网络,更侧重于电信网络应用。
  2. 认证与加密:PPP支持多种认证方式,如PAP(密码认证协议)和CHAP(挑战握手认证协议),并且可以实现数据加密;而HDLC不支持内置的认证和加密功能。
  3. 网络层协议支持:PPP可以封装多种网络层协议,如TCP/IP、IPX、AppleTalk等,适应多种网络环境;而HDLC传统上主要用于传输数据帧,通常与特定网络层协议绑定。
  4. 协商与配置机制:PPP通过链路控制协议(LCP)协商链路参数,如MTU、压缩等,并且有网络控制协议(NCP)来配置网络层参数;而HDLC没有类似的动态协商和配置机制,其参数通常是静态配置的。
  5. 应用场景:PPP广泛应用于拨号、ISDN、DSL、以太网等多种网络环境,特别适合需要灵活配置和安全特性的点对点连接;而HDLC常用于广域网、数据通信设备和一些特定的点对点或多点网络中,以其紧凑的帧格式和高效性见长。

在这里插入图片描述

综上,虽然PPP和HDLC在基本的数据传输功能上有相似之处,但PPP在灵活性、安全性、适应性和协议支持方面更为先进和全面,而HDLC则在某些特定应用领域因其实现简单和高效性而被采用。

这篇关于计算机网络 ——数据链路层(广域网)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034711

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro