计算机网络-网络层

概述

网络层的主要目的是将分组从源端传到目的端,为分组交换网络上的不同主机提供通讯服务,网络层的传输单位是数据报。
网络层的主要功能:

  • 路由选择与分组转发(最佳路径)
  • 异构网络互联 (手机,局域网,无线网)
  • 拥塞控制
    • 若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
    • 方式一:开环控制(静态方法,类似数据链路层中的信道划分介质访问控制)
    • 方式二:闭环控制(动态方法,类似数据链路层中的随机访问介质访问控制)

1.数据交换

  • 电路交换
  • 报文交换
  • 分组交换
    1)数据报方式
    2)虚电路方式

1.1 电路交换:
例如电话网络
电路交换的阶段:
1)建立连接
2)通讯
3)释放连接
在这里插入图片描述
优点:
通讯时延小、有序传输、没有冲突、实时性强。

缺点:
建立连接时间长、线路独占,利用率低、灵活性差、无纠错能力

1.2 报文交换:
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块,不会分割报文
在这里插入图片描述

1.3 分组交换:
分组交换与报文交换的工作方式基本相同,都采用存储转发方式,形式上的主要差别在于,分组交换网中要限制所传输的数据单位的长度,一般选128B。发送节点首先对从终端设备送来的数据报文进行接收、存储,而后将报文划分成一定长度的分组,并以分组为单位进行传输和交换。接收结点将收到的分组组装成信息或报文。
在这里插入图片描述
优点:

  • 无需建立连接:不需要预先建立专门通信线路,用户可随时发送分组。
  • 存储转发,动态分配线路
  • 线路可靠性较高:分组较短,减少了出错几率
  • 线路利用率较高:通信双方在不同的时间一段一段地部分占有这条物理通道,多个分组可共享信道。
  • 相对于报文交换,存储管理更容易:因为分组的长度固定,相应的换乘区的大小也固定。
  • 适用于计算机之间突发性数据通信:因为分组短小

缺点:

  • 有存储转发时延
  • 需要传输额外的信息量:每个分组都要加控制信息,增加了处理的时间。
  • 当分组是乱序到目的主机时,要对分组进行排序重组

分组交换之数据报方式:

为网络提供无连接服务。
无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
基于路由协议/算法构建转发表,检索转发表,为每个分组独立选择路径。如何选择路径?迪杰斯特拉算法。
在这里插入图片描述
分组交换之虚电路方式:
将数据报方式和虚电路方式结合,发挥两者的优势。
网络上的两个节点先要建立连接,通过虚电路号来区分,两个节点之间的分组报文会被打上这个虚电路号,以表示走同一条路径。

对比:
在这里插入图片描述
几种传输单元名词介绍:

  • 应用层:报文(一整个信息)
  • 传输层:报文段(把很长的报文分割成一小段,如果报文很小就不用分割为报文段)
  • 网络层:IP数据报,分组(IP数据报:封装了网络层的IP地址,包括源地址与目的地址。如果IP数据报过大,就切割成分组,所以数据报如果很小,那么一个分组就是一个数据报。IP协议定义数据传送的基本单元——IP分组/IP数据报及其确切的数据格式。)
  • 数据链路层:帧(加头:MAC地址;加尾:FCS帧检验序列)
  • 物理层:比特流(把比特流转成信号的形式放到链路上进行传输)

2. 路由算法

在这里插入图片描述
最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

2.1 路由算法分类

  • 静态路由算法(非自适应路由算法) 管理员手工配置路由信息

    优点:
    简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
    缺点:
    路由更新慢(路由表需要人工更新),不适用大型网络。

  • 动态路由算法(自适应路由算法)路由器间彼此交换信息,按照路由算法优化出路由表项。

    优点:
    路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
    缺点:
    算法复杂,增加网络负担。

动态路由算法:

  • 全局性:链路状态路由算法,应用于OSPF协议,所有路由器掌握完整的网络拓扑和链路费用信息。适用于较大网络。
  • 分散性:距离向量路由算法,应用于RIP协议,路由器只掌握物理相连的邻居及链路费用。适用于较小网络。

2.2 分层次的路由选择协议
因为因特网太大,让路由器掌握所有其他路由器信息不现实。
许多单位不想让外部知道自己的路由选择协议,但是还想连入互联网

所以出现了AS,将一个公司或者行政单位看做AS

  • 对内通过内部路由协议访问,例如RIP(距离向量路由算法)、OSPF(链路状态路由算法)
  • 对外通过外部路由协议链接,AS之间使用的,例如BGP(BGP-4)
    在这里插入图片描述

2.3 路由选择协议(路由器之间的协议)

2.3.1. RIP协议(Routing Information Protocol:路由信息协议)
是一种分布式的基于距离向量算法的路由选择协议,RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录。

如何获取其他其他路由器的信息?

  • 路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
  • 经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
  • 路由表怎么更新的?——距离向量算法

距离向量算法过程:

  • 1)修改相邻路由器发来的RIP报文中所有表项
    对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。
    在这里插入图片描述
    x路由器过30s后,要把自己的路由表信息放到RIP报文中,然后发送给R1。
    x中的一个表项就是Net3,2,R2。该RIP报文到达R1后,R1吸收x所有表的信息。
    首先把地址改为x,因为R1的下一跳地址是x,距离+1。

  • 2)对修改后的RIP报文中的每一个项目,进行以下步骤:
    (1) 原R1路由表中若没有Net3,则把该项目直接填入R1路由表。
    (2) 原R1路由表中若有Net3,则查看下一跳路由器地址(看一下新的情况是怎么样的):

    若原R1路由表该项目到Net3的下一跳也是X,则用新的项目替换原路由表中的项目(为什么替换,因为路由表30s更新一次,以最新消息为准!);
    若原R1路由表该项目到Net3的下一跳不是X,而是Y路由(说明Y也可以到Net3)。则比较距离,使用距离小的路由。

  • 3)若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。

  • 4)返回

2.3.2. 内部网关OSPF协议与链路状态算法
OSPF(Open shortest path first)协议:开放最短路径优先协议,“ 最短路径优先”使用了Dijkstra(迪杰斯特拉)提出的最短路径算法SPF。

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

OSPF的特点:

  • 和谁交换?1.使用洪泛法(洪水泛滥)向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。类似广播——最终整个区域内所有路由器都得到了这个信息的一个副本。而RIP仅和相邻路由器交换信息。

  • 交换什么?2.发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)。而RIP交换的信息是自己的路由表

  • 多久交换?3.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息进行交换。而RIP是每30s路由表交换一次。

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

链路状态路由算法
1.每个路由器发现它的邻居结点[通过每10s发送HELLO问候分组来发现邻居结点],并了解邻居节点的网络地址。

2.设置到它的每个邻居的成本度量metric(n. 度量标准)。

3.构造[DD数据库描述分组],向邻站给出自己的链路状态数据库(全网的拓扑结构图)中的所有链路状态项目的摘要信息。
路由器知道了拓扑结构图,就知道全网有多少个路由器以及哪些路由器是相连的还有代价是多少。把这些信息作为摘要信息放到DD数据库描述分组中, 发给邻站。

4.如果DD分组中的摘要邻站自己都有,则邻站不做处理;如果有没有的或者有更新的,则邻站发送[LSR链路状态请求分组]请求自己没有的和比自己更新的信息。

5.收到邻站的LSR分组后,路由器发送[LSU链路状态更新分组]进行更新。
6.更新完毕后,邻站返回一个[ LSAck链路状态确认分组]进行确认。

网络拓扑不是一成不变的,只要一个路由器的链路状态发生变化:
5.泛洪发送[LSU链路状态更新分组]进行更新。
6.更新完毕后,其他站返回一个[ LSAck链路状态确认分组]进行确认。

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

2.3.3. 外部网关BGP协议和路径向量算法
BGP协议:Border Gateway Protocol,边界网关协议。
一个自治系统AS的管理员都要选择至少一个路由器来作为AS的发言,两个BGP发言人都是通过一个共享的网络连接在一起的,交换网络信息。

总结:三种路由协议比较
RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文(传输层)来交换路由信息。

OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用网络层IP。

BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用传输层TCP。

3. IP数据报格式

格式
一个IP分组由首部和数据两部分组成。

  • 数据部分:传输层的传输单元报文段,因为含有TCP、UDP段。
  • 首部固定部分(20B):对于任何一个IP数据报,它的大小都相同为20字节(根据下图可得32b*5行=160b=20B),一定要有。
    首部可变部分(0~40B):可有可无,大部分情况下没有。

在这里插入图片描述
3.1 首部固定部分
在这里插入图片描述

  • 版本:版本字段长度为0-4bit;版本类型为IPv4/IPv6

  • 首部长度(最大60B):

    长度为4-8bit:对于一个4位的二进制数,可以表示16个十进制数0-15,也就是长度为0-15。
    单位是4B:假如长度是8,84B=32B,则首部长度的大小为32B。
    首部长度最大值:首部最大为15
    4B=60B。
    长度最小为5:因为首部固定部分长度就为20B,20B/4B=5,所以首部长度最小为5。

  • 区分服务:指示期望获得哪种类型的服务。比如有的数据报想先发送。

  • 标志:3位,但只有2位有意义:x _ _ 。
    1)最高位保留不用
    2)中间位DF(Don’t Fragment:不许分片):DF=1禁止分片;DF=0允许分片。
    3)最低位MF(More Fragment:更多分片):MF=1,后面“还有分片”;MF=0,代表最后一片/没 有分片(数据报长度不大)可以看出,只有DF=0时,MF才有意义

  • 片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位(首部单位是4B)。可以推断:除了最后一个分片,每个分片的数据部分长度一定是8B的整数倍。

  • 标识:同一数据报的分片使用同一标识。一个数据报的长度超过了MTU,就要进行分片,每个分片的标识相同,到了接收端就可以把同一标识的分片组合起来形成原来的数据报

  • 总长度:首部长度+数据部分,单位是1B。总长度上限值为2^16-1=65525*1B=65525B。实际上不会达到上限值,因为长度过大时会分组,以满足数据链路层的MTU(最大数据传输单元)的要求。

  • 生存时间(TTL:time to live):IP分组的保质期。每经过一个路由器生存时间就-1,直到变成0则丢弃。(ICMP协议中有应用)

  • 协议:数据部分的协议,TCP字段值为6,UDP字段值为17在这里插入图片描述

  • 首部检验和:只检验首部。为什么叫首部检验和呢?因为检验首部使用的方法是使用二进制的求和,在数据传输过程中,数据报每经过一个路由器,路由器都要重新计算一下首部检验和。因为有些字段(例如生存时间,标志等)都可能发生变化,需要通过首部检验和检验一下发生变化后的数据报有没有出错,如果出错则丢弃。

  • 源IP地址和目的IP地址:长度为32位。

3.2 可变部分信息如下:

  • 可选字段:0~40B(可有可无,大小来源:首部最大60B-固定部分20B)。用来支持排错、测量以及安全等措施。

  • 填充:全0,把首部补成4B的整数倍。因为首部的长度单位是4B。

4.网络层协议

在这里插入图片描述
4.1 ARP协议
地址解析协议。当一台设备知道对方的IP地址,不知道对方的MAC 地址时,启动ARP,发送ARP Request请求广播包到其他主机,收到广播包的主机查看,只有该请求的设备才会单播回答ARP Reply响应包。

ARP工作流程:三层往二层封装时,先要查询本机的ARP 表,如果有则封装二层,如果没有则启动ARP 来查找关于目标的 MAC,查找完成后记录在ARP 表中。

1)每个主机都会在自己的ARP缓存区中建立一个ARP列表,用来表示IP地址和MAC地址的对应关系

2)当原主机要发送数据时,首先检查ARP表中是否有对应的IP地址的目的主机的MAC地址,如果有,则直接转发数据,如果没有,就想本网段的所有主机发送ARP请求数据包(洪泛),该数据包内容包括:源主机IP地址、源主机MAC地址,目标主机的MAC地址

3)当本网络的所有主机收到了该ARP洪泛数据包时,首先检查数据包中的IP是否是自己,若不是,则忽略,若是,则把数据包的源主机的IP地址和MAC地址写入自己的ARP列表中,若存在则覆盖,后将自己的MAC地址写入ARP的响应包中,告诉源主机自己是他要找的MAC地址

4.2 DHCP协议(动态获取IP地址等、应用层协议)
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。

DHCP协议流程:

  • 1.主机广播DHCP发现报文:“有没有DHCP服务器呀?” 试图找到网络中的服务器,服务器获得一个IP地址。
  • 2.DHCP服务器广播DHCP提供报文:“有! ”“有!”“有!” 服务器拟分配给主机一个IP地址及相关配置,先到先得。
  • 3.主机广播DHCP请求报文:“我用你给我的IP地址啦?” 主机向服务器请求提供IP地址。为什么这里还用广播呢?通知其他DHCP服务器,不要再等我了,把你的IP地址给其他人吧。
  • 4.DHCP服务器广播DHCP确认报文:“用吧! ” 正式将IP地址分配给主机。

4.3 ICMP协议(保障IP数据报转发、网络层协议)
ICMP协议作用:

  • 为了更有效地转发IP数据报和提高交付成功的机会。

ICMP协议功能:

  • 差错(或异常)报告:实际通信过程中,总会有分组出错,对于出错的分组丢弃并发送一个ICMP差错报文。
  • 网络探询

ICMP报文种类:

  • ICMP差错报文(5种)
    1)终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。无法交付

    2)源点抑制(取消):当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。拥塞丢数据时告诉源点慢点

    3)时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃(保证一家人整整齐齐),并向源点发送时间超过报文。TTL=0和不完整

    4)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。首部字段有问题

    5)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。值得更好的路由

  • ICMP询问报文
    1)回送请求和回答报文
    主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态。
    具体应用:PING
    2)时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
    3)掩码地址请求和回答报文(不再使用)
    4)路由器询问和通告报文(不再使用)

4.3.1 ICMP报文
在这里插入图片描述
ICMP 协议相关的有7 个子段:

  • 1)协议;2)源IP 地址;3)目的IP 地址;4)生存时间;这四个包含在IP 首部的字段。
  • 5)类型;6)代码;7)选项数据;这三个包含在ICMP数据部分的字段。

这里面,1)协议字段值是1。2)和3)是用来交流ICMP 报文的地址信息,没有特殊意义。
对于理解ICMP 本身,重要的是5),6),7)三个字段。这里面的可以称为核心的重要字段是5)类型,6)代码这两个字段。所有ICMP 用来交流错误通知和信息询问的报文,都是由类型和代码的组合来表示的。
RFC 定义了15种类型。“报文不可到达”这样的错误通知和“回送请求”这样的信息查询是由类型字段来区分的。ICMP报文由类型来表达它的大概意义,需要传递细小的信息时由代码来分类。进一步,需要向对方传送数据的时候,用7)选项数据字段来放置。

在这里插入图片描述
4.3.2 ICMP应用

  • PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。

  • Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
    工作原理:现有源主机和目的主机,中间有多个路由器。源主机发送一连串数据报,数据报之间的差别就是TTL不同。第一个数据报TTL设置为1,当第一个数据报到达第一个路由器时,TTL-1=0丢弃并返回给源主机一个ICMP时间超过报文。第二个数据报TTL设置为2,当第二个数据报到达第二个路由器时,TTL=0丢弃并返回给源主机一个ICMP时间超过报文。其他数据报依次类推,这样就可以算出该分组从源主机到目的主机的路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值