以下内容为结合教材内容的个人理解,笔记内容也会随着课程进度随时更新和勘误,如有错误敬请在评论区中指出~共同学习进步~

第一章 计算机网络概述

1.2 计算机网络的定义和分类

  • 定义:利用通信线路和通信设备,将分布在不同地理位置上的具备独立工作能力的各个计算机连接起来,并配置网络软件,以实现计算机通信,资源共享的计算机系统
  • 分类:局域网、城域网、广域网、个人区域网、公用网、专用网

1.3 互联网的概述

互联网是世界上最大的互联网络,前身是ARPANet(阿帕网),互联网/因特网的英文是Internet,采用TCP/IP(Transmission Control Protocol/Internet Protocol)作为通信规则
注意:internet与Internet有区别,小写字母开头的internet为通用名词,他泛指有多个计算机网络互联而成的网络,这些网络间的通信协议是任意的。
互联网由ARPANet发展而来,随后建成三级结构的互联网,分为主干网、地区网、校园/企业网,第三阶段逐渐形成多层次ISP结构的互联网。第一层ISP通常称为互联网主干网。
未来将建成下一代互联网(NGI,Next Generation Internet),中国下一代互联网(CNGI)。

1.4 电路交换与分组交换

  • 电路交换:类似电话线路,线路的传输效率较低,但是时延较低。
  • 分组交换:计算机网络主要采用的技术。一整个数据称为报文,分成一段段的数据段后,加上首部即形成了分组,分组又称为包。分组发送至分组交换机后,检查首部内容,根据转发表找到合适的接口进行转发。计算机网络中有两类典型的分组交换机:路由器、二层交换机。分组交换在转发分组时需要花费时间,造成了时延。且各个分组必须携带控制信息造成了一定的资源开销,并且在通信量较大时,可能造成网络拥塞。
  • 网络拥塞:数据包传送过程中,因传输效率不一致,造成的排队数据包大小超出交换机缓存,这些数据包只能被丢弃,造成分组丢失。
  • 报文交换:不分包,只携带头部进行转发。

1.5 计算机网络的主要性能指标

  • 速率:数据的传送速率,也称为数据率或比特率,单位为bit/s
  • 带宽:本指信号具有的频带宽度,单位为Hz。在计算机网络中指网络某通道的传送数据的能力,表示在单位时间内从网络的某一点到另一点所能通过的“最高数据率”,单位为bit/s
  • 吞吐量:也称吞吐率,表示在单位时间内通过某个网络(或信道、接口)的实际数据量
  • 时延:也称延迟、迟延,指数据从网络的一端到另一端的时间
    • 发送(传输)时延:主机或路由器将整个分组上所有比特发送到通信线路上需要的时间,公式: 发送时延=分组长度发送速率\ 发送时延=\frac{分组长度}{发送速率}
    • 传播时延:电磁波在信道中传播一定距离花费的时间。公式: 传播时延=信道长度电磁波在信道上的传播速率\ 传播时延=\frac{信道长度}{电磁波在信道上的传播速率}
    • 处理时延:主机或路由器在收到分组时处理所花费的时间
    • 排队时延:分组进入路由器排队等待处理的时间

总时延为上述四种时延之和。对于高速网络链路,我们提高的仅仅是数据的发送速率,而是比特在链路上的传播速率,提高数据的发送速率只是减小了数据的发送时延。

  • 丢包率:分组丢失率。在通信量较大时造成网络拥塞就容易造成丢包。丢包率在一定程度上能反应网络的拥塞情况。
  • 利用率:分为信道利用率和网络利用率两种。信道利用率指某信道有百分之几的时间是被利用的,网络利用率是全网络的信道利用率的加权平均值。利用率并不是越高越好,在利用率较高时易产生网络拥塞,造成非常大的时延。

1.6 计算机网络的体系结构

  • 网络协议:规定了所交换的数据的格式和时序、在发送或接收数据时要采取的动作。网络三要素:语义、语法、时序。
    • 语义:指各个控制信息的具体含义。
    • 语法:数据与控制信息的结构或格式
    • 时序(或同步):时间实现的顺序和时间的详细说明
  • 分层体系结构设计:即网络模块化的设计,计算机网络的体系结构就是这个计算机网络及其部件所应完成的功能的精确定义,体系结构是抽象的,实现则是具体的,是真正在运行的计算机硬件和软件。分层设计有以下优点:
    • 各层独立:无需关心下一层或上一层如何实现,仅需要知道层间的接口所提供的服务
    • 灵活性好、结构上可分割:不受上下层的影响,当任何一层发生变化,只需保证接口不变即可。
    • 易于实现和维护:将功能进行解耦,将实现和调试变得容易
    • 有利于功能复用:下层可以为多个不同的上层提供服务
    • 促进标准化工作:每一层的功能和所提供的服务均有精确说明
  • OSI参考模型及TCP/IP参考模型:开放系统互联参考模型(Open Systems Interconnection Reference Model,OSI/RM),简称OSI,由国际标准化组织(ISO)制定。而TCP/IP模型是事实上的国际标准。

OSI模型从下到上分别为:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。
TCP/IP模型从下到上分别为:网络接口层、网际层、运输层、应用层
通常,我们综合两个模型,形成五层模型,从下到上分别为:物理层、数据链路层、网络层、运输层、应用层
下面是各层的主要功能:

  1. 应用层(报文):用户接口,例如HTTP、SMTP
  2. 表示层(报文):数据表示、加密等处理过程,例如ASCII、JPEG编码
  3. 会话层(报文):保证不同应用间的数据区分
  4. 运输层(报文段Segment):例如TCP、UDP
  5. 网络层(数据包Packet):主要是IP
  6. 数据链路层(帧Frame):用MAC地址访问介质
  7. 物理层(位bit):设备间接收发送比特流,可以理解成物理传输载体

在TCP/IP模型中,每层之间的传输将增加/去除相应的头部信息,并且只增加/去除头部,不会对数据部分进行修改/签名/加密。
并且在TCP/IP模型中,有两个重要的分界线:
两个分界线

  • 联想思考:路由器工作在OSI网络层,但是需要NAT转发的路由器因需要端口级别的转发,所以工作在OSI运输层。防火墙工作在较为底层的工作层级,根据一定规则进行全文数据审查。
  • WireShark工作在OSI数据链路层,可以将TCP及IP段进行一定程度的组装,点击相应的通信数据即可看到内容,从下到上依次对应TCP/IP的各个层级数据。

第一章习题(个人答案仅供参考)

  • 试简述分组交换的要点:

答:分组交换采用存储转发技术,当需要发送数据时无需再源和目的地之间先建立一条物理的通路,而是将要发送的报文分割成较小的数据段,将控制信息作为首部加在每个数据段的前面(构成分组)一起发送给分组交换机。每一个分组的首部都含有目的地址等控制信息。分组交换网中的分组交换机根据分组首部的控制信息,把分组转发到下一个分组交换机,用这种存储转发方式将分组转发至最终目的地。

  • 小写和大写开头的英文单词internet和Internet在意思上有何重要区别?

答:以小写字母i开始的internet是通用名词,指互联网络,它泛指由多个计算机网络互联而成的网络,在这些网络之间的通信协议(即通信规则)可以是任意的。而大写字母I开始的Internet是专用名词,他指当前全球最大的、开放的、由众多网络相互连接而成的计算机网络,它采用TCP/IP协议簇作为通信规则,前身是ARPANet(阿帕网)。

  • 计算机网络有哪些常用的性能指标?

答:计算机网络最常用的性能指标包括速率、带宽、吞吐量、时延(包括发送时延、传播时延、处理时延、排队时延)、丢包率、信道(或网络)利用率。

  • 收发两端之间的传输距离为1000km,信号在媒体上的传播速率为2×108m/s2×10^{8}m/s,试计算以下两种情况的发送时延和传播时延:
    • 数据长度为107bit10^{7}bit,数据发送速率为100kbit/s。
    • 数据长度为103bit10^{3}bit,数据发送速率为1Gbit/s。

从以上计算结果可得出什么结论?
答:
1、 发送时延=分组长度发送速率=107bit100Kbit/s=100s\ 发送时延=\frac{分组长度}{发送速率}=\frac{10^{7} bit}{100Kbit/s}=100s
 传播时延=信道长度电磁波在信道上的传播速率=1000km2×108m/s=0.005s\ 传播时延=\frac{信道长度}{电磁波在信道上的传播速率}=\frac{1000km}{2\times 10^{8}m/s}=0.005s
2、 发送时延=分组长度发送速率=103bit1Gbit/s=0.000001s\ 发送时延=\frac{分组长度}{发送速率}=\frac{10^{3} bit}{1Gbit/s}=0.000001s
 传播时延=信道长度电磁波在信道上的传播速率=1000km2×108m/s=0.005s\ 传播时延=\frac{信道长度}{电磁波在信道上的传播速率}=\frac{1000km}{2\times 10^{8}m/s}=0.005s
结论:对于高速网络链路,我们提高的仅仅是数据的发送速率而不是比特在链路中的传播速率。若数据长度大而发送速率低,则在总的时延中,发送时延往往大于传播时延。但若数据长度短而发送速率高,则传播时延就可能是总时延中的主要成分。

  • 网络体系结构为什么要采用分层次的结构?试举出一些日常生活中与分层体系架构的思想相似的例子。

答:因为可以将问题解耦,将一个复杂问题转化为一个个小问题,这就是分层的概念,每一层级所做的工作仅仅是本层级的,不用考虑其他层级,不仅更加简便也易于分工协作。在现实生活中,邮包运输就是一个很好的例子。我们作为消费者无需考虑邮包是如何运送的,只需要执行收发操作即可。对于邮递工作者来说,只需要从快递站点领出包裹进行送达即可,无需关心消费者拿到邮包做了什么,也不必要担心邮包离开站点后如何送到分拣中心,分拣中心又如何工作。这就体现了分层的架构特点。

  • 试述具有五层协议的网络体系结构的要点,包括各层的主要功能

答:五层协议网络体系包括物理层、数据链路层、网络层、运输层、应用层。
应用层负责为用户提供/接收的信息通过报文的方式提供给运输层,主要为HTTP等应用协议为主导。将数据提供给运输层则是通过TCP/UDP协议进行分组,产生报文段后通过下层进行可靠/不可靠的传输。网络层接收到上层的数据会将数据形成分组,进行传输到指定的设备,并进行合适的路由转发,这其中则是IP协议作为主导协议。而数据链路层就是将分组从链路的一端传送到另一端,传输的数据单元即为帧,而每一帧都包含了必要的控制信息。而物理层则是体系结构的最底层,负责在传输媒体上传送比特流,即01数据,单位为比特。

  • 试解释Everything Over IP和IP Over Everything的含义

答:Everything Over IP即IP协议可以为各式各样的应用提供服务,保证了体系结构中上层协议的连接。IP Over Everything即IP协议允许在各式各样的网络构成的互联网上运行。二者体现了IP在互联网中的核心作用。

  • 判断以下说法的正误
    • 提高链路速率意味着降低了信道的传播时延

答:错,提高链路速率是提高了将数据推送到链路的速率,可以在单位时间内传输的内容更多,而 传播时延=信道长度电磁波在信道上的传播速率\ 传播时延=\frac{信道长度}{电磁波在信道上的传播速率}与链路速率无关。

  • 在链路上产生的传播时延与链路的带宽无关

答:对。

  • 跨越网络提供主机到主机的数据通信属于运输层的功能

答:错,属于网络层的功能,例如IP协议。

  • 发送时延是分组的第一个比特从发送方发出到该比特到达接收方所用的时间

答:错,发送时延是将分组发送到通信线路上所需要的时间,题目指的应该是传播时延 。

  • 由于动态分配通信带宽和其他通信资源,分组交换能更好更高效地共享资源

答:对。

  • 采用分组交换在发送数据前可以不必先建立连接,发送突发数据更迅速,因此不会出现网络拥塞。

答:错,在信道利用率或网络利用率过高时会产生非常大的时延,进而产生网络拥塞。这正是分组交换的特点,对于电路交换随带宽更低,但是更保障所需的带宽固定,不易产生网络拥塞。

第三章 数据链路层

数据链路层属于计算机网络的低层,主要有以下两种类型:点对点信道(一对一)、广播信道(一对多)。

3.1 使用点对点信道的数据链路层

1. 数据链路层的所在地位

数据链路层所在地位

2. 数据链路和帧

链路:指一个结点到相邻结点的一段物理线路,是一条路径的组成部分。
数据链路:基于链路和协议、软硬件等逻辑链路。
帧:在数据链路层对等实体之间水平方向进行逻辑通信的协议数据单元PDU。

3. 三个重要问题

a. 封装成帧和透明传输

帧的组成包括:链路层首部、网络层首部、运输层首部、应用层协议数据单元、链路层尾部。在帧的首部和尾部包括一些重要控制信息,例如可以通过首部和尾部的帧定界符识别出帧的开始和结束,即帧定界。但是也不绝对,例如以太网V2的MAC帧就通过前导码和帧间间隔来确定每一帧。
透明传输:在面向字符的物理链路中,可以使用字节填充/字符填充的方法,在与和帧定界符相同的数据内容前加入转义字符,在接收方收到时,不会将内容错误识别,并将转义字符删除后再向上传输。
在面向比特流的物理链路中,可以使用比特填充实现,例如PPP使用01111110为帧定界符,当信息字段包含五个连续的1时,则立即填入一个0,收到时如发现五个1,则把后续跟着的0删除。

b. 差错检测

现实的通信链路都不会是理想的,例如数据流中的0会变成1或反之,这就是比特差错。传输错误与传输总数的比例则称为误码率。
在帧尾部有一个两字节的帧检验序列,通过发送方相同的检测算法即可发现传输中是否有错误。包括奇/偶校验(加一位校验位使整体1的数量为奇/偶数)、水平/垂直/水平垂直奇偶校验、循环冗余校验等。通常使用循环冗余检验(CRC)进行差错检测。具体方法:双方约定好生成多项式G(X),发送方基于G(X)计算冗余码一同传输,接收方通过计算G(X)判断是否产生误码。
冗余码生成方法:除法采用二进制模2法则(即按位异或)计算:待发送数据后补多项式最高次个0/生成多项式各项系数构成的比特串,余数即为CRC校验码。
冗余码校验方法:除法采用二进制模2法则(即按位异或)计算:已接收数据(包括后补多项式最高次个0)/生成多项式各项系数构成的比特串,余数为0则无误码,否则反之。
生成多项式例如:G(X)=X4+X2+X+1G(X)=X^4+X^2+X+1,多项式系数为1,1,0,1,1,则比特串即为11011。常使用的如CRC-16(x16+x15+x2+1x^{16}+x^{15}+x^{2}+1)、CRC-CCITT(x16+x12+x5+1x^{16}+x^{12}+x^{5}+1)、CRC-32(x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x5+x4+x2+1x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x^{5}+x^{4}+x^{2}+1)。
根据G(X)=X4+X2+X+1G(X)=X^4+X^2+X+1多项式举例:
冗余码计算方法
注意:奇偶校验、循环冗余校验等算法只能检测是否有错,不能定位错误,更不能纠正错误。海明码可以进行前向纠错,但是性能花销大,故不常用。

c.可靠传输

如向上层提供的是不可靠的传输服务,则收到误码的帧直接丢弃。如向上层提供的是可靠的传输服务,则申请重传。
而传输差错包括:误码(出现在数据链路层及其下层)、分组丢失、分组失序、分组重复(这三个都出现在数据链路层的上层)。不同的传输介质采用的可靠传输策略也不同,例如有线传输的传输差错概率低,通常将此任务交给上层处理(例如TCP),而无线传输的差错概率较大,通常在数据链路层就得完成可靠传输的任务。
注意:可靠传输可不局限数据链路层。且其实现复杂,性能开销较大,是否使用取决于应用需求。

  • 停止等待协议(SW协议,STOP-and-WAIT)

在发送数据分组后,接收方需回复ACK(确认)或NAK(否认)信号,当传输NAK信号时,发送方进行重传。由于每发一个分组需要停下来确认,所以被称为“停止等待协议”。
确认、否认、重传
而如果仅仅是上面的方式,传输数据DATA中可能会出现分组丢失的情况,这就需要设置超时时间RT0,这个时间略大于平均往返时间RTT,若超过RT0则重发数据。
超时重传协议
这又引入新的问题:如果ACK丢失了,发送方触发了超时重传,就会造成接收方收到两个相同的DATA,造成了分组重复的问题。所以在此基础上,向DATA中添加了1bit的01信号确认分组是否相同,若发现都是相通的01信号,则丢弃重复的分组并再发送一个ACK。
ACK丢失
新问题:如果ACK超时了,不给ACK标序号的是否会导致发送方将ACK误认为其他DATA的ACK?所以我们将ACK也和DATA一样标上01序号确保不出现此类问题。
ACK迟到
当然,在数据链路层不会出现分组迟到的情况下,可以不进行确认分组的标号。
注意:如果使用超时重传,就可以不用NAK否认信号了,因为不回应ACK信号自然会让发送方重传,但是这样延迟较高,如果使用NAK则可以减少等待时间。
信道利用率的计算:

在不考虑超时重传的情况下,信道利用率UTdTd+RTT+TA信道利用率 U \approx \frac{T_d}{T_{d}+RTT+T_{A}},而实际上ACK远小于DATA,故TAT_A可以忽略不计,此时UTdTd+RTTU \approx \frac{T_d}{T_{d}+RTT}。而根据传输介质的不同,例如有线传输RTT很小,信道利用率就很高。而卫星传输RTT就很大,此时的信道利用率就很低。
在上述SW协议中,可以看到若RTT较大,则会大幅降低信道利用率。这时候可以使用流水线传输方式,并选择下面的回退N帧协议和选择重传协议。

  • 流水线传输:即不等待ACK信号,连续传输多个数据分组。注意:不能无限制的传输数据分组,否则路由器或接收方来不及处理数据分组时会造成数据丢失。

流水线传输

  • 回退N帧协议(GBN,GO-BACK-N)

此协议在流水线传输的基础上利用发送窗口来限制发送方连续发送分组的个数,是一种连续ARQ协议。
在发送前发送方将和接收方共同协商一个发送窗口大小WTW_T,而发送窗口的编号则为1<WT<(2n1)1<W_T<(2^n-1),若等于1则是SW协议(一次一个数据帧,等待后继续发送),若大于2n12^n-1则会出现分组重复的问题。
协议原理:通过WTW^T来控制最大发送的分组数量,形成最大容积为WTW^T的队列。发送方连续发送WTW^T个分组,并以此将编号放入队列中,等到接收方检测无误返回ACK信号时,再从队列中依此取出,并再次发送后续数据分组将队列填满。在这个阶段接收方收数据帧也需要按照一定规则操作:将WTW^T的所有编号全部放入队列中,收到一个数据分组即从队列中取出一个,检查分组是否误码的同时检查编号是否为队列取出的编号相同,相同则返回对应编号的ACK信号,否则丢弃分组后返回上一次正常的ACK信号,这个过程可以省略中间的ACK信号直接发送最后一个数据分组的ACK信号(被称为累积确认)。若发送方没有接收到对应的ACK信号,或多次收到重复的ACK信号,则发送方知道传输的数据分组出现问题,则再次从队头序号开始重传数据。
这个操作很像滑动的分组,所以也称作滑动窗口协议。此协议再误码率较高的情况下,效率可能并不比SW协议高。

  • 选择重传协议(SR,Selective - Repeat)

对于上面的GBN协议,每次的读取窗口WRW_R都为1,当出现了误码的数据分组,后续的分组即使传输正确也将全部丢弃,所以想到了一个新的SR协议,将WRW_R设置为1<WRWT1< W_R\leq W_T,这时候就要保证WT+WR2nW_T+W_R\leq 2^n,否则就和GBN协议设置过大值一样,避免接收方分不清新旧分组。在这些基础上,WRW_R就被限定在了1<WR2n11< W_R\leq 2^{n-1}
因为我们需要实现发送方重传错误的数据分组,这就不能采用累积确认,需要对每一个正确分组逐一确认。
协议原理:与GBN协议类似,我们也是通过流水线传输的方式传输数据分组。发送方通过WTW^T来控制最大发送的分组数量,形成最大容积为WTW^T的队列。发送方连续发送WTW^T个分组,并以此将编号放入队列中,等到接收方检测无误返回ACK信号时,发送方将队列中的序号进行标记,若队列被依此确认则出队列,发送后续的数据分组并加入队列;如果数据分组ACK确认超时则重发对应的数据分组,再次进行上述操作。接收方也与之类似,在最大容量WTW^T的队列中,无误的分组序号则将序号出队列,将新的序号入队列等待接收。否则就将后续无误的序号标记,等待有误的数据分组重传。

3.2 点对点(PPP)协议

点对点协议是目前使用最广泛的数据链路层协议,由IETF制定。目前有两种应用:一是Internet用户通过以太网PPP的方式,由ISP提供接入服务,即PPPoE(PPP over Ethernet)协议。二是在广域网路由器之间的专用线路。
PPP共有三部分组成,一是将IP数据报封装到串行链路的方法,二是用来建立、配置和测试数据链路链接的链路控制协议(LCP),三是网络控制协议(NCP)。
在PPP的帧中,具有以下格式:

  • 首部标志字段为PPP帧的定界符,取值为0x7E
  • 随后是固定为0xFF的无作用地址字段、0x03的无作用控制字段。
  • 第四个字段是协议字段,指明了后面的信息字段承载的是哪个协议的分组。0x0021为IP数据报,0xC021为LCP分组,0x8021为NCP分组。
  • 第五个字段是上面提到的信息字段,承载了传输的信息部分,长度可变但不超过1500Byte。
    • 在面向字符的传输链路中,此字段需要消除定界符的歧义起到透明传输:
      • 当其中出现了0x7E字符时,则减去0x20并在前面插入转义符0x7D,即0x7E➡️0x7D5E。
      • 若数据载荷中有0x7D字符与转义符产生歧义,则按照同样操作键区0x20并前插0x7D,即0x7D➡️0x7D5D。
      • 若出现了ascii的控制字符(数值小于0x20的字符)则加上0x20并前插0x7D。
    • 在面向比特流的传输链路中,帧定界符为01111110,在信息字段将按照前面提到的数据链路层封装成帧的零比特填充法方式进行透明传输,即出现5个1的后面补0。
  • 在接收方收到这些数据时,按照相反的方式进行还原即可。
  • 第六个字段是CRC帧检验序列和0x7E的定界符。CRC帧检验计算方式上面有提到,不再重复记录。

在使用PPP的数据链路层,向上提供的是不可靠数据传输服务。
PPP的工作状态如下图: PPP的起始和中止状态都是“静止”状态,在建立状态的LCP配置协商过程中,会协商配置选项(即发送配置请求帧),其中包括了链路上的最大帧长、所使用的鉴别协议(如有)、是否使用PPP帧中的地址和控制字段(因为这两个没有任何意义可省略),而链路另一端会存在以下几种相应:1、ACK确认帧:所有选项都可接受。2、NAK否认帧:理解但不接受。3、Reject帧:部分不能理解或不能接受,需要协商。

3.3 使用广播信道的数据链路层

使用广播信道的局域网被称为共享式局域网,现在多为点对点链路和交换机组成的交换式局域网。

3.3.1 媒体接入控制

媒体接入控制或多址接入主要有以下两个方法:静态划分信道:例如频分多址、码分多址、时分多址,将共享信道划分为N个独立的子信道,此方法不灵活且信道利用率低,通常只在无线网络物理层使用。另一个方法是动态接入控制,分为两大类:随机接入和受控接入。随机接入特点是所有站点通过竞争随机在信道发送数据,共享式以太网就是这种方式。受控接入是结点不能随机地发送信息而必须服从一定的控制,例如多点轮询协议和令牌传递协议。多点轮询方式会存在单点故障的问题,而令牌传递方式通过组建环形网轮流传递令牌,接收到令牌的站点才有权发送数据。

3.3.2 MAC地址

在PPP中我们不需要使用地址,因为信道上只有两个站点,但是多个站点就需要唯一的标识,即MAC地址,也被称为硬件或物理地址(但是属于数据链路层的范畴)。此地址固化在网络适配器的ROM中,通过一定的规则格式制定,在帧的首部需要携带发送主机和接收主机的MAC地址。标准广播地址为FF-FF-FF-FF-FF-FF。
MAC地址格式:前三字节为组织(厂商)唯一标识符号,后三字节为厂商分配的网络接口标识符。
在MAC地址第一字节中有以下规则(b0位为最低位):

  • b0位为I/G位,0为单播地址,1为多播地址。
  • b1为G/L位,0为全球管理地址,1为本地管理地址。

⚠️注意:MAC地址属于接口的全球唯一标识,不是网络设备的唯一标识。
在网卡收到无误码的帧将检查对应MAC地址,如果为广播地址/自己的MAC地址/支持的多播地址则接受该帧,否则直接丢弃。网卡可被设置成混杂模式,无论什么帧都会收下,多用于网管优化网络及窃听式网络攻击。

3.3.3 以太网的帧格式

3.3.3.1 数据链路层的帧格式

前两个字段为6字节的目的地址和6字节的接收地址
第三字段为2字节的使用类型字段(标识上层使用的协议类型,0x0800为TCP/IP网际层IP协议封装的PDU,0x8137为Novell网络层IPX协议封装的PDU)
第四字段为数据载荷(46到1500字节,原因参见 3.4.1.2最小帧长与最大帧长)
第五字段为4字节的帧校验序列。
其中规定:帧长不是整数字节、FCS帧校验序列有误、收到的数据长度不是46到1500Byte均是无效MAC帧。

3.3.3.2 物理层层的帧格式

在上次交付的帧的基础上,添加8字节的前导码,其中包括7字节的前同步码(目的是为了和接收方时钟同步)和1字节的帧定界符

3.4 共享式以太网

以太网采取无连接的工作方式,不必先建立连接就可以直接发送数据。适配器发送数据帧不进行编号,也不要求对方发回确认帧,故以太网提供的是不可靠的交付。
以太网采用的是曼彻斯特编码。

3.4.1 CSMA/CD协议

解决了共享总线的站点竞争问题,协议要点:载波监听(先听后发)、碰撞检测(边发边听、冲突停止、延迟重发)
载波监听:在发送数据帧前先监听96bit时间,若总线空闲则开始发送数据,否则等待96比特时间空闲后再发送。
碰撞检测:在发送数据后持续检测总线上是否产生碰撞,若检测到碰撞后,则立刻停止发送,退避一段随机时间后再次进行载波监听重发该帧。在以太网标准中还有强化碰撞的措施:若发送帧的站点检测到碰撞,还要额外发送32bit或48bit的人为干扰信号让所有站点检测到发生碰撞。
根据CSMA/CD协议特点,决定了站点不能边发边收(因为发的时候还得检测碰撞),所以只能进行半双工通信。

3.4.1.1 争用期

在共享式以太网的任意站点在发送帧的过程中都有可能发生碰撞,这个过程的时间就是最长的端到端传播时延τ的双倍时间减去两者发送时间差δ。当δ趋近于0时为2τ,即是我们的最长碰撞发现时间,也则是我们称的争用期或碰撞窗口。若经过争用期仍没检测到碰撞,则这次发送肯定不会产生碰撞。
争用期是由总线的长度直接决定,并且网络中的站点越多,产生碰撞的可能性越大。根据10Mb/s共享以太网规定,争用期固定为512比特发送时间,即51.2μs。根据此规定计算的总线长度为信号传播速率×25.6μs信号传播速率\times 25.6μs,但考虑网络转发器和干扰信号带来的时延,规定为不超过2500m。

3.4.1.2 最小帧长与最大帧长

如果帧过短,在站点发送数据帧后即结束碰撞检测,此时若数据还未到达远处的站点,并且远处有站点也同时发送数据帧,此时发生碰撞后,发送站点因为结束了碰撞检测并不能检测到碰撞发生,继而不会重发数据帧,所以需要设置一个最小帧长。同时,帧长也不能设置过大,避免长时间占用网络资源。
最小帧长的设置:帧的发送时延不能少于共享主线以太网端到端的往返时间,即2τ,对于一个10Mb/s的共享式以太网,其争用期规定为51.2μs通过计算得出最小帧长512b即64Byte,也可以通过最小帧长=发送速率×2τ最小帧长=发送速率\times 2τ计算。在前64Byte发送过程中未发生碰撞即后续不会出现碰撞,同理得知如果接收方收到的帧长小于64Byte则一定遇到了碰撞。(无长ARP协议除外,其帧就是小于64Byte)
最大帧长的设置:以太网V2规定,帧长最大为1518Byte。
根据上述计算,MAC帧去掉目的地址6Byte、原地址6Byte、类型2Byte、校验码4Byte,剩下的1500Byte即是数据载荷最大长度,46Byte即是数据载荷最小长度。

3.4.1.3 退避算法

退避时间=基本退避时间(即争用期2τ)×随机数r
随机数r是从整数集合0到2k12^{k-1}中随机抽取的一个数,这个k在重传次数小于等于10时取重传次数,超过10时则取10。
若重传次数大于16,则直接丢弃此帧不再重传,并向上层报告。

3.4.2 信道利用率

极限信道利用率Smax=T0T0+t=11+τT0极限信道利用率S_{max}=\frac {T_0}{T_0+t}=\frac {1}{1+\frac{τ}{T_0}},可以看出T0T_0越大,利用率越大,τ越大,利用率越低。所以我们应尽可能降低总线长度,并尽可能提高帧长度。

3.4.3 使用集线器的共享式以太网

使用星型物理拓扑方式,但实际上工作在物理层,且仍是总线结构,并使用RJ45接口和CSMA/CD协议。后续制定了10BASE-T星型以太网标准,并且该标准中每个站点到集线器的距离不能超过100m。10BASE-T的含义是:10代表速率10Mb/s,BASE代表采用基带信号进行传输,T代表使用双绞线作为传输媒体(光纤为F)。

3.5 在不同层级扩展以太网

3.5.1 在物理层扩展以太网

早期使用粗/细同轴电缆时,通常使用物理层的转发器扩展以太网的地理覆盖范围。规定中指出,任意两个站点之间最多可以用三个电缆网段(即两个转发器),后来使用双绞线就逐渐淘汰了。随后多用光纤Modem扩展地理范围。
在扩展站点上,因为集线器相比同轴电缆可以更少出现网络故障并且扩展更为容易,集线器成为了主流。但是单集线器接口有限,就可以使用集线器将多个集线器进行连接,形成更大的以太网。但是就出现了几个问题:1、形成了一个更大的冲突域(冲突域:也称碰撞域,同时只能有一个站点发送信号的范围就是一个冲突域)2、不同的以太网技术只能使用最低的速率传输。

3.5.2 在数据链路层扩展以太网

为了避免出现更大的碰撞域,可以使用网桥(bridge)扩展以太网。

3.5.2.1 网桥的工作流程

网桥工作在数据链路层,使用存储转发方式,根据MAC帧目的地址对收到的帧进行转发和过滤。网桥收到一个帧后会检查目的MAC地址,再确定将该帧转发到哪一个端口,或直接丢弃。
网桥的工作原理
其中,转发表(也称:MAC地址表)是网桥转发的依据,记录了每个接口所能到达各站点的MAC地址。网桥收到帧后会查表,如是广播帧或MAC地址在表中且目的地址和发送地址不为同一端口,决定广播或转发帧,否则即丢弃。这么做就能隔离开冲突域,但也形成了更大的广播域,在用户过多或通信过大时容易形成广播风暴。
⚠️注意:网桥在转发时,不改变帧的源地址。

3.5.2.2 转发表的建立流程

透明网桥(即插即用的网桥,站点不知道网桥的存在)自学习算法基于各站点相互通信建立起来的转发表。
当站点发送单播帧时,网桥会记录下发送帧的源地址和端口,若网桥找不到目的地址对应的端口,则进行泛洪(即盲目转发,除源端口外的端口都转发),否则就直接进行端口转发。当源地址端口和已知的目的地址端口相同,则进行丢弃。
⚠️注意:网桥收到误码的帧会直接丢弃,广播帧直接泛洪,每个记录都有其有效时间TTL,在MAC地址更换端口号时网桥也会自学习更新转发表。

3.5.2.3 生成树协议(STP,Spanning Tree Protocol)

为了提高可靠性,会用到冗余线路,使网络出现环路。但是这也导致了帧重复广播,造成帧在网络中重复兜圈子。也造成了重复帧和MAC表不稳定的问题。此时使用最小生成树协议找出原网络拓扑的一个连通子集,关闭不需要的网络接口破除环路,当网络出现故障时将会重新生成可用路径。
下面是实现算法步骤:

  1. 选择根网桥(Root Bridge):(小的优先)依据优先级(默认32768)选择,若优先级相同则根据MAC地址大小
  2. 选择根端口(Root Port):(小的优先)依据路径成本,若相同比较直连发送方网桥ID,再相同就比较发送方端口ID大小(端口ID:优先级+端口号)
  3. 选择指派端口(Designated Port):(小的优先)依据根路径成本,若相同比较所在交换机的网桥ID值,再相同就比较端口ID值

此算法在实现中存在了1个根网桥,在非根网桥都有1个根端口,在每一个网段都有一个Designated Port,另一个连接的端口将被阻塞(Blocked)。
注意:

  • 选择根端口比较接收的BPDU;选择指派端口比较发送的BPDU。
  • 每个网络只有一个根桥,根桥上的所有端口都是指派端口。非根桥只能有一个根端口。
  • 每个网段只能有一个指派端口,根端口和指派端口一般处于转发状态,非指派端口一般是阻塞状态。
3.5.2.4 桥协议数据单元(Bridge Protocol Data Unit,BPDU)

交换机在选择相关RootBridge及Root/Designated Port时发送的桥协议数据单元,每隔2s使用组播向所有交换机端口发送。
通常情况交换机之会从根网桥接收configuration BPDU包,不会主动发送。在网络发生变化时任一网桥都可以往根网桥发送TCN BPDU(拓扑变更通告BPDU),以通告拓扑变化。
STP利用BPDU选择根网桥:

  • 发送:第一次启动将自己认定为根网桥发送BPDU
  • 接收:将自己和收到的BPDU按照规则进行比较,如果按照规则自己是根网桥,则将收到的BPDU中根网桥的信息改为自己的信息进行转发,直到全网公认。
  • 变动:如有新交换机加入,则按照上述规则继续比较选择出根网桥。

STP利用BPDU计算根路径成本:

  1. 根网桥发送路径成本为0的BPDU
  2. 下一级交换机收到后将BPDU的路径成本按照实际进行相加
  3. 邻接交换机继续相加,以此类推
3.5.2.5 交换机端口的5种STP状态

交换机端口的5种STP状态:

  • 转发(Forwarding):发送和接收用户数据,收集MAC地址构建网桥表,发送BPDU
  • 学习(Learning):转发BPDU,收集MAC地址构建网桥表
  • 侦听(Listening):发送/接收BPDU构建活动拓扑
  • 阻塞(Blocking):只接收BPDU
  • 禁用(Disabled):不属于正常STP状态的强制关闭
3.5.2.6 交换式以太网

交换机实际上就是一个多口的网桥,也常称为“二层交换机”,其中的二层即工作在数据链路层的交换机。
使用交换机而不适用集线器(Hub)的以太网就是交换式以太网。
在每个连接到交换机的计算机都是用全双工方式,通过交换机内部进行接口连通,每一对相互通信的计算机都能有类似独占传输媒体的传输数据方式,所以不需要使用CSMA/CD协议。
如果连接的是集线器(Hub),则只能工作在CSMA/CD的半双工方式。网卡可以自动上识别两种情况并自动切换工作方式。
交换机通常采用存储转发方式,部分交换机为减小时延,采用直通转发方式。
直通转发交换机接收到帧后就按照目的MAC地址转发,不进行缓存,也不进行校验差错。

3.6 虚拟局域网(VLAN)

根据上述的交换机网络扩展方式,虽然隔离了冲突域,但仍造成了更大的广播域。
这时候可以通过虚拟局域网分割广播域,每一个VLAN的路由表不相通。每一个VLAN就是一个广播域,也是一个逻辑子网。
VLAN可以通过提前基于MAC地址、子网、用户三种类型划定动态VLAN,也可通过接口设置静态VLAN。
802.1Q在帧的目的地址和源地址字段后添加了一个4字节的VLAN标签,其中包括16bit的TPID(标签协议标识符)(固定为0x8100代表802.1Q帧)、3bit的PRI(优先级)(在网络阻塞时优先级高的优先转发)、1bit的CFI(规范格式指示符)(0为规范封装1为非规范格式封装,以太网取值0)、12bit的VID(虚拟局域网标识符)(标识了VLAN编号,最小0和最大4095保留不使用)
在交换机接收到普通以太网MAC帧时会进行插入标签,转发帧时如果接口为Access接口再进行去标签,如果是Trunk接口则保留标签。
交换机的默认接口类型就为Access,默认VLAN ID为1
Trunk接口就是为了扩展VLAN而实现的技术,一般用于交换机间的互联。通过VLAN标签可以在多台交换机实现同样的VLAN ID设置。Trunk接口属于多个VLAN。

3.7 以太网发展

3.7.1 100BASE-T

支持全/半双工。最大电缆长度100m。
半双工CSMA/CD协议:争用期5.12μs、帧间最小间隔0.96μs。
交换式以太网不使用CSMA/CD协议、全双工。

3.7.2 吉比特以太网

支持全/半双工。最大电缆长度100m、最小帧长64字节、速率1Gb/s、向下兼容。
半双工CSMA/CD协议采用的兼容方式:

  • 载波延伸:争用期增大为512字节发送时间来保证最小帧长64字节,在不足512字节时尾部填入特殊字符。
  • 分组突发:当遇到很多短帧,只填充第一个短帧,后面的帧在保证最小帧间隔的基础上连续发送,直到累计发送1500字节或稍多为止。

3.7.3 10吉比特以太网

多用于城域网、广域网。只支持全双工,向下兼容。

3.7.4 40/100吉比特以太网

只支持全双工,向下兼容。