网络层
从该章节的课后习题看,该章节的重点在于:
-
ip数据报中首部检验和
-
ARP协议的使用次数
-
报文分片相关
- 分片后数据字段长度
- 片偏移字段
- MF标志
-
地址的匹配
-
子网划分
- 等长子网划分
- 变长子网划分
-
路由选择协议
1. 网络层的基本概念
1.1 网络层的功能
网络层向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺
1.2 网络层的服务
- 虚电路服务
- 数据报服务
2. 网络层协议IP
网络层协议IP的作用是使互相连起来的许多计算机网络能进行通信
2.1 虚拟互连网络
意思就是说,由路由器连接起来的各个不同的网络由于使用同样的网络层协议IP,所以在网络层看上去就像是同一个网络,所以干脆称为虚拟互连网络,其实可以结合概论那一章节所说的,互连网就是网络的网络。
2.2 IP地址
2.2.1 IP地址的组成和表示方式
表示方式:
- 二进制代码:32位的01串
- 点分十进制:32位01串中,每八位转化成十进制,在这4个十进制数间加上点,
- 比如 11111111 11111111 11111111 11111111 ——> 255.255.255.255
2.2.2 分类的IP地址
2.2.3 特殊的IP地址
2.2.4 无分类编制CIDR(ClassIess Inter-Domain Routing)
由于分类地址太死板了,灵活性不高,所以有了这种编制,
每个地址的网络号的位数不在是固定的几个数,如:8,16,24。
和分类IP相比,网络号的位数比较多样,然后对于网络号的开头几个位也没要求,所以要知道一个无分类地址的网络号的话,必须提供显式的网络号位数
例如 255.255.128.0 /17 表示网络号的位数位17,网络号为 (11111111 11111111 1)
2.2.5 地址掩码
地址掩码也是32位的01串,组成形式为: ip地址的网络位数个1补上剩余位数的0
例如:
192.168.1.32 /24 的掩码为:11111111 11111111 11111111 00000000,
点分十进制表示为 255.255.255.0。
用子网掩码可以判断一个ip地址的网络地址:
192.168.1.32 & 255.255.255.0 = 192.168.1.0
2.2.6 MAC地址和IP地址
其实我之前一直很疑惑,为什么有了IP地址,还需要MAC地址,平常我们用计算机的时候,谁会关系MAC地址啊。
后来看了[如果让你来设计网络](如果让你来设计网络 (qq.com))我才知道,MAC地址大有作用,IP地址配合MAC地址才是王道
2.2.6 地址解析协议ARP
就是通过IP地址找其对应的主机的MAC地址,并存储到本机的ARP缓存当中,缓存中有对应的MAC就不用再发ARP请求报文来请求得到MAC地址了。
要找同一局域网的ip使用一次ARP
不同局域网的ip使用APR的次数为: 经过路由器的个数 + 1(发送端主机使用一次ARP,路由器各发各使用一次。)
2.2.7 ip数据报的格式
固定部分20字节,可变部分40字节
相同的标识字段的值使分片后的各数据报片最后能正确地组装成为原来的数据报
每经过一个路由器TTL就减1,减到0还未找到目标主机就丢弃
书上说的反码算术运算求和规则:0和0相加为0,1和0相加为1,1和1相加为0且进位1,然后最高位产生的进位则在最低为加1
我觉得是:先进行二进制加运算,然后,把最终多出来的项和原本位数的项再进行加运算,直到不产生多余项为止
举个栗子:
源地址:32位,发送IP数据报的主机的地址
目的地址:32位,接受IP数据报的主机的地址
3. IP层转发路由的过程
总结一下:
1、在本网络找是否存在目标IP,存在的话,就直接交付,否则继续执行一下步骤
2、发给网关、网关一般是同一网段的路由器接口,然后让路由器在路由表里寻找路由,寻找的规则是最长前缀匹配(优先选择网络前缀最长的路由),所谓匹配就是把目标ip&当前路由所含有的掩码,然后和该路由包含的目标网段号进行比较,所有位都相同意味着匹配成功。(一般路由表会按照网络前缀长度降序排列,所以只要匹配上了,就符合最长前缀匹配的规则)。
3、找到匹配的路由后,就将发给路由表中的下一跳对应的路由器
4、没找到匹配的路由就发给默认路由对应的下一跳,不然报告出错。
因为一行一行的比较路由的时间复杂度太高了,所以可以使用二叉线索查找转发表,我认为就是把这些路由表存的ip地址给构造成01trie,然后降低时间复杂度,搜索的过程和trie搜索的过程差不多的道理
4. ICMP 网际控制报文协议
众所周知,网络层向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺。尽最大努力交互是不是意为着要更有效地转发IP数据报和提高交付成功地机会。
ICMP就是帮助实现这一目标的协议。
4.1 格式
4.2 种类
询问报文典型的两个应用:ping、tracert
5. 路由选择协议
5.1 自治区内部的内部网关路由协议
RIP:基于距离向量的路由选择协议(存了到目标网段的跳数)
特点:
- 只和邻站交换信息
- 交换的信息是当前路由的全部信息
- 按固定时间间隔交换信息
- 最多15跳
距离向量算法(即更新路由表的算法)
好处:简单
缺点:
-
坏消息传得慢
-
不易拓展
OSPF
特点:
- 洪泛法(bfs)向其他路由器发送该路由器的链路信息(比如自己和谁相连)
- 隔一段时间或者链路状态改变就再次发送链路信息
这样就是所有路由器都知道了这个自治区域里的所有连接(边),每个路由器根据最短路算法dijkstra建立到每个路由的最短路径树,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
ps:最短路径不一定指的就是跳数,可以是我们自己设置的值
路由选择上:可以为路径设置代价,用最短路算法求出最有路径,然后优先采用代价最小的路由。
好处:
- 灵活
- 负载均衡
- 可扩展性好
- 收敛时间短
五种分组类型:
- 问候分组:探测可达性
- 数据库描述分组:描述摘要信息
- 链路状态请求分组:请求发送链路状态
- 链路状态更新分组:发送链路状态
- 链路状态确定分组:确定收到链路状态
5.2 自治区之间的外部网络路由协议
BGP:基于路径向量的路由选择协议(存了到目标网段的路径,比如经过哪几个自治区)
特点:
- 不同区域的路由通过边界路由交换信息
- 路由器会将信息传递给对等体(区别于邻居)
- 路由表里记录路径(自治区路径)
- 会周期性地向对等体发出Keepalive报文,用来证实连接的有效性。
建立路由的方式:
接收路由 ——> 路由转换 ——> 寻找最佳路由(自治域内部的寻找) ——> 加入转发表
所谓热土豆就是在自治区内部使用内部网关协议RIP或者OSPF