1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-09 05:44:32 +08:00
Files
CS408/Computer-Network/network-layer.md
2021-04-12 23:56:53 +08:00

984 KiB
Raw Blame History

网络层

基本概念

主要任务是将分组从源端发送到目的端,未分组交换网上的不同主机提供通信服务。

传输单位

  1. 应用层的传输单位是报文。
  2. 传输层的传输单位是报文或报文段。
  3. 网络层的传输单位是IP数据报或分组。
  4. 数据链路层的传输单位是帧。
  5. 物理层的传输单位是比特流。

网络层功能

  1. 路由选择域分组转发(最佳路径)。
  2. 异构网络互联。
  3. 拥塞控制:若网络所有结点都来不及接收分组,而要大量丢弃分组的话会使网络处于拥塞状态,所以就需要控制这种拥塞。(开环控制:在拥塞之前就提前设计解决;闭环控制:在拥塞时自动调整解决问题)

数据交换

数据报和分组的关系:分组是一段比较长的数据,将它进行切割成一段段之后就得到数据报。

电路交换

  1. 建立连接(电路建立)。
  2. 通信。
  3. 释放连接(拆除电路)。

链路支持多路复用可参考数据链路层的TDM等

优点:

  1. 通信时延小。
  2. 有序传输。
  3. 无冲突争用。
  4. 实时性强。

缺点:

  1. 建立连接时间长。
  2. 线路独占,使用效率低。
  3. 灵活性较差。
  4. 无差错控制能力。

报文交换

报文:源应用发送的信息整体。

  1. 源先根据报文加上IP地址物理地址等通过物理层发送。
  2. 交换机收到报文之后,先进行存储,等待链路空闲之后进行转发,但是转发的路径不是固定的,是比较随机的。
  3. 最后通过许多交换机最终到达目的地。

优点:

  1. 无需建立连接。
  2. 存储转发,动态分配线路。
  3. 线路可靠性高。
  4. 线路利用率较高。
  5. 多目标服务。

缺点:

  1. 有存储转发时延。
  2. 报文大小不定,需要网络结点有较大的缓存空间。

分组交换

将大的数据块分割为小的数据块。分组交换和报文交换基本相同,就是将报文切割之后再进行发送。

优点:

  1. 无需建立连接。
  2. 存储转发,动态分配线路。
  3. 线路可靠性高。
  4. 线路利用率较高。
  5. 分组大小一定,存储管理更容易。

缺点:

  1. 有存储转发时延。
  2. 需要传输额外的信息量(编号、目的地址等)。
  3. 乱序到达目的主机时,需要对分组进行排序。

例题 已知要传输一份信息大小为10000bit需要经过两个交换设备。所有链路的传输速率为1000bps。假如分组交换中每一个分组为10bit其他条件忽略如接收时延排队时延、报文头部长度等求报文交换与分组交换两种方式所需要的传输时间。

报文交换:

10000÷1000=10(s)从而报文在每一个链路上需要10s的传输时延。因为要经过两个交换设备所以有三条链路从而一共需要10×3=30秒。

分组交换:

10÷1000=0.01(s)而一共有10000÷10=1000个分组所以一共需要0.01×1000=10秒发送所有分组。

此时10秒的时候所有的分组已经发送出去了按照报文交换的视角整个数据都到达了第一个交换设备而按分组交换视角是最后一个分组到达了第一个交换设备倒数第二个分组到达第二个交换设备倒数第三个分组以及以前的分组都已经到达了所以我们还需要计算还需要多少秒完全传输完。倒数第一个分组是最后一个所以只用考虑它。最后一个分组还需要传输两个链路所以还需要0.01×2=0.02秒所以总共的分组交换需要10+0.02=10.02秒。

计算时需要注意:

  1. 单位换算。
  2. 是否考虑传播时延。
  3. 选择最少跳数。
  4. 起始时间。
  5. 是否要计算头部大小。
  6. 报文交换时延更长,分组交换时延可能不是整数。

数据交换

  1. 报文交换和分组交换都采用存储转发。
  2. 传输数据量大且传输时间远大于呼叫时间,就选择电路交换,其传输时延最小。
  3. 报文交换分组交换在信道利用率上优于电路交换。

分组交换传输方式

分组交换分为数据报方式和虚电路方式两种。

数据报方式

  • 提供无连接服务,不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
  • 每个分组携带源和目的地址。
  • 路由器根据分组的目的地址转发组:基于路由协议/算法构建转发表(目的网络地址与链路接口的散列对);检索转发表;每个分组独立选路。

虚电路方式

虚电路将数据报方式与电路交换方式结合。

虚电路是一条源主机到目的主机类似电路的逻辑连接,路径上所有结点都要维持该虚电路的建立,都维持一张虚电路表,每一项都记录一个打开的虚电路的信息。

虚电路方式提供连接服务,首先为分组的传输确定传输路径,然后沿该路径/连接传输系列分组,分组的传输路径相同,结束后拆除连接。

  1. 建立虚电路连接:每个分组携带虚电路号,而非目的地址,源主机发送呼叫请求分组并收到呼叫应答分组后才算建立连接。
  2. 数据传输:全双工通信。
  3. 释放虚电路连接:源主机发送释放请求分组以拆除虚电路。
  数据报服务 虚电路服务
建立连接 不用 必须
目的地址 每个分组都要有完成的目的地址 仅在建立连接时使用,之后每个分组使用较短的虚电路号
路由选择 每个分组单独进行路由选择与转发 属于同一条虚电路的分组按照同一个路由转发
分组顺序 不保证有序到达 保证有序到达
可靠性 不保证,可靠性依靠用户主机保证 保证
网络故障适应性
差错控制和流量控制 用户主机完成 可由网络完成也可以由用户主机完成

IP协议

网际协议是TCP/IP协议栈中两个最主要的协议。与之配套的还有地址解析协议ARP网际控制报文协议ICMP、网际组管理协议IGMP还有一个逆地址解析协议RARP已不被使用。

TCP/IP协议栈

IP协议使用ARP协议而ICMP与IGMP使用IP协议。

IP数据报

IP数据报格式

IP数据报格式

当单个IP数据报太长就会被划分不同的数据部分加上IP首部就是分组。

固定部分20B、160bit按照五行来展示而不是真的这样排列一行32比特。

IP数据报具体格式

名称 注释 大小
版本 Version ipv4或者ipv6 4位
首部长度 IHL 单位为4字节同时因为IP数据报固定长度最小值为20字节所以此处最小值为5即二进制的0101 4位
区分服务 DSCP + ECN 希望获得哪种服务,用的比较少 8位
总长度 Total Length 首部+数据的长度单位为1字节最大为$2^{16}-1=65535$B但是实际上永远不会达到该长度因为有MTU的限制 16位
标识 Identification 用来表示是哪一个数据报的分片,同一个数据报的分片标识相同 8位
标志 Flags 用来表示是否分片和分片是否结束中间位DFDon't Fragment为1表示禁止分片如果是0代表允许分片最低位MFMore Fragment为1表示后面还有分片如果为0表示最后一片分片 3位但实际有用的只有后两位
片偏移 Fragment Offset 用来标记分片之后该分片在原来的数据报的位置以8字节为单位 13位
生存时间 Time To Live 即TTL每经过一个路由器TTL-1,0时自动放弃根据系统不同默认的TTL不同为了防止无法传输的数据报在链路中无限传输 8位
协议 Protocol 用来标记数据部分协议名的字段值如ICMP1IGMP2TCP6EGP8IGP9UPD17IPv641ESP50OSPF89 8位
首部检验和 Header Checksum 检验首部的字段是否出错,出错就丢弃此数据报 16位
源地址 Source IP Address 发送方ip地址 32位
目的地址 Destination IP Address 接收方ip地址 32位
可选字段 Options 用来排错等安全检测 未知可在0-40位之间
填充 将数据报对齐成4字节的整数倍数值全部为0 未知,根据可选字段来定

IP数据报分片

  • 最大传送单元MTU数据链路层帧可封装的数据的上限以太网的MTU是1500字节。
  • 当IP分组超过MTU时为了传输就必须要分片而如果IP分组不允许分片则无法传输会返回上层一个差错报告。
  • 除了最后一个分片,每个分片的长度必然为八字节的整数倍。

例题 假如现在一个数据报首部为20字节数据部分3800字节需要分片为长度不超过1420字节的数据报片求每一个报片的片偏移量。

已知MTU=1420字节此题目中首部为20字节所以每一个分片的数据部分最大为1400字节。

数据部分为3800字节所以可以分为三片数据大小分别为1400、1400、1000字节。

所以第一个报片的数据部分是从0到1399字节的所以该片的片偏移为0因为分片后数据开头的地方不变。

第二个报片的数据部分是从1400到2799字节且偏移量以8字节为单位所以该片的偏移量为1400÷8=175。

第二个报片的数据部分是从2800到3799字节所以该片的偏移量为2800÷8=350。

IP地址

默认指IPv4地址全世界唯一的32位/4字节标识符标识路由器主机的接口。IP地址={网络号,主机号}。

IP地址一共分为五类。

IP地址类别

其中一些IP地址被予以保留做特殊用途

特殊IP地址

还有私有IP地址

私有IP地址

私有IP地址也叫做可重用地址不同于一般的全球IP地址这些地址可以在机构内部自行分配使用这张网络就是专用互联网或是本地互联网当然也无法直接用于与因特网的通信。

由于网络号不能全0或全1所以基本上可用的都要减二。

网络类别 最大可指派的网络数 第一个可指派的网络号 最后一个可指派的网络号 每个网络中的最大主机数
A类 126 1 126 16777214
B类 16383 128.1 191.255 65534
C类 2097151 192.0.1 223.255.255 254

为什么A类最大是126.x.x.x

因为网络号最开始第一位是0一共八位所以二进制表示位0xxxxxxx最大就是2^7-1=127但是因为127.x.x.x是特殊ip地址所以将其去掉。

为什么B类最大是191.255.x.x

因为网络号最开始第一位是10一共八位所以二进制表示位10xxxxxx最大就是10111111=191最小就是10000000=128无特殊IP地址。

为什么C类最大是223.255.x.x

因为网络号最开始第一位是110一共八位所以二进制表示位110xxxxx最大就是11011111=223最小就是10000000=192无特殊IP地址。

专用网络通信

VPN

当目的地址是私有专用IP地址时路由器一律不转发而如果在内网的私有IP地址要转发或接收本地网络其他主机的数据怎么办呢

可以利用公用的互联网作为本地各专用网之间的通信载体这种网络就是虚拟专用网VPN。这种网络不同于互联网是因为它只用于本地网络的通信但是又依靠互联网传输所以就需要对数据进行加密。

当VPN需要外部机构加入就是外联网VPN如果成员分布分散通过某种软件建立VPN通道这种VPN就是远程接入VPN。

NAT

如果专用网的内部某些主机已经分配到了本地专用IP地址又想无加密的跟互联网上的主机通信就需要网络地址转换NAT。

只用在专用网与因特网的路由器上按照NAT软件安装了NAT软件的路由器就是NAT路由器其至少有一个有效的外部全球IP地址。

NAT路由器就是该本地专用网的代表负责与外部因特网联通分发外部的数据信息。

NAT路由器维护NAT转换表包含WAN端与LAN端的散列值对。每个值都包含网络号与端口号。NAT路由器在发送和接收时都需要根据转换表更改IP地址。

子网与超网

分级IP地址的缺点

  1. IP地址空间利用率较低。
  2. 两级IP地址不够灵活。

子网划分

由两级IP地址网络号+主机号变为三级IP地址网络号+子网号+主机号),将原来的主机号分割出来一部分作为子网号,子网的划分由单位内部完成,但是对外仍表现一个网络,外部无法看到本单位内子网的划分。

子网号可以全0或全1但是主机号仍然不能全0全1。

子网的标识依靠子网掩码其中网络号和子网号的部分全部位数为1而主机号部分全部为0。

将子网掩码与IP地址逐位进行与操作就可以得到子网网络地址。

  • A类地址的默认子网掩码是255.0.0.0。
  • B类地址的默认子网掩码是255.255.0.0。
  • C类地址的默认子网掩码是255.255.255.0。
二进制 十进制
1000 0000 128
1100 0000 192
1110 0000 224
1111 0000 240
1111 1000 248
1111 1100 252
1111 1110 254
1111 1111 255

注意:可用子网数量不用减二。

例题 已知IP地址位141.14.72.24子网掩码为255.255.192.0,求网络地址。

已知子网掩码前两个八位都是255表示掩码前16位全部是1相与时不变所以网络前16位依然为141.14。

而子网掩码最后一个八位全部是0所以与24相与全部是0从而网络地址为141.14.x.0。

主要看子网掩码第三个八位既有0又有1的部分。72用二进制表示为0100 1000而192用二进制表示为1100 0000子网号为2位主机号为14位从而进行与操作得到网络号为64。

所以最后网络号为141.14.64.0。

子网分组转发

路由表包括:

  1. 目的网络地址。
  2. 目的网络子网掩码。
  3. 下一跳地址。

路由器转发分组的算法:

  1. 提取目的IP地址。
  2. 查看是否可直接交付。
  3. 查看是否有特定主机路由,就直接按此路由传输。
  4. 检测路由表中有无合适路径。
  5. 默认路由0.0.0.0,发送给其他路由器查看是否有该地址。
  6. 超过TTL丢弃并报告转发分组出错。

IP广播

如之前的保留地址所展示,如果需要进行广播,则包含两种广播方式。

受限有限广播地址是32位全1的IP地址(255.255.255.255)。受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址此时主机可能还不知道它所在网络的网络掩码甚至连它的IP地址也不知道。在任何情况下路由器都不转发目的地址为受限的广播地址的数据报这样的数据报仅出现在本地网络中。

直接广播地址包含一个有效的网络号和一个全1的主机号如果我们要求一个IP地址的直接广播地址那么需要根据IP地址与子网掩码将网络号部分与出来然后将所有的主机号位全部置1从而得到的地址就是该网络地址的直接广播地址。

CIDR

一般子网划分在同一个单位下的子网掩码都是相同长度的而无分类编址CIDR就是变长的子网掩码。

CIDR构建的超网可以在单位内部根据不同部门的主机个数分配不同数量的子网IP地址。

通过CIDR就将子网划分的三级IP地址又回归为两级IP地址网络前缀+主机号)。

CIDR记法IP地址后加上/,然后写上网络前缀的位数。

也可用使用:二进制网络前缀*。

CIDR把网络前缀都相同的连续的IP地址组成一个CIDR地址块。

如根据128.14.35.7/20可以得到其二进制是10000000 00001110 0010|0011 00000111所以其最小地址就是将竖线后面的位全部变为0最大地址就是将竖线后的位全部变为1即为128.14.32.0与128.14.47.255,可用地址就是$2^{12}-2$个地址块就是128.14.32.0/20。

构成超网

将多个子网构成一个较大的子网就是构成超网,也就是路由聚合。

方法就是将网络前缀缩短。

最长前缀匹配使用CIDR时查找路由表时可能得到多格匹配结果应该选择具有最长网络前缀的路由前缀越长地址块越小路由也越具体。

例题 路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应该被转发到哪一一个下一跳路由器()。

A. R1 B. R2 C. R3 D. R4

目的网络 下一跳
132.0.0.0/8 R1
132.0.0.0/11 R2
132.19.232.0/22 R3
0.0.0.0/0 R4

其中D表示默认路由代表本路由表中找不到对应的路由只能交给其他路由器查找。如果ABC都不对D才能作为选项。

如果是R1网络前缀是8的话目的地址的网络号就是132.0.0.0,所以与路由表中目的网络网络号一致,可用作为下一跳的选项。

如果是R2网络前缀是11的话目的地址的网络号就是132.0.0.0,所以也可用作为下一条的选项。

如果是R3网络前缀是22的话目的地址的网络号是132.19.236.0,与路由表中目的网络网络号不一致,所以不能作为选项。

所以AB都是可选的而根据最长前缀匹配需要选择网络前缀最长的、地址最具体的所以选择B。

例题 某网络的IP地址空间为192.168.5.0/24采用定长子网划分子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。

A. 32, 8 B. 32, 6 C. 8, 32 D.8, 30

已知IP为192.168.5.0/24前24位都是网络前缀又采用定长子网划分所以要对后面八位进行子网划分。

子网掩码为255.255.255.248,所以前五位为子网号,后三位为主机号。所以子网号就是$2^5=32$。主机号为$2^3=8$但是全0全1不可用所以就是6。所以最后选B。

IPv6

无论是NAT技术还是CIDR技术都无法完全解决IPv4地址耗尽的问题

ARP协议

在实际网络的链路上传输数据帧时都必须使用MAC地址所以ARP协议就是完成主机或路由器IP地址到MAC地址的映射从而决定下一跳的走向。

数据帧的IP地址不变但是源与目的MAC地址会在不同的路由器中发生变化。

ARP协议使用流程

  1. 检查在主机或路由器上的ARP高速缓存如果有对应项就写入MAC帧。
  2. 没有对应项就用FF-FF-FF-FF-FF-FF作为目的MAC地址并广播ARP请求分组同一个局域网内的所有主机都能收到该请求。
  3. 目的主机收到请求后会向源主机单播一个ARP响应分组源主机收到后将该映射写入ARP缓存中。10-20min更新
  4. 如果源主机将源MAC地址与目的MAC地址与操作发现目的主机不在同一个局域网就查询本局域网的默认网关地址并填入目的MAC地址传送到其他局域网。

ARP协议的典型情况

  1. 主机A发送给本网络的主机B用ARP找到主机B的硬件地址。
  2. 主机A发送给另一网络的主机B用ARP找到本网络上一个路由器网关的硬件地址。
  3. 路由器发送给本网络的主机A用ARP找到主机A的硬件地址。
  4. 路由器发送给另一网络的主机B用ARP找到本网络上一个路由器网关的硬件地址。

例题 主机发送IP数据报给主机B经过了5个路由器此过程中一共使用了多少次ARP协议

因为五个路由器所以有六段链路所以需要选择路由六次所以使用了六次ARP协议。

ICMP协议

网际控制报文协议支持差错报告与网络探寻。主要通过发送特定ICMP报文来实现。

ICMP协议是网络层的协议ICMP报文是作为IP报文的一部分而传输的。

ICMP帧格式

ICMP报文类型

报文类型的值占四个字节。

ICMP差错报文

类型 说明
终点不可达 3 当路由器或主机不能交付数据报时就向源点发送终点不可达报文
时间超过 11 当路由器收到生存时间TTL=0的数据报时除丢弃该数据报外还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时就把已收到的数据报片都丢弃并向源点发送时间超过报文
参数问题 12 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
改变路由(重定向) 5 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

ICMP差错报文数据字段

不应发送ICMP差错报文的情况

  1. 对ICMP差错报告报文即使差错报文本身出错也不会管
  2. 对第一个分片的数据报片之后的所有后续数据报片。
  3. 对具有组播地址的数据报。
  4. 对具有特殊地址如127.0.0.1等)的数据报。

ICMP询问报文

类型 说明
回送请求和回答报 8或0 主机或路由器向特定目的主机发出的询问收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态
时间戳请求和回答报 13或14 请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。

ICMP应用

  1. ping测试两个主机之间的连通性使用了ICMP回送请求和回答报文。
  2. traceroute跟踪一个分组从源点到终点使用了ICMP时间超过差错报告报文。

路由算法与协议

路由算法就是让路由知道收到报文之后下一步怎么走。

路由算法与协议概述

  • 静态路由算法(非自适应路由算法)管理员手工配置路由信息;简便、可靠,在负荷稳定,拓扑变化不大的网络中较好;适用于高度安全的军事网络与较小的商业网络;路由更新慢,不适合用于大型网络。
  • 动态路由算法(自适应路由算法)路由器之间交换信息,按照路由算法优化出路由表;路由更新快,适用大型网络,及时响应链路反应与网络拓扑变化;算法复杂,加重网络负担。
    • 全局性所有路由器掌握完整的网络拓扑和链路费用信息如链路状态路由算法OSPF。
    • 分散性路由器只掌握物理相连的相邻路由器与链路费用距离向量路由算法RIP。

由于因特网规模大,而许多单位不想让外界知道自己的路由选择协议但是仍想接入因特网,所以就出现了自治系统。

自治系统AS就是多个使用同一种内部选择路由的协议的路由器之间构成的单独的小圈子圈子内使用自己的协议圈子和圈子之间也需要另一种AS协议。

路由选择协议分为内部网关协议IGPRIP、OSPF与外部网关协议EGPBGP

IP多播

MPLS

移动IP

网络层设备

[]