铜川市网站建设_网站建设公司_搜索功能_seo优化
2025/12/17 14:22:02 网站建设 项目流程

链路协议和网络层

文章目录

  • 链路协议和网络层
    • 一、前言
    • 二、数据链路层
      • 2.1 CRC循环冗余校验
        • 2.1.1 定义
        • 2.1.2 基本思想
        • 2.1.3 发送方CRC操作
        • 2.1.4 循环冗余校验举例
      • 2.2 Ethernet协议
        • 2.2.1 Ethernet V2标准
        • 2.2.2 Ethernet V2帧格式
        • 2.2.3 Ethernet V2帧长度标准
        • 2.2.4 以太网MAC帧协议
      • 2.3 PPP协议
        • 2.3.1 PPP概述
        • 2.3.2 PPP帧
    • 三、网络层
      • 3.1 网际层的设计选择
        • 3.1.1 为什么要有网络层?
        • 3.1.2 路由器的主要任务
        • 3.1.3 网络层向上层提供两种服务
      • 3.2 网络层协议
        • 3.2.1 IPv4数据报格式(核心)
        • 3.2.2 IPv4数据报首部协议
    • 四、小结

一、前言

本篇将为链路层画上句号,开启网络层的学习~

二、数据链路层

接上文,数据链路层的第三个问题——差错检测的另一种检测方法

2.1 CRC循环冗余校验

奇偶校验基本不太使用(如果出错了两位,就不起作用了),只有在实验中或者短距离运输中会用。

关于CRC循环冗余校验,基本硬件已经做好了,不用自己实现

2.1.1 定义

数据链路层广泛使用漏检率低的循环冗余实验(Cyclic Redundancy Check,CRC)检错技术

2.1.2 基本思想
  • 收发双方约定好一个生成多项式G(x)
  • 发送方基于待发送的数据和生成多项式G(x),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输
  • 接收方收到数据和冗余码后,通过生成多项式G(x)来计算收到的数据和冗余码是否产生了误码
2.1.3 发送方CRC操作

这里的生成多项式是一个关于1和0的序列

2.1.4 循环冗余校验举例

2.2 Ethernet协议

2.2.1 Ethernet V2标准
  • 以太网帧的格式有:

    • Ethernet V2标准(使用最多)
    • IEEE的802.3标准

    格式问题 协议定义格式

    二进制格式 其他层 定义不同的位数代表什么含义

    文本格式 应用层 人阅读 Content-length

  • 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节

  • 用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD协议,它传输的帧依然是以太网帧

2.2.2 Ethernet V2帧格式

格式说明

  • 首部:目标MAC + 源MAC + 网络类型
  • 以太网帧:首部 + 数据 + FCS
  • 数据的长度至少是:64 - 6 - 6 - 2 - 4 = 46字节
2.2.3 Ethernet V2帧长度标准
  • 当数据部分的长度小于46字节时
    • 数据链路层会在数据的后面加入一些字节填充
    • 接收端会将添加的字节去掉
  • 长度总结
    • 以太网帧的数据长度:46~1500字节
    • 以太网帧的长度:64~1518字节
2.2.4 以太网MAC帧协议

以太网帧没有帧开始符和帧结束符

  • 接收方可能收到的无效MAC帧包括以下几种:
    • MAC帧的长度不是整数个字节
    • 通过MAC帧的FCS字段的值检测出帧有误码
    • MAC帧的长度不在64~1518字节之间
  • 接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制

2.3 PPP协议

2.3.1 PPP概述
  • 点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议
  • 点对点协议PPP是因特网工程任务组(Internet Engineering Task Force,IETF)于1992年制定的。经过多次修订,目前PPP已成为因特网的正式标准[ RFC1661, RFC1662 ]
  • 点对点协议PPP主要有两种应用:
    • 因特网用户(ALDS拨号)
    • 广域路由器链路
2.3.2 PPP帧

  • 标志(Flag)字段:PPP帧的定界符,取值为0x7E

  • 地址(Address):取值为0xFF,预留(目前没什么作用)

    点对点通信和广播通信不同,是直连的,不需要地址

  • 控制(Control):取值为0x03,预留(目前没什么作用)

  • 协议(Protocol):其值用来指明帧的数据载荷应向上交付给那个协议处理

    以太网帧中,协议就是类型

帧检验序列(Frame Check Sequence,FCS)字段:其值是使用循环冗余校验CRC计算出的检错码

三、网络层

3.1 网际层的设计选择

网络层有时叫网际层

3.1.1 为什么要有网络层?

主要原因在于:链路层设计了很多很多链路,比如:以太网和点对点。这两种链路直接通信是不可行的。

由于异构网路的组网格式、身份识别方式、数据校验方式等都不尽相同,如何将不同的异构网络组合成新的网络,此时,IP协议诞生了。

IP协议就是用来描述网络的逻辑结构

先前我们了解到路由器作为三层设备(工作在网络层),路由器的接到数据包后,会直接丢到下一个设备,就是利用IP来传的,而不是MAC地址。

3.1.2 路由器的主要任务
  • 将分组从源主机经过多个网络和多段链路传输到目的主机
  • 可以将任务划分为分组转发路由选择两种重要的功能

3.1.3 网络层向上层提供两种服务
  • 面向连接的虚电路服务

    • 核心思想是“可靠通信”应由网络自身来保证
    • 通信双方沿着已建立的虚电路发送分组(路径固定)

    很多广域分组交换网都使用面向连接的虚电路服务。

  • 无连接的数据报服务

    • 核心思想是“可靠通信应由用户主机来保证”
    • 不需要建立网络层连接
    • 每个分组可走不同的路径,因此,每个分组的首部都必须携带目的主机的完整地址
    • 通信结束后,没有需要释放的连接

    缺点:可能误码、丢失、重复和失序,至此,网络层不再提供可靠通信,将可靠性交给上层——传输层

    优点:使得网络中的路由器可以做得比较简单,大大降低了网络造价,适合厂家部署

整个网络就是一个大的云,大家都是通过IP层互相认识的

3.2 网络层协议

3.2.1 IPv4数据报格式(核心)
  • 在TCP/IP标准中,各种数据格式常常以32比特(即4字节)为单位来描述

    数据按位来解读

  • 网络层数据包(IP数据把包,Packet)由首部、数据2部分组成

    • 数据:很多时候是由传输层传递下来的数据段(Segment)

固定部分表示必不可少的部分,如果没有这个部分,那么上层根本不知道该如何处理这个数据包

40 + 20 = 1111(15) × 4

容易出现问题:数据粘包

解决方案:定义长度

3.2.2 IPv4数据报首部协议
  • 版本(Version)

    长度为4个比特,用来表示IP协议的版本

    • 0b0100:IPv4
    • 0b0110:IPv6
  • 首部长度(Header Length)

    占4个比特,乘以4才是最终长度,用来表示IPv4数据报的首部长度

    • 最小取值为二进制的0101:20字节
    • 最大取值为二进制的1111:60字节
  • 可选字段

    • 长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能

    • 虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销

      以太网和IP协议不同,首部格式是固定的

  • 填充

    • 当首部长度(20字节固定部分 + 可变部分)的长度不是4字节整数倍时,填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍
    • 使用全0进行填充
  • 区分服务(Differentiated Services Field)

    • 占8个比特
    • 可以用于提高服务质量
  • 总长度(Total Length)

    • 占16个比特
    • 首部 + 数据的长度之和,最大65535

    路由器在逐字节解析首部时,会发现总长度(首部 + 数据长度(可能是传输层 + 应用层往上层传输的数据))

    当数据包从网络层传往链路层时,有一个定义表示最大传输单元,是1500字节。而在网络层的总长度最大为65535,在网络协议中有一个巧妙的处理——分片

  • 标识、标志、片偏移

    标识(Identification):

    • 占16比特
    • 数据包的ID,当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的
    • 有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1

    标志(Flags):

    • 占3比特
    • 最低位(More Fragment,MF)
      • MF = 1表示本分片后面还有分片
      • MF = 0表示本分片后面没有分片
    • 中间位(Don’t Fragment,DF)
      • DF = 1表示不允许分片
      • DF = 0表示允许分片
    • 最高位为保留位,必须设置为0

    题目:

    某个IPv4数据总长度为3820字节,采用20字节固定首部,假设根据数据链路层要求,需要将该IPv4数据报分片为长度不超过1420字节的数据报片。


    面临问题:数据包不能保证有序到达

    片偏移(Fragment Offset):

    • 占13比特

    • 片偏移乘以8:字节偏移

      为了能够跟总长度(16比特)接近,作了×8的处理(左移3位),因此每一片的长度一定是8的整数倍。

    • 每一片的长度一定是8的整数倍

      片偏移是为了实现网络层数据的有序到达,便于数据进一步处理



      链路层:20 + x1 == 800

      20 + 1560

      20 + 780

      片偏移:

      20 0 - - - - 779

      780 / 8 = 97.5(不符合是8的整数倍,错误)

      找一个接近的:776 / 8 = 97

      20 0 - - - - - 775

      20 776 - - - - 1551

      20 1552 - - - 1560

      因此选择B

  • 生存周期(Time To Live,TTL)

    占8比特

    数据包在初始时有一个TTL初始值,每个路由器在转发之前会将TTL减1,一旦发现TTL减为0,路由器会返回错误报告

  • 协议

    • 长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元(PDU)

    目的地会对其进行解析,如果IP(协议头是1),那么就丢给ICMP。

    ping命令的数据包不可能到传输层,直接到网络层:把数据包构造成之后,发给目标地址,然后src和dest交换位置之后再原封不动传回来

每一层收到数据包,都会进行不同的处理。

链路层:有几个不同的去处:IPv4/ARP
网络层:传给传输层/ICMP(把目的地址和源地址进行重构)
传输层:UDP/TCP

四、小结

数据包的逐层传输蕴含极大奥妙,在网络层中的处理就是上述啦~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询