❶ 计算机网络_网络层
在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是 网络 还是 端系统
只是一条 逻辑上的连接 ,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
请注意,电路交换的 电话通信 是先建立了一条 真正的连接 。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
数据报服务
网际协议IP是TCP/IP体系中两个最主要的协议之一,与IP协议配套使用的还有三个协议
互连在一起的网络要进行通信,会遇到许多问题要解决
网络互连要使用一些中间设备
中间设备 又称为 中间系统 或 中继 系统
如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送。
每一类地址都由两个固定长度的字段组成,其中一个 字段是 网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是**主机号 host-id
**,它标志该主机(或路由器)
可以记为
观察上图
比较重要的一点是要区别IP地址与 硬件地址 的区别
从层次的角度来看, 物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用 软件实现的)
有 四个A类网络 通过三个路由器连接在一起,每个网络上都可能有成千上万个主机。可以想象,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。丹若按主机所在的 网络地址 来制作路由表,那么每一个路由器中的路由表就只包含 四个项目 。这样可以大大简化路由表。
使用这样的简化图,我们可以不用关心某个网络内部的具体拓扑结构及连接在该网络上有多少台计算机,他还强调了在互联网上转发分组时,是 从一个路由器转发到下一个路由器 。
根据目的网络地址就能确定下一跳路由器,这一点做的结果是:
虽然因特网所有分组转发都是 基于目的主机所在的网络 ,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明一个路由。这种路由叫做 特定主机路由 ,采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
IP 数据报的首部中 没有地方 可以用来指明“下一跳路由器的 IP 地址”,当路由器收到待转发的数据报, 不是 将下一跳路由器的 IP 地址填入 IP 数据报,而是 送交下层的网络接口软件 。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成 硬件地址 ,并将此硬件地址放在链路层的** MAC 帧 的首部,然后根据这个 硬件地址**找到下一跳路由器。
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
在 ARPANET 的早期,IP 地址的设计确实不够合理。
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
请注意现在子网号为3的网络的 网络地址 是145.13.3.0(既不是原来两级的IP地址的网络地址145.13.0.0,也不是简单的子网号3),为了使路由器能很方便的从数据报中的目的IP地址中提取所要找的子网的网络地址,路由器就要使用三级IP地址的子网掩码(如上图,三级IP地址的子网掩码),它也是32位,由一串1和跟随的一串0组成。子网掩码中的1对应于IP地址中原来二级地址中的16位网络号加上新增加的8位子网号,而子网掩码中的0对应于现在的8位主机号。 虽然RFC文档中没有规定子网掩码中的一串1必须是连续的,但却极力推荐在子网掩码中选用连续的1,以避免发生错误
不管有没有划分子网,只要把子网掩码和IP地址进行逐位相 与 运算,就立即得出网络地址来,这样路由器处理到来的分组时可以采用相同的算法。
归纳下上述的要点,从网络145.13.0.0外面看,这就是一个普通的B类网络,但进入这个网络后(即到了路由器),就看到了还有许多网络(即划分了子网后的许多网络),其网络地址为145.13.x.0(这里x可以表示不同的数值),而这些网络的子网掩码都是24个连1跟上8个连0。总之,在这个网络的内外,看到的网络是不同的
为了更便于查路由表,现在因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码,默认子网掩码中1的位置和IP地址中的网络号字段正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相与,就应当能够得出该IP地址的网络地址来,这样做可以不用查找该地址的类别位就能知道这是哪一类的IP地址 (书上原话 没懂 !!!!)
P137有一个表格写B类子网划分选择(使用固定长度子网)
有一个例题请见教材P139
划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个必须尽早解决的问题,这就是:
无分类的两级编址的记法是:
CIDR 还使用 斜线记法 (slash notation),它又称为 CIDR记法 ,即在 IP 地址后面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。CIDR 把网络前缀都相同的连续的 IP 地址组成 “CIDR 地址块” 。
为了更方便的进行路由选择,CIDR使用32位的地址掩码,地址掩码由一串1和一串0组成,而1的个数就是网络前缀的长度。例如/20地址块的地址掩码是:11111111 11111111 11110000 00000000 20个连续的1,斜线记法中,斜线后面的数字就是地址掩码中1的个数
这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。
// 这里还没太懂.... 就是共有多少个几类网络那里
报文格式
ICMP差错报告报文的数据字段的内容
❷ 计算机网络第四章(网络层)
4.1、网络层概述
简介
网络层的主要任务是 实现网络互连 ,进而 实现数据包在各网络之间的传输
这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可
但是如果要将这些异构型网络互连起来,形成一个更大的互联网,就需要实现网络层设备路由器
有时为了简单起见,可以不用画出这些网络,图中N1~N7,而将他们看做是一条链路即可
要实现网络层任务,需要解决一下主要问题:
网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
在数据链路层那课讲过的可靠传输,详情可以看那边的笔记:网络层对以下的 分组丢失 、 分组失序 、 分组重复 的传输错误采取措施,使得接收方能正确接受发送方发送的数据,就是 可靠传输 ,反之,如果什么措施也不采取,则是 不可靠传输
网络层寻址问题
路由选择问题
路由器收到数据后,是依据什么来决定将数据包从自己的哪个接口转发出去?
依据数据包的目的地址和路由器中的路由表
但在实际当中,路由器是怎样知道这些路由记录?
由用户或网络管理员进行人工配置,这种方法只适用于规模较小且网络拓扑不改变的小型互联网
另一种是实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路有记录,这种方法更适合规模较大且网络拓扑经常改变的大型互联网
补充 网络层(网际层) 除了 IP协议 外,还有之前介绍过的 地址解析协议ARP ,还有 网际控制报文协议ICMP , 网际组管理协议IGMP
总结
4.2、网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“ 面向连接 ”还是“ 无连接 ”)曾引起了长期的争论。
争论焦点的实质就是: 在计算机通信中,可靠交付应当由谁来负责 ?是 网络 还是 端系统 ?
面向连接的虚电路服务
一种观点:让网络负责可靠交付
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用 面向连接 的通信方式。
通信之前先建立 虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
请注意,电路交换的电话通信是先建立了一条真正的连接。
因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样
无连接的数据报服务
另一种观点:网络提供数据报服务
互联网的先驱者提出了一种崭新的网络设计思路。
网络层向上只提供简单灵活的、 无连接的 、 尽最大努力交付 的 数据报服务 。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺 。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
发送方 发送给 接收方 的分组可能沿着不同路径传送
尽最大努力交付
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的 主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
采用这种设计思路的好处是 :网络的造价大大降低,运行方式灵活,能够适应多种应用。
互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
虚电路服务与数据报服务的对比
对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
4.3、IPv4
概述
分类编制的IPv4地址
简介
每一类地址都由两个固定长度的字段组成,其中一个字段是 网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是 主机号 host-id ,它标志该主机(或路由器)。
主机号在它前面的网络号所指明的网络范围内必须是唯一的。
由此可见, 一个 IP 地址在整个互联网范围内是唯一的 。
A类地址
B类地址
C类地址
练习
总结
IP 地址的指派范围
一般不使用的特殊的 IP 地址
IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构 。分两个等级的好处是:
第一 ,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
第二 ,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口 。
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为 多归属主机 (multihomed host)。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此 一个路由器至少应当有两个不同的 IP 地址 。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络 ,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
划分子网的IPv4地址
为什么要划分子网
在 ARPANET 的早期,IP 地址的设计确实不够合理:
IP 地址空间的利用率有时很低。
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
两级的 IP 地址不够灵活。
如果想要将原来的网络划分成三个独立的网路
所以是否可以从主机号部分借用一部分作为子网号
但是如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少比特被用作子网号了呢?
所以就有了划分子网的工具: 子网掩码
从 1985 年起在 IP 地址中又增加了一个“ 子网号字段 ”,使两级的 IP 地址变成为 三级的 IP 地址 。
这种做法叫做 划分子网 (subnetting) 。
划分子网已成为互联网的正式标准协议。
如何划分子网
基本思路
划分子网纯属一个 单位内部的事情 。单位对外仍然表现为没有划分子网的网络。
从主机号 借用 若干个位作为 子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的 目的网络号 net-id,先找到连接在本单位网络上的路由器。
然后 此路由器 在收到 IP 数据报后,再按 目的网络号 net-id 和 子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。
划分为三个子网后对外仍是一个网络
优点
1. 减少了 IP 地址的浪费 2. 使网络的组织更加灵活 3. 更便于维护和管理
划分子网纯属一个单位内部的事情,对外部网络透明 ,对外仍然表现为没有划分子网的一个网络。
子网掩码
(IP 地址) AND (子网掩码) = 网络地址 重要,下面很多相关知识都会用到
举例
例子1
例子2
默认子网掩码
总结
子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。
无分类编址的IPv4地址
为什么使用无分类编址
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特点
CIDR使用各种长度的“ 网络前缀 ”(network-prefix)来代替分类地址中的网络号和子网号。
IP 地址从三级编址(使用子网掩码)又回到了两级编址 。
如何使用无分类编址
举例
路由聚合(构造超网)
总结
IPv4地址的应用规划
给定一个IPv4地址快,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址
定长的子网掩码FLSM(Fixed Length Subnet Mask)
划分子网的IPv4就是定长的子网掩码
举例
通过上面步骤分析,就可以从子网1 ~ 8中任选5个分配给左图中的N1 ~ N5
采用定长的子网掩码划分,只能划分出2^n个子网,其中n是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同
但是也因为每个子网所分配的IP地址数量相同,不够灵活,容易造成IP地址的浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
无分类编址的IPv4就是变长的子网掩码
举例
4.4、IP数据报的发送和转发过程
举例
源主机如何知道目的主机是否与自己在同一个网络中,是直接交付,还是间接交付?
可以通过 目的地址IP 和 源地址的子网掩码 进行 逻辑与运算 得到 目的网络地址
如果 目的网络地址 和 源网络地址 相同 ,就是 在同一个网络 中,属于 直接交付
如果 目的网络地址 和 源网络地址 不相同 ,就 不在同一个网络 中,属于 间接交付 ,传输给主机所在网络的 默认网关 (路由器——下图会讲解),由默认网关帮忙转发
主机C如何知道路由器R的存在?
用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为 默认网关
例如。路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关
主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器接口0
路由器收到IP数据报后如何转发?
检查IP数据报首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机
若没有出错,则进行转发
根据IP数据报的目的地址在路由表中查找匹配的条目:
若找到匹配的条目,则转发给条目中指示的吓一跳
若找不到,则丢弃该数据报并通告源主机
假设IP数据报首部没有出错,路由器取出IP数据报首部各地址字段的值
接下来路由器对该IP数据报进行查表转发
逐条检查路由条目,将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址,然后与路由条目中的目的网络进行比较,如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示,图中所示的也就是接口1转发该IP数据报
路由器是隔离广播域的
4.5、静态路由配置及其可能产生的路由环路问题
概念
多种情况举例
静态路由配置
举例
默认路由
举例
默认路由可以被所有网络匹配,但路由匹配有优先级,默认路由是优先级最低的
特定主机路由
举例
有时候,我们可以给路由器添加针对某个主机的特定主机路由条目
一般用于网络管理人员对网络的管理和测试
多条路由可选,匹配路由最具体的
静态路由配置错误导致路由环路
举例
假设将R2的路由表中第三条目录配置错了下一跳
这导致R2和R3之间产生了路由环路
聚合了不存在的网络而导致路由环路
举例
正常情况
错误情况
解决方法
黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,IP数据报进入它后就被丢弃
网络故障而导致路由环路
举例
解决方法
添加故障的网络为黑洞路由
假设。一段时间后故障网络恢复了
R1又自动地得出了其接口0的直连网络的路由条目
针对该网络的黑洞网络会自动失效
如果又故障
则生效该网络的黑洞网络
总结
4.6、路由选择协议
概述
因特网所采用的路由选择协议的主要特点
因特网采用分层次的路由选择协议
自治系统 AS :在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
自治系统之间的路由选择简称为域间路由选择,自治系统内部的路由选择简称为域内路由选择
域间路由选择使用外部网关协议EGP这个类别的路由选择协议
域内路由选择使用内部网关协议IGP这个类别的路由选择协议
网关协议 的名称可称为 路由协议
常见的路由选择协议