本篇文章字数大约1W+,因为包含大量的概念,可能比较难理解,我尽量使用图和例子结合的方式,让大家容易理解.主要内容是关于计算机网络中的网络层的最详细知识,从网络层概念出发,讨论网路层的功能和具体实现,以及相关的协议.

往期相关文章:

学计算机网络之前了解这些,学习效率不提升过来打我

计算机网络物理层第一章物理层详解

吐血码万字长文搞懂了数据链路层

网络层

网络层概述

  • 主要任务就是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
  • 网络层传输单位是数据报

网络层的功能

  • 路由选择和分组转发(找路)
  • 异构网络互联(手机,WIFI,校园网不同网络之间实现通信)
  • 拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态,因此要采取一定措施,缓解这种拥塞,注意和流量控制不同,拥塞控制是全局性的
    • 方法1:开环控制 静态控制方法,在网络开始工作之前,就把可能出现的拥塞处理
    • 方法2:闭环控制 动态控制方法,网络工作时自动控制拥塞

数据交换方式

如何使数据通过网络核心(路由器)从源主机到目的主机呢?

答:数据交换

现在我们常用的数据交换方式是:通过交换设备的互联来实现数据的传递和交流

能够避免大量的使用链路直接相连的复杂性,也避免了只有一台交换设备对交换设备端口和吞吐量的要求

电路交换

电路交换阶段:

建立连接(呼叫/电路建立)----->通信----->释放连接(拆除电路)

特点

在通信过程中独占资源,意思就是只要连接建立在通信过程中,并且没有释放连接,那么其他人是没有办法抢占资源的.

电路交换的优点

  1. 通信时延小
  2. 有序传输
  3. 没有冲突
  4. 实时性强

电路交换的缺点

  1. 建立连接时间长
  2. 线路独占,使用效率低
  3. 灵活性差(当有交换设备宕机时,通信设备无法正常通信)
  4. 无差错控制能力(发送数据时,不管数据是否出错,只是单纯的把数据发送出去)

报文交换

报文:源应用发送的信息整体,比如说源主机应用发送的是一个PFD文件,那么这个PDF文件就是信息的整体,也就是报文

在报文交换过程中,可以选择多种路径(那个路径空闲,就有可能选择它),然后在发送给目的主机.

优点:

  1. 无需建立连接
  2. 存储转发,动态分配线路
  3. 线路可靠性较高(可选择多条线路,一台交换设备出现宕机,就选择其他的路线)
  4. 线路利用率较高(线路给所有的主机使用,当时只有空闲才能被新的发送端使用,那么线路的利用率就比较高)
  5. 多目标服务(一个报文可以发送给多个目的主机)

缺点:

  1. 有存储转发时延(在交换过程中,从发送端传输到交换设备,交换设备需要先把报文存储起来,然后等链路空闲了在转发出去,因此就有存储转发时延)
  2. 报文大小不定,需要网络节点有较大的缓存空间

分组交换

分组交换和报文交换都使用了存储转发的思想,但是分组交换转发的是分组

**分组:**把大的数据块分割成小的数据块(也就是把之前的报文,分割成小块)

这里要注意的是:分组交换中,传输的分组是并行传输的,即分组可以同时在链路上传输,而报文交换是整个报文进行传输的.

优点

  1. 无需建立连接
  2. 存储转发,动态分配线路
  3. 线路可靠性较高
  4. 线路利用率较高
  5. 相对于报文交换,存储管理更容易(对缓存大小的要求不高)

缺点:

  1. 有存储转发时延
  2. 需要传输额外的信息量
  3. 乱序到目的主机时要对分组排序重组

一个例题来看看报文交换方式和分组交换方式

对于报文交换:
10000 b i t 1000 b i t / s = 10 s , 2 , 10 s × 3 = 30 s \frac{10000bit}{1000bit/s}=10s\\ 又题中要求最少的时间,因此只经过2个交换设备\\ 而且题中没有传播时延,因此不考虑传播时延 \\10s×3 =3 0s 1000bit/s10000bit=10s,2,10s×3=30s
对于分组交换:
10 b i t 1000 b i t / s = 0.01 s , . 10000 b i t 1000 b i t / s = 10 s 0.01 s × 2 = 0.02 s 10 s + 0.02 s = 10.02 s \\\frac{10bit}{1000bit/s}=0.01s\\ 因为在分组交换中,分组是并行传输的.因此\\ \frac{10000bit}{1000bit/s}=10s 0.01s×2=0.02s\\ 10s+0.02s=10.02s 1000bit/s10bit=0.01s,.1000bit/s10000bit=10s0.01s×2=0.02s10s+0.02s=10.02s

计算题中要注意的点:

  1. 单位换算:b/B,Mbps,kbps
    • 1 Byte = 8bit
    • 1 bit/s = 1bps
    • 1Mbps(速率)= 10^6bps
    • 1kbps= 10^3bps
  2. 是否考虑传播时延
  3. 时间至少是多少------选择最小跳数(交换设备尽量少)
  4. 起始时间(从发送开始到接收完为止/从发送开始到发送完毕)
  5. 是否有分组头部大小的开销
  6. 报文交换时延更长,分组交换时延可能不是整数

分组交换技术的数据报方式和虚电路方式

数据报方式为网路层提供无连接服务

虚电路方式为网路层提供连接服务

无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同

连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接.

这里穿插集中传输单元名词解析

应用层 报文
传输层 报文段
网络层 IP数据报,分组
数据链路层
物流层 比特流

数据报方式

虚电路方式

数据报和虚电路总结

三种数据交换方式比较总结

  1. 报文交换分组交换都采用存储转发
  2. 传送数据量大,且传送时间远大于呼叫时间,选择电路交换,电路交换的传输时延最小
  3. 从信道的利用率来看,报文交换分组交换优于电路交换,其中分组交换时延更小

IP数据报格式

在网络层协议中ARP协议处于最下层,他要为IP协议服务,而IP协议又要为ICMP .IGMP协议服务

IP数据报格式

IP数据报分片

最大传送单元MTU

链路层数据帧可封装数据的上限

以太网的MTU是1500字节

如果所传送的数据报长度超过某链路的MTU值?

分片

结合之前的IP数据报格式

  • 总长度单位是1B
  • 片偏移量单位是8B
  • 首部长度单位是4B

意思就是实际的长度值,等于原长度的值×单位

根据片偏移可得:

除了最后一个分片,每个分片长度一定是8B的整数倍

IP数据报分片例题

IPV4地址

IP地址

ip地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符

IP编址的历史阶段

1.分类的IP地址

就是把很大的IP地址空间分成几类

IP地址不仅可以标识一台主机,也可以标识主机所连接的网络.IP地址是标识的是应用的端口

  • IP地址::={<网络好>,<主机号>}

特殊的IP地址

私有的IP地址

分类的IP地址规则

网络地址转换NAT

网络地址转换:在专用网(如私有地址的网络校园网)连接到因特网的路由器上安装NAT软件,安装NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

分类IP地址的缺点

  • 对第一个缺点的解释:申请到的IP地址段可使用的主机数很多,但是实际使用的主机数远远达不到最多可使用的主机数,造成了IP地址空间利用率的浪费
  • 对第二个缺点的解释:要新申请IP地址空间很麻烦,不能按照自主意愿扩展

从而诞生了子网的划分

2.子网的划分

对最基本的编址方法的改进

注意:

  • 划分子网后,整个网络(多个子网的网络整体)对于外界来说仍然表现为一个网络

子网掩码是如何分配和识别外界IP地址的

做一个子网掩码来识别IP地址获取真实在内网中IP地址(也就是划分子网后的)的例题

已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址
: , I P : 255 1 , 141 141 : 0 0 , 24 0 0 72 192 01001000 11000000 01000000 = 64 : 141.14.64.0 分析:要求网络地址,我们要将IP地址和子网掩码逐位相与\\ 又:255在二进制中是全1的,所以他和141相与的结果还是141\\ 又:0在二进制中是全0的,所以他和24相与的结果是全0的就是0\\ 所以我们真实要求的就是72和192相与的结果\\ \frac{01001000}{11000000}结果为01000000=64\\ 因此最终的网络地址是:141.14.64.0 :,IP:2551,141141:00,240072192110000000100100001000000=64:141.14.64.0
要记住常用的二进制和十进制之间的对应

要注意:不同的子网掩码对于同一IP地址可能获取相同的网络地址,但是也有有区别的,区别就是不同的子网掩码,就会主机位和最大使用的主机数是不同的.

子网掩码练习

子网对分组的转发过程

3.构成超网(无分类编址方法)

比较新的无分类的编址方法

无分类编址CIDR

练习球最小地址和最大地址

192.199.170.82/27的最大网络地址和最小网络地址
2 5 = 32 32 27 192.199.170 24 82 : 01010010 , , 10010 0 , 1 010 00000 , 64 , 192.199.170.64 010 11111 , 95 , 192.199.170.95 2^5=32表明了这个网络地址最多的主机数为32个主机\\ 因为27位来表示网络前缀\\ 那么192.199.170这三个字节24位是可以不动的\\ 那么先写出82的二进制和十进制转换:01010010,要给网络前缀在包含前面三位,那么剩下的10010作为主机号\\ 最小地址为主机号全为0,最大地址为主机号全为1\\ 那么010 后面00000,就是64,那么最小地址为192.199.170.64\\ 那么010 后面11111,就是95,那么最小地址为192.199.170.95 25=323227192.199.1702482:01010010,,100100,101000000,64,192.199.170.6401011111,95,192.199.170.95

构成超网

将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合

构成超网和划分子网可以说是一个相逆的过程.它是把多个较小的子网组合成一个较大的网络

方法:将网络前缀缩短

最长前缀匹配

使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由.前缀越长,地址块越小,路由越具体

ARP协议

在计算机中发送数据的过程

当数据在同一局域网中进行传输时:(同网段)

当数据报分组分片传输到数据链路层,我们需要给数据加头MAC1(自身的物理地址),MAC3(目的机的物理地址)

如果在主机1中没有找到MAC3的物理地址(会在主机1的ARP高速缓存中进行查找),那么它会发送广播来请求主机3的物理地址MAC3,然后主机3再响应给主机1它的物理地址

然后在数据链路层中加尾部FCS后封装成帧.交由下一层传输.

当数据在不是同一局域网中进行传输时:(不同网段)

需要注意的点:

  • 主机1在局域网中找不到目的地址时,它会找自己局域网的网关地址(局域网中每台主机都知道该局域网中网关的地址)
  • 路由器只会封装和解封装到网络层,因此在网络层向数据链路层封装主机物理地址时,也会将路由器的物理地址封装到数据报进行传输,来告诉下一层数据是来自哪里的

总结ARP协议

由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址

ARP协议:完成主机或路由器IP地址到MAC地址的映射.[解决吓一跳走哪的问题]

  • ARP协议自动进行

APR协议习题

主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?
, A R P , 使 A R P 6 , . 首先,ARP协议解决的问题就是下一跳去哪的问题,因此有几次转跳就使用几次ARP协议\\ 因此答案是6,可以画草图可以更加的明晰. ,ARP,使ARP6,.

DHCP协议

动态主机配置协议DHCP协议是应用层协议,使用客户/服务器方式,客户端和服务器端通过广播方式进行交互,基于UDP

和动态主机配置相反的是静态的分配IP地址,比如在机房上课时,管理员给我们每台机器静态的分配IP地址.

DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址子网掩码.默认网关.DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租

  • 地址重用指的是当主机进入到DHCP协议的局域网内,那么就会为其自动的分配IP地址,当这太主机离开后,那么这个IP地址可以分配给下一个主机

DHCP协议的工作流程

  1. 主机广播DHCP发现报文 -----相当于----------“这里有没有DHCP服务器”
    • 试图找到网络中的服务器,服务器会获得该主机的IP地址
  2. DHCP服务器广播DHCP提供报文--------相当于--------“有!”
    • 服务器拟分配给主机一个IP地址及相关配置,先到先得
  3. 主机广播DHCP请求报文--------相当于-----“那我使用你给我的IP地址”
    • 主机向服务器请求提供IP地址
  4. DHCP服务器广播DHCP确认报文------相当于----“用吧”
    • 正式将IP地址分配给主机

ICMP协议

从TCP/IP协议栈的结构我们可以看出ICMP协议是网络层和传输层之间的协议,起到了桥梁的作用,其作用是为了更有效地转发IP数据报和提高交付成功的机会…

ICMP协议支持:

  1. 主机或路由器
  2. 差错(或异常)报告
  3. 网络探询
  • 在我们的网络层传输的数据报经常会出现出错,那么出错之后,我们早网络层通常的处理办法就是丢弃出错的报文.但是不仅仅是丢弃那么简单,我们还需要发送一个差错报告

ICMP协议的报文可分为两种

  1. ICMP差错报文
  2. ICMP询问报文

ICMP差错报文(5种)

  1. 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文.
  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送数据速率放慢
  3. 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要发送源点发送时间超过报文.当终点在预先规定的时间内收不到一个数据报的全部数据报片时,就把已经收到的数据报片都丢弃并向源点发送时间超过报文.(讲了两种情况)
  4. 参数问题:当路由器或目的主机收到的数据报的**首部中有的字段的值不正确,**就丢弃该数据报,并向源点发送参数问题报文.
  5. 改变路由(重定向):路由器把改变路由报文发送给主机让主机知道下次应该把数据报发送给另外的路由器(可通过更好的路由).

ICMP差错报告报文的数据格式

但是并不是任何出错的情况都应该发送一个差错报文的

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

  1. 对ICMP差错报告报文不在发送ICMP差错报告报文(禁止套娃)
  2. 对第一个分片的数据报文的所有后续数据报片都不发送ICMP差错报告报文.
  3. 对具有组播地址的数据报都不发送ICMP差错报告报文
    • 组播指的是:**一点到多点,**和广播要区分开,广播指的是:一点到所有点
  4. 对具有特殊地址(如127.0.0.0[环回地址]或0.0.0.0[本网段的主机地址])的数据报不发送ICMP差错报告报文

ICMP询问报文(4种)

  1. 回送请求和回答报文:主机或路由器向特点目的主机发出的询问,收到此报文的主机或者路由器必须给源主机或路由器发送ICMP回送回答报文.测试目的站是否可达以及了解其相关状态
  2. 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间.用来测试时钟同步和测量时间
  3. 掩码地址请求和回答报文
  4. 路由器询问和通告报文
    • 3和4这两种报文现在已经不再使用了

ICMP的应用

两种:

  • PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
  • Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文

简单解释一下Traceroute的工作过程:

我们知道每个IP数据报都有TTL的值(代表了该数据报可以传送几个路由器),没经过一个路由器,那么TTL的值就会减1,直到TTL等于0时,这时数据报不能继续传送给下一个路由器,Traceroute就是当TTL等于0时,路由器会向源主机发送一个ICMP事假超过差错报告报文,里面就记录了该数据报从源点(源主机开始传输数据的路径)

IPv6

为什么要有IPv6,

因为IPv4的编码方式已经让把编码的IP地址消耗殆尽了,再加上需求的增加.我们之前学了了CIDR和NAT技术延缓了IPv4消耗殆尽.

但是这种方式治标不治本,因此有了IPv6,就可以从根本上解决IP地址即将不够用的窘况.

  • IPv6改进首部格式,
  • 能够快速处理/转发数据报
  • 支持QoS
    • QoS:指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术.

IPv6的数据报格式

IPv6和IPv4

  1. IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间
  2. IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间
  3. IPv6将IPv4的可选字段移出了首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率.
  4. IPv6支持即插即用(即自动配置IP地址),不需要DHCP协议
  5. IPv6的首部长度必须是8B的整数倍,IPv4首部是4B的整数倍
  6. IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
    • IPv6中,如果数据报很大,必须在路由器那里分片,但是IPv6不能在路由器分片,所以只能将该数据报丢弃,然后一个差错报告报文
  7. ICMPv6:附加报文类型"分组过大"
  8. IPv6支持资源的预分配,支持实时视像等要求,保证在一定带宽和时延的应用
  9. IPv6取消了协议字段,改成了下一个首部字段
  10. IPv6取消了总长度字段,改用有效载荷长度字段
  11. IPv6取消了服务类型字端

注意:其中加粗的是比较重要的知识,其余的作为了解.

IPv6地址表示形式

一般形式:冒号十六进制记法:BF2:AA12:0216:FEBC:BA5F:039A:2170

压缩形式:4BF2:0000:0000:0000:BA5F:039A:000A:2176

-------->4BF5:0:0:0:BA5F:39A:A:2176

  • 即每一组至少保证有一个数字,然后把零删除

IPv6基本地址类型

  • 单播:一对一通信 可做源地址+目的地址
  • 多播:一对多通信 可做目的地址
  • 任播:一对多种的一个通信(实际上还是一对一的通信,但是形式上是一对多的通信) 可做目的地址

IPv6和IPv4的过渡策略

IPv6脑图

路由算法

标准路由转发表

路由算法的分类

分层次的路由选择协议

选择分层次的路由选择协议的原因:

  1. 因特网规模很大
  2. 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网

具体的实现:

RIP协议与距离向量算法

RIP协议

RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单.

RIP协议要求网络中每一个路由器都维护从它自己到其它每一个目的网络的唯一最佳距离记录(即一组距离).

就是在路由表中记录了自己到其它网络的路径(下一跳的地址)和距离

  • 距离:通常为"跳数",即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1.特别的,从一路由器到直接连接的网络距离为1.RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达.-------->因此RIP协议只适合规模比较小的网络

那么这张路由表是怎么得出来的呢?

通过交换

RIP协议和谁交换?多久交换一次?交换什么?

  1. 仅和相邻路由器交换信息
  2. 路由器交换的信息是自己的路由表
  3. 每30秒交换一次路由信息,然后路由器根据新信息更新路由表(计算邻居提供的信息,并更新自己的路由表).若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表(把含有邻居的表项删除)

路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息.

经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即"收敛"

现在知道了RIP协议是要交换路由表,并更新自己的路由表,那么路由表具体是怎么更新的?

要理解这个问题,我们要借助距离向量算法.

距离向量算法

RIP报文:包含着路由表全部信息的报文信息

也就是说每个相邻的路由器之间交换的是RIP报文

距离向量算法的过程

  1. 修改相邻路由器发来的RIP报文中所有表项
    • 对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把"下一跳"字段中的地址改为X,并把所有"距离"字段+1(自己不能直接到达的,就要借助相邻的路由器)
  2. 对修改后的RIP报文中的每一个项目,进行以下步骤:
    1. 如果R1路由表中若没有Net3,则把该项目填入R1路由表
    2. 如果路由表中若有Net3,则查看下一跳路由器地址
      1. 如果下一跳是X,则把收到的项目替换源路由表中的项目(因为我们路由表中的信息要以最新的信息为准)
      2. 如果下一跳不是X,原来距离比从X走的距离远则更新,否则不做处理
  3. 如果180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16
  4. 返回(循环更新)

距离向量法练习1

距离向量法练习2

B ( 5 , 0 , 8 , 12 , 6 , 2 ) B A , B , C , D , E , F A : 5 , B : 0 , C : 8 , D : 12 , E : 6 , F : 2. C B , D E 6 , 3 , 5 : C B , D , E 6 , 3 , 5 : C B : ( 11 ( ) , 6 ( ) , 14 ( 0 ) , 18 , 12 , 8 ( ) ) C B 6 C D : ( 19 , 15 , 9 ( 0 ) , 3 ( ) , 12 , 13 ) C E : ( 12 , 11 , 8 ( 0 ) , 14 , 5 ( ) , 9 ) C C 0 , 0 , C ( 11 , 6 , 0 , 3 , 5 , 8 ) B的向量(5,0,8,12,6,2)指的是B到A,B,C,D,E,F的距离\\分别为A:5,B:0,C:8,D:12,E:6,F:2. \\ 其他向量同理 \\C到B,D和E的延迟分别是6,3,5表示的是:\\ C到B,D,E之间分别有6跳,3跳,5跳\\ 因此可得: C到B:(11(选中),6(选中),14(0),18,12,8(选中))相当于给C到B每个向量都加上6 \\C到D:(19,15,9(0),3(选中),12,13) \\C到E:(12,11,8(0),14,5(选中),9) \\又因为C到C的距离为0,那么三组向量中的第三个值可以改为0\\ 然后在三组向量中选择较小的距离,就可得出C到所有结点的最短路径\\ 最终可得结果(11,6,0,3,5,8) B(5,0,8,12,6,2)BA,B,C,D,E,FA:5,B:0,C:8,D:12,E:6,F:2.CB,DE6,3,5:CB,D,E6,3,5:CB:(11(),6(),14(0),18,12,8())CB6CD:(19,15,9(0),3(),12,13)CE:(12,11,8(0),14,5(),9)CC0,0,C(11,6,0,3,5,8)
这一道题中延迟就是指C到B,D,E之间不是相邻的,要和第一题有所区别

RIP协议的报文格式

OSPF协议

开方最短路径有限OSPF协议:"开放"标明OSPF协议不是受某一家厂商控制,而是公共发表的"最短路径优先"是因为使用了Dijksrtra提出的最短路径算法SPF

OSPF最主要的特征是使用分布式的链路状态协议

OSPF特点:

  • 和谁交换?
    • 1.使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器(表面上好像只给自己相邻的路由器发送信息,但是实际上经过一定的时间就实现了所有路由器的信息交换这就叫做洪泛法)广播
  • 交换什么?
    • 2.发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价—费用.距离.时延.带宽等)
    • 注意在OSPF协议中交换的和在RIP协议中交换的不同,在RIP协议中交换的链路状态指的是跳数,但是在OSPF中交换的链路状态是可以我们自己指定的,可以包括费用,距离,时延,带宽等
  • 多久交换?
    • 3.只有当**链路状态发生变化时,**路由器才向所有路由器洪泛发送此信息
    • 这个和RIP协议也是不同的,在RIP协议中每隔30s就会重新发送一次路由信息

最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图

链路状态的路由算法

步骤:

  1. 每隔路由器发现它的邻居节点[HELLO问候分组],并了解邻居节点的网络地址.(要去了解周围的临站哪些是可达的站,因为只有可达的站才能进行数据的交换)
  2. 设置到它的每个邻居的成本度量metric
  3. 构造[DD数据库描述分组],想临站给出自己的链路状态数据库(相当于全网的拓扑结构图)中的所有链路状态项目的摘要信息.(就能知道在全网中哪些站点是可达的,并且他们的可达关系是怎么建立的,代价是多少,那么就把自己知道的信息作为摘要信息放到DD数据库描述分组中发给临站)
  4. 如果DD分组中的摘要自己都有,则临站不做处理,如果有没有的或者是更新的,则发送[LSR链路状态请求分组]请求自己没有的和比自己更新的信息
  5. 收到临站的LSR分组后,发送[LSU链路状态更新分组]进行更新
  6. 更新完毕后,临站返回一个[LSAck链路状态确认分组]进行确认

只要一个路由器的链路状态发生变化

5.泛洪发送[LSU链路状态更新分组]进行更新

6.更新完毕后,其他站返回一个[LSAck链路状态确认分组]进行去人

7.使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径

OSPF的区域

OSPF分组

OSPF的其他特点

BGP协议

  • 和谁交换?
    • 与其他AS的临站BGP发言人交换信息

  • 交换什么?
    • 交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS
  • 多久交换?
    • 发生变化的时候交换一次

BGP协议交换信息的过程

BGP所要交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS.当BGP发言人互相交换了网络可达性的信息后,额BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由.

BGP协议交换信息的过程

交换的信息就是:交换路径的一个向量,就是交换一组路径的信息.

BGP发言人交换路径向量:
A S 2 B G P A S 1 B G P : " N 1. N 2 N 3 N 4 A S 2 " 自治系统AS_2的BGP发言人通知主干网AS_1的BGP发言人:\\"要到达网络N1.N2N3和N4可经过AS_2" AS2BGPAS1BGP:"N1.N2N3N4AS2"

BGP发言人交换路径向量:
: " N 5 , N 6 , N 7 沿 ( A S 1 , A S 3 ) " 主干网还可以发出通知:\\ "要到达网络N5,N6,N7可沿路径(AS_1,AS_3)" :"N5,N6,N7沿(AS1,AS3)"

BGP协议报文格式

BGP协议的特点:

  • BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀.下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
  • 在BGP刚刚运行时,BGP的临站是交换整个BGP路由表.但以后只需要在发生变化时更新有变化的部分,这样做对节省网络带宽和减少路由器的处理开销都有好处.

BGP-4的四种报文

三种路由协议比较

  • RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP``报文来交换路由信息.`
  • OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用IP
  • BGP是一个外部网关协议,在不同的自知系统之间交换路由信息,由于网络环境复杂需要保证可靠传输,所以采用TCP

IP组播

IP数据报的三种传输方式

  • 单播
    • 单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址.是一种点对点传输方式
    • 在发送者和每一个接受者之间需要单独的数据信道
  • 广播
    • 广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点的传输方式(直接发送给所有用户)
  • 组播(多播)
    • 当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,别传递的数据到达距离用户端尽可能近的节点后才爱是复制和分发,是一种点对多点传输方式(有选择的发送)
    • 组播提高了数据传送效率.减少了主干网出现拥塞的可能性.组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)

那么在组播发送方式中发送数据包的过程中,我们怎么知道哪些主机时在同一组播组呢?

这就要了解IP组播地址

我们之前在发送数据给另一台主机时,目的地址填写的就是我们要发送的目的主机的IP地址,这个IP地址是在全球范围内都是唯一的IP地址,那么我们要实现的是发送给同一个组播组的所有的主机,那么就不能使用的是IP地址,不然仅仅会发送给这一台主机,而不是一个组播组的所有主机.

IP组播地址让源设备能够将分组发送给一组设备.属于多播组的设备将被分配有一个组播组IP地址(一群共同需求的主机的相同标识)

组播地址范围是224.0,0,0~239.255.255.255(D类地址),一个D类地址表示一个组播组,只能用作分组的目的地址.源地址总是为单播地址

  1. 组播数据报也是"尽最大努力交付",不提供可靠交付,应用于UDP
  2. 对组播数据报不产生ICMP差错报文
  3. 并非所有D类地址都可以作为组播地址

硬件组播

硬件组播解决的问题是在一个局域网内,对于一个IP数据报,应该把该数据报传送给哪些主机?

在单播中我们传输一个IP数据报,我们的数据报进入到局域网中,我们要根据MAC地址要确定该把数据报发送给谁

同样在组播中:

同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧.组播MAC地址以十六进制值01-00-5E开头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的.

TCP/IP协议使用的以太网多播地址的范围是:**01-00-5E-00-00到01-00-5E-7F-FF-FF.

IGMP协议和组播路由选择协议

这两个协议就是我们讲的组播的分类中在因特网范围内组播(也就是局域网范围外组播)所使用的协议

IGMP协议和组播路由器相互合作

网际组管理协议IGMP

IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组

IGMP在协议栈中的位置

ICMP和IGMP都使用IP数据报传递报文

IGMP工作的两个阶段

  1. 某主机象牙假如组播组时该主机向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员—>本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
  2. 本都组播路由器周期性的探询本地局域网上的主机,以便知道这些主句是否还是组播组的成员----->只要有一个主机对某个组响应,那么组播组就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不在把这组的成员关系发给其他的组播路由器.

组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员

组播路由选择协议

目的:找出以源主机为根节点的组播转发树

构造树可以表面在路由器之间兜圈子

对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树.

组播路由选择协议中常使用的三种算法

  • 基于链路状态的路由选择
  • 基于距离-向量的路由的选择
  • 协议无关的组播(稀疏/密集)

移动IP

移动IP要区分于我们之前通过DHCP协议获取的动态IP,动态IP当离开局域网的范围后就不能享受在局域网中的服务,而移动IP是可以的.

你出差时,只要登录到总公司的网络,就可以享受到在总公司的特权

相关术语

移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变

也就是说即使物理位置发生了改变,但是IP地址是不发生改变的,就可以实现跨越多个网段的功能

  • 移动结点:具有永久IP地址的移动设备
  • 归属代理(本地代理):一个移动结点拥有的就"居所"称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体叫做归属代理
  • 外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理
  • 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
  • 转交地址(辅地址):移动站点在外部网络使用的临时地址

通信过程

网络层设备

网络层的设备是路由器:路由器是一种具有对个输入端口和多个输出端口的专用计算机,其任务是转发分组.

输入输出对线路上收到的分组的处理

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因

三层设备的区别

代表物理设备 特点 能否隔离冲突域 能够隔离广播域
网络层 路由器 可以互联两个不同网络层协议的网段
数据链路层 网桥 可以互联两个物理层和链路层不同的网段 ×
物理层 集线器 不能互联两个物理层不同的网段 × ×

路由表和路由转发

路由表根据路由选择算法得出,主要用途是路由选择,总用软件来实现

  • 0.0.0.0默认路由

由路由表就可以得到转发表

转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现.转发表必须包含完成转发功能所必需的信息.在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射.

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因

三层设备的区别

代表物理设备 特点 能否隔离冲突域 能够隔离广播域
网络层 路由器 可以互联两个不同网络层协议的网段
数据链路层 网桥 可以互联两个物理层和链路层不同的网段 ×
物理层 集线器 不能互联两个物理层不同的网段 × ×

路由表和路由转发

路由表根据路由选择算法得出,主要用途是路由选择,总用软件来实现

  • 0.0.0.0默认路由

由路由表就可以得到转发表

转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现.转发表必须包含完成转发功能所必需的信息.在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射.

我是一个普通二本的学生,可能写的有不周到之处,希望各位大佬指点.让我们一起努力,不过平庸的生活.
如果您感觉`我写的不错麻烦点个赞.

如果有什么问题,可以留言我们一起探讨
如果有什么建议,也可以留言给我,我会虚心的接受,
最后谢谢您,看完了我的文章