title: 计算机网络——第四章 网络层
tag: 计算机网络
category: 计算机网络
date: 2018-06-08
计算机网络——第四章 网络层
网络层提供的两种服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QG9Vr0Gf-1586740440291)(https://upload-images.jianshu.io/upload_images/4061843-7941af59033f70b5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
网际协议IP
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xnOBW9Wf-1586740440292)(https://upload-images.jianshu.io/upload_images/4061843-2e5169076ee137cd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
ARP:地址解析协议
RARP:逆地址解析协议,与ARP配合使用
ICMP:网际控制报文协议
IGMP:网际组管理协议
分类的IP地址
唯一的标识,32位,点分十进制表示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uG2eAwAe-1586740440293)(https://upload-images.jianshu.io/upload_images/4061843-40c8c11ff88955f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
-
A类地址:
1、单播地址,前8位为网络id,第一位0固定,后24位为主机id,
2、可指派网络数为126(2^7-2)个,全0表示本网络,是保留地址,全1(127)是本地环回地址,作为本地软件环回测试,即127不是一个网络地址
3、主机号占3个字节(24位),最大主机数2^24-2,除去主机号为全0和全1的两个,全0的主机号表示本主机所连接的单个网络地址,全1表示该网络上的所有主机
4、地址空间有2^31个,占所有的50% -
B类地址:
1、单播地址,前16位为网络id,前两位10固定,后16位为主机id
2、只剩14位,所以不会出现全1或全0的情况,
3、B类最小的地址是128.1.0.0,可指派网络数为2^14-1个,但是128.0.0.0不指派
4、主机号占2个字节(16位),最大主机数是2^16-2,除去主机号为全0和全1的两个
5、地址空间有2^30个,占所有的25% -
C类地址:
1、单播地址,前24位为网络id,前三位110固定,后8位为主机id
2、可指派网络数为2^21-1,其中192.0.0.0不指派,最小网络地址为192.0.1.0
3、主机号占一个字节(8位),最大主机数是2^8-2,除去主机号为全0和全1的两个
4、地址空间2^29个,占所有的12.5% -
D类地址:
多播地址,前四位1110固定 -
E类地址:
保留地址,前四位1111固定
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjOQFcnG-1586740440296)(https://upload-images.jianshu.io/upload_images/4061843-20aa4aff1db9ced2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- IP的特点
(1)IP地址由网络号和主机号两部分组成,路由器仅根据目的主机所连的网络号来转发分组
(2)IP地址是标志一台主机(或路由器)和一条链路的接口,当处于不同的网络时,应该有不同的网络号,一个主机可以同时具备多个网络号(多归属主机)
(3)一个网络是指具有相同的网络号net-id的主机的集合,因此用转发器或网桥连接起来的若干个局域网仍为一个网络,不同网络号的网络或局域网必须使用路由器连接,也就是说网络的划分根据网络号,而且必须是使用路由器进行连接
IP地址和硬件地址
IP地址:网络层和以上各层使用的地址,是逻辑地址,放在IP数据报的首部
硬件地址:数据链路层和物理层使用的地址,放在MAC帧的首部
地址解析协议ARP
在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,每一个映射地址有一定的生存时间,定期更新
ARP是解决同一个局域网上的主机或路由器的IP到硬件地址映射的问题,
(1)ARP进程在本局域网上广播一个ARP请求分组,请求分组中包含自己的硬件地址和IP地址
(2)本局域网上的所有主机运行的ARP进程都会收到
(3)如果某个主机的IP地址和ARP请求分组中要查询的IP一致,就会收下这个ARP,在自己的ARP高速缓存中写入源主机的IP到硬件地址的映射,并向源主机发送ARP响应分组(单播),同时在这个响应分组中写入自己的硬件地址
(4)源主机收到ARP响应分组后,在ARP高速缓存中写入该主机的IP到硬件地址的映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSuL7uJP-1586740440299)(https://upload-images.jianshu.io/upload_images/4061843-1a6d0b557b8789ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
ARP的四种典型情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OfGg9ns8-1586740440300)(https://upload-images.jianshu.io/upload_images/4061843-a7273b1467cf7f87.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
(1)发送方是主机(H1),要把IP数据报发送到同一个网络上的另一个主机(H2)。这时H1发送ARP请求分组(在网1上广播),找到H2的硬件地址
(2)发送方是主机(H1),要把IP数据报发送到另一个网络的主机(H3或H4)。这时H1发送ARP请求分组(在网1上广播),找到网1上的路由器R1的硬件地址。剩下的工作交由R1完成(3)、(4)
(3)发送方是路由器(R1),要把IP数据报发送给同一网络(网2)上的主机(H3)。这时R1发送ARP请求分组(在网2上广播),找到H3的硬件地址
(4)发送方是路由器(R1),要把IP数据报转发到网3的一个主机(H4)。这时R1发送ARP请求分组(在网2上广播),找到R2的硬件地址,剩下的由R2完成
IP数据报的格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7nD0lbx-1586740440301)(https://upload-images.jianshu.io/upload_images/4061843-ad708055fcdc594e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 版本:占4位,IP协议的版本,通信双方版本必须一致,IPv4或IPv6
- 首部长度:4位,可表示的最大十进制数是15,首部长度所表示数的单位是32位字,IP首部的固定长度为20字节,所以首部长度字段的最小值为5(0101)。当首部长度为最大值15(1111)时,表明首部长度达到最大值15个32位字长,即60字节。当首部长度不是4字节的整数倍时开始,必须使用最后的字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍开始
- 区分服务:8位,用来获得更好的服务
- 总长度:16位,首部和数据之和的长度,单位为字节。因此数据报的最大长度为2^16-1=65535字节
- 标识:16位,计数器,用于分片后组装成原来的数据报
- 标致:3位,目前只有2位有意义
1、MF:最低位,为1时表示后面还有分片,为0时表示最后一个
2、DF:不能分片,DF=0时才允许分片 - 片偏移:13位,较长的分组在分片后,某片在原分组中的相对位置,以8个字节为偏移单位,也就是说每个分片的长度一定是8字节的整数倍
- 生存时间:8位,TTL,数据报在网络中的寿命
- 协议:8位,使用何种协议
- 首部检验和:16位,只检验数据报的首部,不检验数据部分
- 源地址:32位
- 目的地址:32位
分组转发
算法:
(1)从数据报的首部提取目的主机的IP地址D,得到目的网络地址N
(2)若N是与此路由器直接相连的某个网络地址,则直接交付,不需要经过其他的路由器,直接给目的主机。否则间接交付,执行(3)
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中指明的下一跳路由器,否则执行(4)
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中指明的下一跳路由器,否则执行(5)
(5)若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由,否则执行(6)
(6)报告转发分组出错
划分子网和构造超网
划分子网
-
划分
从网络的主机号借用若干位作为子网号(subnet-id),不改变原来的网络号,将两级IP地址在本单位内部变为三级IP地址:网络号、子网号、主机号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPK0XHIP-1586740440303)(https://upload-images.jianshu.io/upload_images/4061843-9a079a664b749fc2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)] -
子网掩码
把子网掩码和IP地址进行逐位的“与运算”就能得出网络地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H77tTUTd-1586740440305)(https://upload-images.jianshu.io/upload_images/4061843-94a875a0edeb1a60.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
默认子网掩码:
1、A类:255.0.0.0或0xFF000000
2、B类:255.255.0.0或0xFFFF0000
3、C类:255.255.255.0或0xFFFFFF00
常见划分(B类)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKp1Q6TY-1586740440307)(https://upload-images.jianshu.io/upload_images/4061843-6610fa6f6232f1ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 使用子网时的分组转发
(1)获取目的IP地址D
(2)判断是否为直接交付。对路由器直接相连的网络进行逐个检查:用个网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付,否则间接交付,执行(3)
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表指明的下一跳路由器,否则执行(4)
(4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址),用其中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给指明的下一跳路由器,否则执行(5)
(5)若路由表中有一个默认路由,则把数据报传送给指明的默认路由器,否则执行(6)
(6)报告转发分组出错
无分类编址CIDR(构造超网)
特点:
(1)CIDR消除了传统的A类、B类、C类地址及划分子网的概念
IP地址={<网络前缀>,<主机号>},还可以用斜线记法,“\”后面的数字就是地址掩码中1的个数
(2)CIDR把网络前缀都相同的连续IP地址组成一个CIDR地址块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlAzaTGW-1586740440311)(https://upload-images.jianshu.io/upload_images/4061843-b5095ecb1c5ec9ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GbsSxE4Q-1586740440311)(https://upload-images.jianshu.io/upload_images/4061843-8c656afe34a7645e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
最长前缀匹配:
匹配结果中选取网络前缀最长的路由
二叉线索查找路由表
网际控制报文协议ICMP
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7byZ21gQ-1586740440313)(https://upload-images.jianshu.io/upload_images/4061843-8b7ce032e26ddd01.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pfBCbVvb-1586740440314)(https://upload-images.jianshu.io/upload_images/4061843-e59aac4bc6d804cf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- ICMP差错报告报文
(1)终点不可达:当路由器或主机不能交付数据报时就像源点发送终点不可达报文
(2)时间超时:当路由器收到生存时间为0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片丢弃,并向源点发送时间超过报文
(3)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文
(4)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
不应发送ICMP差错报文的情况:
1、对ICMP差错报告报文,不再发送ICMP差错报告报文(不对自身发送)
2、对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文(对一个IP数据报只发一次ICMP差错报告报文)
3、对具有多播地址的数据报,都不发送
4、对具有特殊地址的数据报,不发送
-
ICMP询问报文
(1)回送请求和回答:ICMP回送请求报文是主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。用来测试是否可达及了解其有关状态
(2)时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。可用于时钟同步和时间测量 -
ICMP应用举例
1、PING:从应用层直接到ICMP,没有通过TCP或UDP,使用了ICMP回送请求与回送回答报文
2、traceroute
路由选择协议
内部网关协议IGP
即在一个自治系统内部使用的路由选择协议
- RIP
分布式的基于距离向量的路由选择协议,距离也叫“跳数”,每经过一个路由器,跳数+1,距离+1,RIP允许一条路径最多经过15个路由器,距离=16为不可达
特点:
1、仅和相邻路由器交换信息
2、交换的信息是当前路由器的路由表
3、固定时间间隔交换信息
距离向量算法:
(1)对地址为X的相邻路由发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”的值都+1(解释1),每一个项目都有三个关键数据:到目的网络,距离是d,下一跳路由器是X
(2)对修改后的RIP报文中的每一个项目,进行以下步骤:
若原来的路由表中没有目的网络N,则把该项目添加到路由表中(解释2);否则(没有N,查看下一跳的路由器)若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目(解释3),否则(这个项目是到目的网络N,但下一跳不是X)若受到的项目中的距离d小于路由表中的距离,则进行更新(解释4),否则什么也不做
(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器(距离设置为16)
(4)返回
查看目的网络,比较下一跳,再决定是否更新距离
报文格式:
- 首部:4个字节,1表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文,后面的必为0是为了4字节的对齐
- 路由部分由若干路由信息,每个路由信息需要用20个字节
- 路由信息:
1、地址标识符(地址类别):使用的地址协议,2表示IP地址
2、路由标记:填入自治系统好ASN
3、网络地址:
4、子网掩码:
5、下一跳路由器地址:
7、到此网络的距离 - 一个RIP报文最多包括25个路由,最大长度4+20*5=504字节
- RIP2具有简单的鉴别功能
- OSPF
开放最短路径优先,分布式的链路状态协议
特点:
(1)向本自治系统中所有路由器发送信息,洪泛法
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态
(3)只有当链路状态发生变化时,才再次洪泛更新
(4)允许管理员给每条路由指派不同的代价
(5)如果同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路由(负载平衡)
(6)所有OSPF交换的分组都具有鉴别功能
(7)支持可变长度的子网划分和无类的编址CIDR
(8)OSPF让每一个链路状态带上一个32位序号,表示链路状态的新旧程度,序号越大越新
OSPF分组:
不用UDP而是直接用IP数据报发送(IP协议字段89)
(1)版本:当前2
(2)类型:可以是5中类型分组中的一种
(3)分组长度:包含首部在内的分组长度,字节为单位
(4)路由标识符:标志发送该分组的路由器的接口的IP地址
(5)区域标识符:分组属于的区域的标识符
(6)检验和:检验分组的差错
(7)鉴别类型:0不用口令,1口令
(8)鉴别:
五种分组类型:
(1)类型1:问候分组(Hello),用来发现和维持邻站的可达性
(2)类型2:数据库描述分组(Database Description),向邻站给出自己的链路状态数据库中所有链路状态项目的摘要信息
(3)类型3:链路状态请求分组(Link State Request),向对方请求发送某些链路状态项目的详细信息
(4)类型4:链路状态更新分组(Link State Update),用洪泛法对全网更新链路状态
(5)类型5:链路状态确认分组(Link State Acknowledgement),对链路更新分组的确认
支持的网络类型:
(1)点对点,T1、SONET、DS-3
(2)Broadcast
(3)NBMA:ATM、X.25、FR
(4)虚链路
外部网关协议EGP
源主机和目的主机处于不同的自治系统中,跨越自治系统
- BGP
边界网关协议,采用了路径向量路由选择协议,树形结构,TCP连接
特点:
(1)BGP协议交换路由信息的结点数量级是自治系统数的量级
(2)每一个AS中BGP发言人很少
(3)支持CIDR
(4)刚运行,BGP的邻站是交换整个BGP路由表
4种报文:
(1)OPEN报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化
(2)UPDATE报文,用来通告某一路由信息,以及列出要撤销的多条路由
(3)KEEPALIVE报文,用来周期性的证实邻站的连通性,19字节长
(4)NOTIFICATION报文,用来发送检测到的差错
报文格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcDMhi8u-1586740440318)(https://upload-images.jianshu.io/upload_images/4061843-bf28c98957b7c11e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
通用首部:19字节
1、标记:16字节,用来鉴别收到的BGP,不使用鉴别时,全1
2、长度:包括首部在内的整个BGP报文以字节为单位的长度,最小值为19,最大值4096
3、类型字段:1~4
路由器的构成
转发分组,具有多个输入端口和多个输出端口的专用计算机
-
路由选择:按照分布式算法,动态的改变所选择的路由
-
分组转发:根据转发表转发
-
交换结构:
-
输入端口:
若助理分组的速率赶不上分组进入队列的速率,队列的存储空间会减小到0,当没有存储空间时,后面的分组就会被丢弃,同时告诉发送方减小发送速率
-
输出端口: