来源:学银在线 计算机网络(第3期)高军 湖南科技大学
1.概述
- 网络层主要任务是实现网络连接,进而实现数据包在各网络之间的传输
- 解决的问题
- 网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)
- 网络选址问题
- 路由选择问题
- 因特网是目前全世界用户数量最多的互联网,使用的TCP/IP协议栈
- 由于TCP/IP协议栈的网络层使用网络协议IP,它是整个协议栈的核心协议,因此TCP/IP协议栈中网络层常称为网际层
2.网络层提供的两种服务
对比 | 虚电路服务 | 数据报服务 |
---|
思路 | 可靠通信由网络自身来保证 | 可靠通信由用户主机来保证 | 连接的建立 | 必须建立网络层连接 | 不需要建立网络层连接 | 终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 | 分组的转发 | 属于同一虚电路的分组均按照同一路由进行转发 | 每个分组可走不同的路由 | 当结点出现故障时 | 所有通过故障的结点的虚电路均不能工作 | 出现故障的结点可能会丢失分组,一些路由可能发生变化 | 分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 | 服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
3.IPv4地址
1.分类编址的IPv4地址
1.A类地址
- 前8位是网络号
- 8进制网络号首位是0
- 最小网络号0,保留不指派
- 第一个可指派的网络号为1,网络地址为1.0.0.0
- 最大网络号为127,即01111111.作为本地环回地址,不指派.最小本地环回地址为127.0.0.1,最大环回地址为127.255.255.254
- 最后一个可指派的网络号为126,即01111110,网络地址为126.0.0.0
- 可指派的网络数量为
2
(
8
?
1
)
2^{(8-1)}
2(8?1)-2 ,减去0和127
- 每个网络中可分配的IP地址数量为
2
2
4
2^24
224-2 ,减去全0的网络地址和全1的广播地址
2.B类地址
- 前16位是网络号
- 8进制网络号前两位是10
- 最小网络号也是第一个可指派的网络号为128.0,即10000000 00000000,网络地址为128.0.0.0
- 最大网络号也是最后一个可指派的网络号是191.255,即10111111 11111111,网络地址为191.255.0.0
- 可指派的网络数量为
2
(
16
?
2
)
2^{(16-2)}
2(16?2)
- 每个网络中可分配的IP地址数量为
2
1
6
2^16
216-2
3.C类地址
- 前24位是网络号
- 8进制网络号前三位是110
- 最小网络号也是第一个可指派的网络号为192.0.0,即11000000 00000000 00000000,网络地址为192.0.0.0
- 最大网络号也是最后一个可指派的网络号是223.255.255,即11011111 11111111 11111111,网络地址为223.255.255.0
- 可指派的网络数量为
2
(
24
?
3
)
2^{(24-3)}
2(24?3)
- 每个网络中可分配的IP地址数量为
2
8
2^8
28-2
4.几个特殊的地址
0.0.0.0只能作为源地址使用,表示在本网络上的本主机 127开头:本地环回地址 255.255.255.255只能作为目的地址使用,表示只在本网络进行传播
2.划分子网的IPv4地址
通过向主机号借位来划分子网,并且通过子网掩码来展示,接了多少位 注意:这个划分使得存在子网的网络地址和广播地址,这两类地址是不能指派的
3.无分类编址的IPv4地址
- CIDR计法:在IPv4地址后面加上斜线"/",在斜线后面协商网络前缀所占的比特数量
- 路由聚合(构造超网)
4.IPv4地址的应用规划
将一个给定的IPv4地址块划分出更小的IPv4地址块
1.定长的子网掩码
应用需求:将C类网络218.75.230.0划分成5个子网,每个网络子网上可分配地址数量不得少于各自需求
2
3
2^3
23=8>5>
2
2
2^2
22,所以从主机号中借用3位来作为子网号
2.变长的子网掩码
应用需求:从地址块218.75.230.0/24中取出5个地址块(1个/27,3个/28,1个/30)
4.IP数据报的发送和转发过程
直接交互
同一个网络之间的主机可以直接通信
间接交互
不同网络主机之间的通信需要通过路由器来中转
-
源主机如何知道目的主机是否与自己在同一个网络 将源主机的子网掩码与目的主机的IP地址相与,得到目的地址的网络地址,再对比源主机与目的主机的网络地址 -
在进行间接交互时,主机如何知道该交给哪个路由器进行转发 给本网络中的各主机指定一个路由器(由该路由器进行转发,也称为默认网关),指定的是路由器与该网络相连的接口的IP地址 -
路由器转发详情 主机会将IP数据报传送给默认网关,即指定的路由器,路由器收到IP数据报后,首先,检测IP数据报是否出错,若出错,则直接丢弃该IP数据报并通告源主机,若没有出错,则进行转发;之后,再根据IP数据报的目的地址在路由表中查找匹配的条目,若找到匹配的条目,则转发给条目中指示的下一跳,若找不到,则丢弃该IP数据报并通告源主机 -
路由器收到IP数据报后,假设没有出错,路由器如何知道从哪个接口转发出去 查找路由表,将IP数据报中的目的地址与每条目的地址掩码相与,若得到的结果是该条目中目的网络的地址,则在该条目的下一跳转发出去;若得到的结果不同,则查找下一条目
5.路由选择协议
1.静态路由配置
- 发送给某个网络
- 发送给因特网
配置默认路由0.0.0.0/0 - 发送给特定主机
配置特定主机路由:主机IP地址/32
导致的问题:
- 静态路由配置错误导致路由环路:数据报一直在某两个路由器之间来回转发
解决:IP数据报首部中的TTL字段,经过路由器TTL字段减一,只要TTL不为0,就可以直接转发,否则被丢弃 - 聚合了不存在的网络:
- 网络故障
2.路由选择协议
1.内部网关协议
1.路由信息协议(RIP)
- RIP要求自治系统AS内的每个路由器都要维护从它自己到AS内其他每个网络的距离记录.这一组距离称为"距离向量D-V"
- RIP使用跳数作为度量来衡量到达目的网络的距离:路由器到直连网络距离定义为1,非直连网络距离定义为所经过的路由器数加1
- 一条路径最多只能有15个路由器.距离为16时相当于不可达
- 只适用于小型网络
- RIP认为好的路由就是距离短的路由,不考虑带宽之类的东西
- 当到达同一目的的网络有多条距离相等的路由时,可以进行等价负载均衡
仅和相邻路由器交换信息,交换的是自己的路由表,进行的是周期性的交换
基本工作过程: 更新路由表规则:
路由器D更新路由表:获取相邻路由器C的路由表,将距离加一,并将下一跳改为C(意思是D能够通过C到达C路由表中的各网络),在与D的路由表做对比更新,对比的原则是:
- 到达目的网络相同并且为相同的下一跳,例如(N2,C),直接更新,D中变成N2, 5, C
- 有新网络,直接添加,例如在D的路由表中添加N3, 9, C
- 到达目的网络相同并且为不同的下一跳,新路由距离短,就更新条目,如将原来D中的N6, 8, F变为N6, 5, C
- 到达目的网络相同并且为不同的下一跳,距离相等,添加条目,等价负载均衡,例如N8, 4, E和N8, 4, C,距离一样,将N8, 4, C添加D中,进行等价负载均衡
- 到达目的网络相同并且为不同的下一跳,新路由距离大,不更新
RIP协议存在坏消息传的慢的问题,就是说不能第一时间知道某段链路出现了问题 这个3是由R1向R2发送虚假信息得到的
2.开放最短路径优先(OSPF)
-
为了克服RIP的缺点
- 开放表示OSPF表明OSPF协议不是某一厂商控制,而是公开发表的
- 最短路径优先是因为使用了最短路径算法SPF(不会产生回路)
-
基于链路状态
- 链路状态指的是本路由器与哪些路由器相邻,以及链路的代价(费用,距离,等等,由网络管理人员决定)
-
OSPF不限制网络规模,更新效率高,收敛速度快 -
首先,OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系 -
使用OSPF的每个路由都会产生链路状态通告LSA.LSA包括:直连网络的链路状态信息和邻居路由器的链路状态信息 -
LSA被封装在链路状态更新分组LSU中,并采用洪泛法发送(收到LSU的路由器,会接收该分组,并还会将分组通过自己的所有接口转发出去) -
每个路由器都有一个链路状态数据库LSDB,用于存储LSA,最终各路由器的LSDBN会达到一致 -
达到一致后,各路由器会根据LSDB基于最短路径优先SPF算法,构建出各自的路由表 -
五种分组类型: -
-
OSPF的基本工作过程 -
OSPF在多点接入网络(类似于总线型网络)中邻居关系建立
- 选举指定路由器DR和备用的指定路由器BDR
- 所有非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR只通过DR/BDR交换信息
-
适用更大规模的网络
2.外部网关协议
边界网关协议(EGP)
- 在不同自治系统内,度量路由的"代价"类型(距离,带宽,费用等等)可能不同,所以对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的
- 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等等),例如:
- 国内和国外
- 可不可经过
- BGP只是力求寻找一条能够到达目的网络且比较好的路由,并非要寻找一条最佳路由
- 基本原理
- 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人"
- 不同自治系统的BGP发言人要教皇路由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文以建立BGP会话
- 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站
- BGP发言人除了运行BGP外,还运行自己所在自治系统所使用的的内部网关协议,如RIP或OSPF
- BGP发言人交换网络可达性的信息(要经过某个网络所要经过的一系列自治系统)
- 当BGP发言人相互交换了网络可达性的信息后,个BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由.也就是构造出树形结构,不存在回路的自治系统连通图
- 四种报文:
3.各协议之间的封装关系
6.IPv4数据报的首部格式
标识,标志,片偏移 帧的数据载荷部分的长度受限于最大传输单元MTU(例如,以太网规定MTU值为1500字节) 所以,对于总长度大于1500的IP数据报,就需要将IP数据报分片 TTL避免形成路由环路,防止IP数据报在网络中永久兜圈
7.网际控制报文协议ICMP
- 为了更有效转发IP数据报和提高交互成功的机会,在网际层使用了网际控制报文协议
- 主机或路由器使用ICMP来发送差错报告报文和询问报文
- ICMP报文被封装在IP数据报中发送
1.报文类型
1.差错报告报文
- 终点不可达:当路由器或主机不能交互数据报时,就像源点发送终点不可达报文
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
- 时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1.若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文;另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
- 参数问题:当路由器或目的主机收到IP数据报后,根据首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文
- 改变路由:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
2.询问报文
- 回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文.一般用来测试目的站是否可达及了解其有关状态
- 时间戳请求和回答:ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间.在ICMP时间戳请求报文中有一个32位的字段,写入的整数代表从1900年1月1日起到当前时刻一共有多少秒.一般用来进行时钟同步和测量时间
2.ICMP应用举例
1.分组网间探测(Packet InterNet Groper, PING)
- 用来测试主机或路由器的连通性
- 应用层直接使用网际层的ICMP,没有通过运输层的TCP或UDP
- 使用ICMP回送请求和回答报文
2.跟踪路由(Traceroute)
实现原理:发送TTL=1的ICMP回送请求,第一个路由器收到后,TTL减1等于0,发送ICMP差错报告报文给H1,这样就知道了第一个路由器的IP了,以此类推,发送TTL=2,3,…的ICMP回送请求报文,就知道了路由的路由器的所有IP了
8.虚拟专用网VPN与网络地址转换NAT
1.虚拟专用网(Virtual Private Network)
利用公用的因特网作为本机构各专用网之间的通信载体,这种专用网就是VPN
在IPv4地址中有这些网络地址是不需要申请,只能私用的: 机制如图所示: 北京的部门A和上海的部门B分别分配两个私用网络,通过路由器与因特网相连,部门A将内部的IP数据报(源地址的部门A中的主机地址,目的地址为部门B中主机的地址)发送给部门B,内部IP数据报到R1时,R1会将整个内部IP数据报加密(确保不被因特网中的用户看懂),再加上一个新的首部(源地址为R1的IP地址,目的地址为R2的IP地址),新的IP数据报达到R2后,会进行解密,根据解密后得到的内部IP数据报转发到相应的主机
整个过程下来,就感觉因特网化身为一条链路一样,感觉就是在进行点对点传输,这样的技术也称为IP隧道技术
上述称为内联VPN,即同一机构不同内部网络所构成的虚拟专用网 还有外联VPN,即在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,并使用VPN软件建立起VPN隧道之后,就能访问专用网络中的资源了
2.网络地址转换(Network Address Translation)
简单来说就是,每个机构都能使用私有地址,即使私有地址相同也无所谓
机制:(注意源地址和目的地址的变化)
问题:如果NAT路由器具有N个全球IP地址,那么最多只能有N个内网主机能够同时和因特网上的主机通信 解决:.网络地址与端口号转换
外网主机不能首先向内网主机发起通信,因为可能在转换表中查不到记录,所以内网的主机不能直接充当因特网服务器
|