网络层

概述

网络层的主要任务是实现网络的互连,进而实现数据包各网络之间的传输

实现网络层任务,需要解决以下问题:

  • 网络层向运输层提供怎样服务(可靠传输还是不可靠传输)
  • 网络层的寻址问题
  • 路由选择问题

因特网概述

网络层 - 图1

网络层提供的服务

网络层 - 图2

  • 面向连接的虚电路服务
    网络层 - 图3
  • 无连接的数据报服务
    网络层 - 图4
  • 对比
    网络层 - 图5

由于TGP/IP体系结构的因特网的网际层提供的是简单灵活。无连接的、尽最大努力交付的数据报服务,因此本章主要围绕网际层如何传送IP数据报这个主题进行讨论。

IPv4地址

概述

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

网络层 - 图6

IPv4编址经历的历史阶段

网络层 - 图7

IPv4表示

32比特的IPv4地址不方便阅读、记录以 及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用

网络层 - 图8

分类编址的IPv4地址

网络层 - 图9

A类地址

网络层 - 图10

B类地址

网络层 - 图11

C类地址

网络层 - 图12

练习

判断是哪类地址

注意判断全0和全1是根据主机号判断。

网络层 - 图13

IPv4的识别

网络层 - 图14

如何分配IP地址

注意在65534那里连接路由器接口也需要一个IP地址,所以是65535,B类网络少了一个,所以使用A类网络,其他路由器接口也算一个IP地址。

网络层 - 图15

划分子网的IPv4地址

概述

网络层 - 图16

举例一

网络层 - 图17

举例二

网络层 - 图18

划分子网后的IP地址

网络层 - 图19

举例三

网络层 - 图20

举例四

B类网络的子网划分,注意只需寻找一个即可。

网络层 - 图21

默认子网掩码

网络层 - 图22

无分类编址的IPv4地址

概述

网络层 - 图23

CIDR的划分

网络层 - 图24

划分举例一

聚合C类网除的是一个C类网的数量。

地址掩码就是网络为全取1,主机位全取0。

网络层 - 图25

划分举例二

网络层 - 图26

路由聚合

概述

为了不浪费路由器,找出共同的最长公共前缀,使用CIDR划分。

网络层 - 图27

举例一

可以知道192.168.4.3为广播地址,所以所有可分配地址都可以收到,而可分配地址只有2个。

网络层 - 图28

举例二

网络层 - 图29

IPv4的应用规划

网络层 - 图30

定长子网掩码的划分举例

分析需要的子网数量

网络层 - 图31

分析需要多少个子网,从而划分

网络层 - 图32

划分子网细节

网络层 - 图33

进行分配

网络层 - 图34

可以这样容易造成IP地址的浪费,每个子网只能分32个IP地址给他,他使用不了就会造成浪费。所以可以升级为变长的子网掩码。

变长的子网掩码划分举例

网络层 - 图35

使用变长划分

在该地址块中给左图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。

网络层 - 图36

练习

网络层 - 图37

IP数据报的发送和转发

概述

网络层 - 图38

过程

不同网络的发送有直接交付和间接交付

网络层 - 图39

C发送给F,C先和自己子网掩码相与,F在于C的子网掩码相与,然而不相等,所以C和F不在一个网络中。

网络层 - 图40

主机C如何知道路由器R的存在呢?可以将路由器接口的IP地址作为默认网关,发送给路由器

网络层 - 图41

路由器收到IP数据报后如何转发?

网络层 - 图42

IP数据报首部中的地址

网络层 - 图43

查表转发,与地址掩码进行相与之后与目的网络进行匹配

网络层 - 图44

匹配到相同

网络层 - 图45

转发

网络层 - 图46

本网络中发送

注意路由器不转发广播地址。

网络层 - 图47

发送到另一个网络

网络层 - 图48

练习

练习一

网络层 - 图49

练习二

网络层 - 图50

练习三

网络层 - 图51

静态路由配置及其可能产生的路由环路问题

概念

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。

  • 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
  • 一般只在小规模网络中采用。

使用静态路由配置可能出现以下导致产生路由环路的错误

  • 配置错误
  • 聚合了不存在的网络
  • 网络故障

网络层 - 图52

举例

静态路由配置

网络层 - 图53

默认路由举例

网络层 - 图54

配置默认路由是0.0.0.0

网络层 - 图55

删除以前的路由

网络层 - 图56

特定主机举例

网络层 - 图57

网络层 - 图58

静态路由配置错误导致路由环路

网络层 - 图59

网络层 - 图60

网络层 - 图61

网络层 - 图62

也就是错误配置IP地址,导致一致循环回路转发。

网络层 - 图63

聚合了不存在的网络而导致路由环路

网络层 - 图64

网络层 - 图65

网络层 - 图66

网络层 - 图67

网络层 - 图68

可以发现聚合了一些不存在的路由,转发时导致路由环路。

网络层 - 图69

解决

可以设置黑洞路由

网络层 - 图70

此时转发直接丢弃

网络层 - 图71

网络故障导致路由环路

网络层 - 图72

此时发送不了192.168.1.0/24地址,所以转发到默认路由,此时就造成了路由环路

网络层 - 图73

解决

此时路由器会自动的检测到网络断开时,设置为黑洞路由

网络层 - 图74

就不会产生路由环路

网络层 - 图75

检测到恢复后,又会自动失效黑洞配置

网络层 - 图76

路由器都是可以自动检测到是否可以转发来设置是否是黑洞网络。

路由器选择协议

概述

网络层 - 图77

因特网所采用的路由选择协议的特点

网络层 - 图78

因特网采用分层的路由选择协议

网络层 - 图79

常见的路由选择协议

网络层 - 图80

路由器的基本结构

网络层 - 图81

RIP协议

概述

网络层 - 图82

基本工作原理

选择最短的路径

网络层 - 图83

基本工作过程

网络层 - 图84

RIP的路由条目的更新规则

C的路由表更新在D中,需要将距离加一,进行更新。

  • 如果下一跳相同,那么直接更新
  • 如果是新的网络,添加
  • 到达相同目的,取最小的距离更新

网络层 - 图85

练习

练习一

网络层 - 图86

网络层 - 图87

练习二

距离为16是定义为网络不可达

网络层 - 图88

RIP存在“坏消息传播的慢”的问题

网络层 - 图89

网络层 - 图90

网络层 - 图91

存在的问题,也就是如果出现路由环路,那么会一致加距离,达到16才会设置为不可达,但是此时长达数分钟

网络层 - 图92

练习

此时R3会通告R2,表示不可达

网络层 - 图93

R2更新之后,但是R1也会更新路由条目,所以最后是3

网络层 - 图94

总结

网络层 - 图95

OSPF协议

概述

网络层 - 图96

工作原理

计算代价

网络层 - 图97

OSPF交互问候分组

网络层 - 图98

链路状态通告LSA,采用洪泛法发送

网络层 - 图99

链路状态数据库LSDB存储LSA

网络层 - 图100

基于LSDB进行最短路径的优先SPF计算

网络层 - 图101

OSPF的五种分类类型
  • 类型1,问候(Hello)分组:用来发现和维护邻居路由器的可达性。
  • 类型2,数据库描述(Database Description)分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  • 类型3,链路状态请求(Link State Request)分组:向邻居路由器请求发送某些链路状态项目的详细信息。
  • 类型4,链路状态更新(Link State Update)分组:路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
  • 类型5,链路状态确认(Link State Acknowledgment)分组:这是对链路状态更新分组的确认分组。

基本工作过程

网络层 - 图102

OSPF在多点接入网络中路由器邻居关系的建立

网络层 - 图103

区域

网络层 - 图104

总结

网络层 - 图105

EGP

概述

外部网关协议。

网络层 - 图106

工作原理

网络层 - 图107

由于受政治和国家影响,并非寻找一条最佳路由

网络层 - 图108

BGP发言人

网络层 - 图109

适用范围

网络层 - 图110

BGP-4有以下四种报文
  • OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
  • UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
  • KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
  • NOTIFICATION(通知)报文:用来发送检测到的差错。

练习

练习一

BGP封装在TCP报文中。

网络层 - 图111

练习二

网络层 - 图112

总结

网络层 - 图113

IPv4数据报的首部格式

网络层 - 图114

版本

  • 占4比特,表示IP协议的版本。
  • 通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。

首部长度

  • 占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。
  • 最小十进制取值为5,表示lP数据报首部只有20字节固定部分;
  • 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。

可选字段

  • 长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
  • 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。

填充字段

  • 确保首部长度为4字节的整数倍。使用全0进行填充。

区分服务

  • 占8比特,用来获得更好的服务。
  • 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
  • 1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。
  • 只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。

总长度

  • 占16比特,表示lP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。
    网络层 - 图115

数据包分片的部分

网络层 - 图116

网络层 - 图117

标识,标志,片偏移用来进行IP数据报分片。

数据包分片操作

网络层 - 图118

再将片二进行分片

网络层 - 图119

生存时间TTL

  • 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
  • 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。

TTL作用

可以防止IP数据包兜圈。

网络层 - 图120

协议

网络层 - 图121

首部检验和

网络层 - 图122

  • 占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
  • IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
  • 由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。

源IP地址和目的IP地址

网络层 - 图123

  • 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。

练习

练习一

网络层 - 图124

注意:片偏移量不能为小数。所以此情况不符合。应该取能被8整除的最大整数。

网络层 - 图125

练习二

网络层 - 图126

IP数据报,包括目的的IP地址就有20字节,然而球的是目的地址,所以只有16字节在目的地址前,再加上封装成帧的前面有14字节的格式,所以从第31字节开始的后面四字节就是目的IP地址。

网络层 - 图127

从图中可知,主机的默认网关就是路由器R,主机会将Web请求发送给默认网关,由默认网关将Web请求转发到因特网。

网络层 - 图128

第二问

网络层 - 图129

总结

网络层 - 图130

网络控制报文ICMP

概述

网络层 - 图131

ICMP差错报文

ICMP分为以下5种类型。

终点不可达

网络层 - 图132

源点抑制

网络层 - 图133

时间超时

网络层 - 图134

参数问题

网络层 - 图135

改变路由(重定向)

网络层 - 图136

以下情况不应该发送ICMP差错报文

网络层 - 图137

练习

网络层 - 图138

ICMP询问报文

网络层 - 图139

Ping

网络层 - 图140

traceroute

网络层 - 图141

原理

就是利用TTL,不断的发起ICMP询问报文。

网络层 - 图142

网络层 - 图143

网络层 - 图144

网络层 - 图145

网络层 - 图146

网络层 - 图147

网络层 - 图148

总结

网络层 - 图149

虚拟专用网VPN与网络地址转换NAT

概述

网络层 - 图150

利用公用的因特网通信

网络层 - 图151

提供了专用的私有地址

网络层 - 图152

发送过程

当A发送给B时,源地址就是R1的IP,而目的地址就是R2的IP。

网络层 - 图153

VPN

网络层 - 图154

NAT

  • 虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
  • 1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
  • NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

网络层 - 图155

内网访问外网可以通过NAT的配置的外网地址进行访问

网络层 - 图156

而外网主机不能访问内网,因为NAT表中找不到对应的私有IP记录

网络层 - 图157

总结

网络层 - 图158