计算机网络-网络层
4.1网络层功能概述
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
数据报是比较长的数据,分组是将数据进行分割后的一个小片段。
功能:
- 路由选择与分组转发
选择最佳路径 - 异构网络互联
手机,电脑通过路由器来实现通信 - 拥塞控制
若所有节点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
两种方法:开环控制(静),闭环控制(动)
4.1.2数据交换方式
通过路由器来实现异构网络互联。
电路交换
例子:电话网络
电路交换的阶段:
建立连接->通信->释放连接
特点:多路复用,独占资源
优点:
- 通信时延小
- 有序传输
- 没有冲突
- 实时性强
缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差
- 无差错控制能力
报文交换
报文:源应用发送的信息整体。
报文是应用层的单元,报文到传输层,如果报文过大,传输层会进行分段的处理,报文再继续往下传。
交换设备接受到报文是会先存储,直到与下一个交换设备链路可用才转发。
优点:
- 无需建立连接(与电路交换的主要区别)
- 存储转发,动态分配线路
- 线路可靠性比较高(其他交换设备出问题,可以走其他的交换设备)
- 线路利用率较高(不占用一整条链路,只占用一段链路)
- 多目标服务
缺点:
- 有存储转发时延
- 报文大小不定,需要网络节点有较大的缓存空间
分组交换
分组:把大的数据块(->报文)分割成小的数据块。
优点:
- 无需建立连接
- 存储转发,动态分配线路
- 线路可靠性比较高(分组较短,出错几率减少)
- 线路利用率较高
- 相对于报文交换,存储管理更容易(交换设备缓存要求不高)
缺点:
- 有存储转发时延
- 需要传输额外的信息量(分组附加额外信息)
- 乱序到目的主机时,要对分组排序重组。
分组交换相对于报文交换,其传输是并行的,所需的时延更小。
三种交换方式比较总结
- 报文交换和分组交换都采用存储转发。
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换,电路交换传输时延最小。
- 从信道利用率来看,报文交换和分组交换优于电路交换,其中分组交换时延更小。
4.1.3数据报方式&虚电路方式
分组交换方式:数据报方式,虚电路方式
数据报方式为网络层提供无连接服务。
虚电路方式为网络层提供连接服务。
无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。
虚电路方式相当于把电路交换和报文交换的优势组合在一起。
几种传输单元名词辨析
数据报(internet在使用)
特点:
- 无连接
- 每个分组携带源和目的地址
- 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表->检索转发表->每个分组独立选路
虚电路
虚电路将数据报方式和电路交换方式结合,以发挥两者优点。
虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接?),路径上所有节点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。
两种方式对比:
数据报服务 | 虚电路服务 | |
---|---|---|
连接的建立 | 不要 | 必须有 |
目的地址 | 每个分组都有完整的目的地址 | 尽在建立连接阶段使用,之后每个分组使用长度较短的虚电路号 |
路由选择 | 每个分组独立地进行路由选择和转发 | 属于同一条虚电路的分组按照同一路由转发 |
分组顺序 | 不保证分组的有序到达 | 保证分组的有序到达 |
可靠性 | 不保证可靠通信,可靠性由用户主机来保证 | 可靠性由网络保证 |
对网络故障的适应性 | 出故障的结点丢失分组,其他分组路径选择发生变法,可正常传输 | 所有经过故障结点的虚电路均不能正常工作 |
差错处理和流量控制 | 由用户主机进行流量控制,不保证数据报的可靠性 | 可由分组交换网负责,也可由用户主机负责 |
第3节 IP
TCP/IP协议栈
4.3.1IP数据报格式
4.3.2IP数据报分片
最大传送单元MTU
链路层数据帧可封装数据的上限。
以太网的MTU是1500字节。
如果传送数据报长度超过某链路的MTU?
分片!
结合IP数据报首部固定部分来解释
例子:
单位总结:
总长度单位是1B
片偏移单位是8B
首部长度单位是4B
4.3.3IPv4地址
寻找主机:主机在哪个网络?在哪个主机?
由此提出了IP地址。
IP编制的历史阶段:
分类的IP地址->子网的划分->构成超网(无分类编址方法)
分类的IP地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。
IP地址 = <网络号>,<主机号>
IP地址由点分十进制标识。
特殊的ip地址
私有IP地址
网段个数:网络号有多少种分法(不是很理解C类为什么有256个,因为192.168.0.0~192.168.255.255,对三段是从0 ~255的网络号。)
路由器对目的地址是私有IP地址的数据报一律不转发。
可用网络号
A类:网络号全0和127是不可以使用的,全0对应本网络,127是换回测试,所以是
2
7
−
2
2^7-2
27−2。主机号中全0,全0指的是本主机连接的网络地址,全1指的是广播地址,所以是
2
2
4
−
2
2^24-2
224−2。
B类:网络号中,全0不可以使用。主机号全0和全1都不可使用,原因与A类主机号相同。
C类:网络号中,全0不可以使用。主机号全0和全1都不可使用,原因与A类主机号相同。
4.3.4网络地址转换NAT
网络的值转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。
NAT转换表:WAN端(外网端),LAN端(内网端)。
转换:专用网向外网传输时替换源IP地址和端口号。因特网向专用网传输时替换目的IP地址和端口号。
4.3.5子网划分与子网掩码
分类的IP地址的弱点:
- IP地址空间的利用率有时很低。
- 两级IP地址不够灵活。
某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
主机号至少留两位,因为全0和全1是不可指派的,所以不能只有一位。
子网号能否全0全1要看情况(CIDR)。
子网掩码
子网掩码:主机部分位数全0,网络号全1。(看例题发现网络号不是全1。。)
目的地址与子网掩码进行与操作,就可以找到相应的子网。
常见的子网掩码:
使用子网时分组的转发
路由表中:
- 目的网络地址
- 目的网络地址子网掩码
- 下一跳地址
4.3.6无分类编址CIDR
在划分子网技术上产生的技术。
无分类域间路由选择CIDR:
- 消除传统的A类,B类和C类地址以及划分子网的概念。
CIDR记法:IP地址后加上“/”,然后下上网络前缀的位数。e.g.128.14.32.0/20 - 融合子网地址与子网掩码,方便子网划分
CIDR吧网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。
构成超网
构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。
方法:将网络前缀缩短
目的:将路由器转发表中相同的下一跳地址的条目都整合成一条。
将17缩短为16。
最长前缀匹配
使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由,前缀越长,地址块越小,路由越具体。
e.g. answer:B
CIDR中网络号可以全0和全1,所以不用减去2,而主机号仍然不能全0和全1,要减去2。
4.3.7 ARP协议
发送数据的过程
ARP高速缓存有MAC3:
如果没有MAC3呢?
使用ARP协议。
那这个响应是怎么返回到IP1的,分组不是没有IP1吗?
以上情况都是在一个网络内部的。
两个网络情况:
此时ARP缓存是不存储外部网络的IP地址与MAC地址的映射,它只保存自己内部网络的映射。
先查询是否在网络中,不在发给默认网关。
发给的是网关IP6,此时发送给了网关。
点对点,PPP协议,MAC8为全1。
MAC5由ARP协议获得。(广播和单播)
ARP协议
由于在世纪网络的联络上传送数据帧时,最终必须使用MAC地址。
ARP协议:完成主机或路由器IP地址到MAC地址的映射。(解决下一条走哪的过程)
ARP协议使用过程:
检查ARP告诉缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10~20min更新一次)。
4.3.8DHCP协议
主机获得IP地址:
静态配置:类似机房电脑,位置是固定的,可以直接分配固定的ip地址,子网掩码,默认网关。
动态配置:DHCP服务器动态地分配地址。
DHCP协议
动态主机配置DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP提供即插即用联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
DHCPP协议工作流程:
- 主机广播DHCP发现报文
- DHCP服务器广播DHCP提供报文(多个DHCP服务器都发送一个IP地址)
- 主机广播DHCP请求报文(回复某一个DHCP服务器,其他服务器收回地址)
- DHCP服务器广播DHCP确认报文
4.3.9 ICMP协议
目的:为了更有效地转发IP数据报和提高交付成功的机会。
ICMP协议支持主机或路由器:
差错(或异常报告)、网络探询。=>发送特定ICMP报文
ICMP报文在数据部分。
ICMP差错报告报文
ICMP差错报告报文生成:
不应发送ICMP差错报文情况:
- 对ICMP差错报告报文不再发送ICMP差错报告报文。
- 对第一个分片的数据片的所有后续数据报片都不发送ICMP差错报文
- 对具有组播地址(一点到多点)的数据报都不发送ICMP差错报告报文。
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文
- 回送请求和回答报文
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP会送回答报文。测试目的站是否可达以及了解其相关状态。 - 时间戳请求和回答报文
请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。 - 掩码地址请求和回答报文(不在使用)
- 路由器询问和通告报文(不在使用)
ICMP的应用:
ping:测试量主机之间的连通性,使用了ICMP回送请求和回答报文。
Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
4.4 IPv6
原因:虽然有CIDR和NAT,但32位IPv4地址空间已分配殆尽。
回顾:CIDR和NAT只是在原来的地址上进一步的划分。
IPv6改进首部格式,实现快速处理/转发数据报的功能,支持Qos。
IPv6数据报格式:
IPv6和IPv4:
IPv6地址表示形式:
一般形式:冒号十六进制记法
压缩形式:
零压缩:一连串连续的0可以被一对冒号取代。
IPv6基本地址类型:
单播:一对一通信,可做源地址+目的地址
多播:一对多通信,可做目的地址
仁播:一对多的一个通信。(最近的一台)
IPv6向IPv4过渡策略:
4.5 第五节
主要讨论问题:和谁交换?交换什么?多久交换?
4.5.1 RIP协议与距离向量算法
路由选择协议分类回顾
路 由 选 择 协 议 { 内 部 网 关 协 议 I G P 一 个 A S 内 使 用 的 R I P 、 O S P F 外 部 网 关 协 议 E G P A S 之 间 使 用 的 B G P 路由选择协议\begin{cases} 内部网关协议IGP \quad 一个AS内使用的RIP、OSPF\\ 外部网关协议EGP \quad AS之间使用的BGP\end{cases} 路由选择协议{内部网关协议IGP一个AS内使用的RIP、OSPF外部网关协议EGPAS之间使用的BGP
RIP协议
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录。
距离:通常为“跳数”,级从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1.特别的,从一路由器到直接连接的网络距离为1,RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。
所以RIP只适合小互联网。
RIP协议交换
- 仅和相邻路由器交换信息。
- 路由器交换的信息是自己的路由表。
- 每30s交换一次路由信息,然后路由器根据信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。
路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
更新/距离向量算法
- 修改相邻路由器发来的RIP报文中所有表项。
对地址为X的相邻路由发来的RIP报文,修改此报文中的所有项目:把下一跳字段中的地址改为X,并把所有的“距离”字段+1。
- 对修改后的RIP报文中的每一个项目,进行以下步骤:
2.1 R1路由表中若没有Net3,则把该项目填入R1路由表
2.2 R1路由表中若有Net3,则查看下一跳路由器地址:
若下一跳是相同,则用收到的项目替换源路由表中的项目
若下一跳不是相同,原来距离比新的距离远则更新,否则不作处理。 - 若180s还没收到相邻路由器X的更新路由表,则把X记为不可达路由器,即把距离设置为16。
- 返回1
在2.2中下一跳是X,则无条件替换,无论新的距离是比原来的大还是比原来的小。
RIP协议的报文格式
RIP特点
当网络出现故障时,要经过比较长的时间才能将此消息传送到所有的路由器,“慢收敛”。
过程例子:
正常情况:
一直循环…
4.5.2 OSPF协议及链路状态算法
OSPF协议
开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的:“最短路径优先”是因为使用Dijkstre提出的最短路径算法SPF。
OSPF最主要的特征是使用了分布式的链路状态协议。
OSPF的特点:
- 使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。(和谁交换)
- 发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价–费用、距离、时延、带宽等)。(交换什么)
- 只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。(多久交换)
最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图。
链路状态路由算法
- 每个路由器发现它的邻居节点【HELLO问候分组】,并了解邻居节点的网络地址。
- 设置到它的每个邻居的成本度量metric
- 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中所有链路状态项目的摘要信息。
- 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】,请求自己没有的和比自己更新的信息。
- 收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
- 更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
主要一个路由器的链路状态发生变化:
5. 洪泛发送【LSU链路状态更新分组】进行更新
6. 更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
7. 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
OSPF的区域
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点分十进制表示)。
区域也不能太大,字啊一个区域内的路由器最好不超过200个。
分区域可以使每个区域内部的通信量减少。
OSPF分组
OSPF其他特点
- 每隔30min,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
- OSPF不存在坏消息传的慢的问题,它的收敛速度很快。