计算机网络 | 第四章 网络层
1. 概述
注释:
数据报和分组的关系:分组是一段比较长的数据,将它进行切割成一段段之后就得到数据报
功能一就是让数据在路由器之间走最佳的路径
功能二就是让不同的设备(手机,电脑,平板等)都能正常连接
功能三见图中解释
开环控制就是在拥塞之前就提前设计解决
闭环控制就是在拥塞时自动调整解决问题
OSI 参考模型 | 各层次的传输单元 |
---|---|
应用层 | 报文 |
传输层 | 报文段 |
网络层 | IP 数据报,分组(如果 IP 数据报太大就切割成分组) |
数据链路层 | 帧 |
物理层 | 比特流 |
2. 数据交换方式
为什么要进行数据交换?因为每个节点之间都拉网线太麻烦了也不实际,所以通过大量交换设备互联进行数据交换
2.1 电路交换
常见的例子:打电话
注释:
链路支持多路复用(可参考数据链路层的 TDM 等)
特点是独占资源,因为两者建立了连接
2.2 报文交换
注释:报文发送的过程 1.源先根据报文加上 ip 地址,物理地址等,通过物理层发送 2.交换机收到报文之后,先进行存储,等待链路空闲之后进行转发,但是转发的路径不是固定的,是比较随机的 3.最后通过许多交换机最终到达目的地
2.3 分组交换
分组交换和报文交换基本相同,就是将报文切割之后再进行发送
2.4 分组交换和报文交换的具体计算对比
注释:是怎么计算的?
报文交换:一共三段,每段都需要 10000bit/1000bps=10s,三段就是 3x10=30s
分组交换:可以分为两段,一个是第一个数据开始发到最后一个数据从源发出,一段是最后一个数据到达目的地。第一段总时间是 10000bit/1000bps=10s,第二段总时间是(10/1000)*2=0.02s,所以总时间是 10.02s。
理解一下,这里就是报文交换的时候,由于报文没有分割,所以即使先到的数据也不能先发走,只能等到最后一段报文全部到了之后才能一起走,相对于分组交换明显拖慢了前面数据的速度,所以导致报文交换明显慢于分组交换
可以看到分组交换明显快于报文交换,所以我们通常使用分组交换
2.4.1 分组传输的两种传输方式-数据报与虚电路
综述
数据报
虚电路
3. 路由算法和路由协议概述
路由算法就是让路由知道收到报文之后下一步怎么走
AS 就是多个路由器之间构成的单独的小圈子,圈子内使用自己的协议,圈子和圈子之间用的是 BGP 协议
3.1 RIP 协议和距离向量算法
3.1.1 RIP 协议概述
通过交换信息构建路由表
3.1.2 如何建立路由表
3.1.3 RIP 协议报文格式
3.1.4 RIP 协议特点
就是来回更新路由表,错误信息被覆盖,导致直至达到距离上限强制错误时才可以得知出错
3.1.5 距离向量算法
注释:
为什么改地址?因为图中是从 x 得到的信息
为什么距离固定+1?因为路由器只从相邻路由器之间获取 RIP 报文,举例只会是 1
为什么下一跳是 x 就要替换?因为网络环境不断变化,可能这次某个节点挂掉,所以保持最新的
为什么下一跳不是 x 时有更新和不处理两种手段?因为这样可以提高效率,比原来快就换,比原来慢就保留原来的,也可以理解
3.2 OSPF 协议和链路状态算法
3.2.1 OSPF 协议概述
3.2.2 OSPF 的其他特点
为什么 OSPF 收敛速度快?因为它只是刷新一下链路状态,得知其是否连通,不需要和 RIP 一样进行对照,而是直接通过 Dijilstra 算法来自己算出路径
3.2.3 链路状态路由算法
了解即可
3.2.4 OSPF 区域
了解即可
3.2.5 OSPF 分组
了解即可
3.3 BGP 协议
3.3.1 BGP 协议简介
3.3.2 BGP 协议交换信息的过程
了解即可,只需要知道 BGP 交换协议里面交换的是一组路径向量
3.3.3 BGP 协议报文格式
BGP 是应用层协议
3.3.4 BGP 协议特点
3.3.5 BGP 的四种报文
3.4 三种路由协议的比较
4. IP 数据报
4.1 IP 数据报格式
注释:
名称 | 注释 | 大小 |
---|---|---|
版本 Version | ipv4 或者 ipv6 | 4 位 |
首部长度 IHL | 此处数值再乘以 4 才是真正大小,同时因为 IP 数据报固定长度为 20 字节,所以此处最小值为 5,即二进制的 0101 | 4 位 |
区分服务 DSCP + ECN | 希望获得哪种服务,用的比较少 | 8 位 |
总长度 Total Length | 首部+数据的长度,最大为 2^16-1=65535 | 16 位 |
标识 Identification | 用来表示是哪一个数据报的分片,不同的分片标识各不相同 | 8 位 |
标志 Flags | 用来表示是否分片和分片是否结束 | 3 位,但实际有用的只有后两位 |
片偏移 Fragment Offset | 用来标记分片之后,该分片在原来的数据报的位置,以 8 字节为单位 | 13 位 |
生存时间 Time To Live | 即 TTL,没经过一个路由器 TTL-1,0 时自动放弃,根据系统不同默认的 TTL 不同 | 8 位 |
协议 Protocol | 用来标记协议名的字段值,如 TCP,UDP,ICMP 等等 | 8 位 |
首部检验和 Header Checksum | 检验首部的字段是否出错,出错就丢弃此数据报 | |
源地址 Source IP Address | 发送方 ip 地址 | 32 位 |
目的地址 Destination IP Address | 接收方 ip 地址 | 32 位 |
可选字段 Options | 用来排错等安全检测 | 未知,可在 0-40 位之间 |
填充 | 将数据报对齐成 4 字节的整数倍,数值全部为 0 | 未知,根据可选字段来定 |
计算偏移量时记住是以 0 开始的就行,以每一篇最开始的除以 8 得到的数值就是偏移量
MF 和 DF 的定义见上图
5. IP
5.1 ipv4 地址
全球唯一的表示某一个主机或者路由器接口的编码
5.1.1 ip 地址分类
5.1.2 特殊 ip 地址
5.1.3 私有 ip 地址
解释一下
为什么 A 类最大是 126.xxx.xxx.xxx?
因为网络号最开始第一位是 0,一共八位,所以二进制表示位 0xxxxxxx,最大就是 2^7-1=127,但是因为 127.xxx.xxx.xxx 是特殊 ip 地址,所以将其去掉
为什么 B 类最大是 191.255.xxx.xxx?
因为网络号最开始第一位是 10,一共八位,所以二进制表示位 10xxxxxx,最大就是 10111111=191,最小就是 10000000=128,无特殊 ip 地址
为什么 C 类最大是 223.255.xxx.xxx?
因为网络号最开始第一位是 110,一共八位,所以二进制表示位 110xxxxx,最大就是 11011111=223,最小就是 10000000=192,无特殊 ip 地址
5.2 网络地址转换 NAT
注释:连接内网和外网,就是找个代理的用它的 ip 地址与外面收发数据
NAT 需要构建 NAT 转换表,既要存广域网(WAN,外网)也要存局域网(LAN,内网)的 ip 地址和端口号
5.3 子网划分和子网掩码
5.3.1 为什么需要子网划分
总结一下,就是 ip 不够用,所以需要额外整个子网扩展 ip
注释:
为什么子网好能全 0 或者全 1:因为 CIDR 编址(可见下一段)
为什么主机号不能全 0 或者全 1:因为全 0 代表本网络,全 1 代表广播分组
5.3.2 子网掩码
子网掩码就是用来和 ip 地址一起计算子网的地址的
方法就是讲子网掩码逐位写成二进制然后而原来 ip 地址进行与运算,就可以得到子网 ip 地址
因为 255 是 11111111,所以如果写着 255 的话,ip 地址和子网 ip 地址对应的地方的数值就相同
这道题可以看出来,即使子网掩码不同,相同 ip 地址对应的子网 ip 地址也可能相同
但是子网掩码不同,划分的子网数目不同
为什么划分的子网数目不同?或者说怎么算划分的子网位数目?
以 255.255.192.0 为例,255 是 11111111 即八个 1,192 是 11000000 即 2 个 1,一共是 82+2=18 个 1,一共有 32 位地址,所以剩余有 32-18=14 位
以 255.255.224.0 为例,255 是 11111111 即八个 1,224 是 11100000 即 3 个 1,一共是 82+3=19 个 1,一共有 32 位地址,所以剩余有 32-19=13 位
这道题先将 255.255.252.0 计算出一共有 8+8+6=22 位网络号位
所以就有 32-22=10 位主机号位
将 180.80.77.55 解析,可以知道在 77 部分某部分开始会用来表示主机号位
77 的二进制是 0100 1101,因为一共有 22 位网络号位,所以 010011 (此处分开) 01,从这个 01 开始是主机号位。
所以用来表示子网 ip 地址的应该是 180.80.76(010011 00).xxx PS 注意 76 括号内后两位二进制 00
但是本体是发布广播地址,所以主机号全部都要是 1
所以应该是 180.80.79(010011 11).255(11111111)注意 79 括号内后两位二进制 11
注释: 1.这里特定主机路由就是指找特定的处理这里这个 ip 地址的路由 2.默认路由会将这个数据报发给另一个路由,直至找到对应的路由,或者 TTL 耗尽被丢弃
5.4 无分类编制 CIDR
使用 CIDR 可以聚合网络
如图,通过缩短前缀,R1 和 R2 就可以合并在 206.1.0.0/16 的子网下
但是这样转发表之中就会有多个匹配结果,所以我们使用最长前缀匹配
最长前缀匹配就是在计算后符合同一子网的时候,选前缀越长的
这道题选 B
因为本网络是 192.168.5.0/24,就是 192.168.5.(0000 0000)/24,将 248 写成二进制是 11111 000,有五个 1,所以前五位都可以作为子网的编号,剩下的三位就是用来分配子网内剩余的地址了,因为不能全 0 或者全 1,所以还要减 2
5.5 ARP 协议
5.6 DHCP 协议
5.7 ICMP 协议
5.7.1 ICMP 协议概述
ICMP,IGMP 处于网络层和传输层之间,就是为了更好地转发 ip 数据报和提高交互成功的几率
5.7.2 ICMP 差错报告报文
ICMP 差错报告报文如何与 IP 数据报结合
五种 ICMP 差错报文
其中源点抑制已废弃不用
四种不发送 ICMP 差错报文的情况
注释:组播是指由一点到多点,但不是无脑发到所有点,无脑发到所有点的是广播,组播有筛选条件
5.7.3 ICMP 询问报文
四种 ICMP 询问报文
后两种是掩码地址请求和回答报文,路由器询问和通告报文,这两个已经废弃不再使用
5.7.4 ICMP 的应用
1.ping 命令:测试两个主机之间连通性,使用了ICMP 回送请求和回答报文
2.traceroute 命令:跟踪一个分组从原点到终点的路径,使用了ICMP 时间超过差错报告报文
traceroute 命令讲解
6. IPV6
6.1 为什么会有 IPV6
就是 IPV4 地址用完了,从根本上增加 ip 地址数目,之前讲的 NAT 和 CIDR 也只是在 IPV4 的基础上扩展了 IPV4 地址数目,治标不治本
6.2 IPV6 地址表示形式
6.3 IPV6 数据报格式
名称 | 作用 | 位数 |
---|---|---|
版本 Version | 知名协议版本,此处因为是 ipv6 所以总是 6 | 4 位 |
优先级 Traffic Class | 又来区分数据报的类型和优先级 | 8 位 |
流标签 Flow Label | 和 ipv4 标识某个数据报分片不同,这是对于一整个数据报流的标记 | 19 位 |
有效载荷长度 Payload Length | 指的是扩展首部+数据部分的大小,和 ipv4 的总长度和首部长度都不同,ipv6 的首部长度是固定的 40 字节 | 16 位 |
下一个首部 Next Header | 基本首部的下一个首部指的是有效载荷里标记的的扩展首部,有效载荷里的扩展首部再指向有效载荷里标记的的扩展首部,直至最后指向数据 | 8 位 |
跳数限制 Hop Limit | 基本相当于 ipv4 当中的 TTL,每到一个路由器-1.减到 0 时丢弃 | 7 位 |
源地址 Source Address | 发送方 ipv6 地址 | 128 位 |
目标地址 Destination Address | 接收方 ipv6 地址 | 128 位 |
6.4 IPV4 和 IPV6 的区别
6.5 IPV6 基本地址类型
名称 | 作用 | 要求 |
---|---|---|
单播 | 一对一通信 | 可做源地址,目的地址 |
多播 | 一对多通信,以前的广播地址当做覆盖所有主机的多播 | 可做目的地址 |
任播 | 一对多当中的一个通信,看似一对多,实则一对一 | 可做目的地址 |
6.6 IPV4 和 IPV6 之间的过渡
如果是 ipv6 的数据报到了 ipv4,就用 ipv4 重新封装,把 ipv6 数据报前面加上 ipv4 伪装成 ipv4 数据报继续传输,直至到了 ipv6 路由再解开 ipv4 伪装
7. IP 组播(多播)
7.1 什么是组播
单播只能一对一,广播必须一对全部,组播就可以是一对全部中的一部分
辅助理解:单播所占资源多
组播明显减轻了压力
7.2 IP 组播地址
7.3 硬件组播
就像全 F 的 mac 地址代表广播一样,00-10-5E 打头的 MAC 地址就代表组播
7 为什么最大是 00-10-5E-7F-FF-FF?因为只有最后 23 位决定
7.4 IGMP 协议与组播路由选择协议
7.4.1 IGMP 协议
注释:IGMP 只能知道有没有组播组成员,对有几个组播组成员,成员在哪个地方都不知道
7.4.2 组播路由选择协议
有了这个,成员可以自行找到转发组,自行决定参加哪个组播(就像电视机选台一样)
8. 移动 IP
移动 IP不等于动态 IP(DHCP 获得的)
移动 IP 的可以让用户因为地理原因等等,即使不在内网也可以访问内网的东西
8.1 移动 IP 的相关术语
8.2 移动 IP 通信过程
9. 网络层设备
9.1 路由器
9.1.1 路由器的构造
9.1.2 路由器的输入输出端口构造
9.1.3 集线器,网桥,路由表几层设备比较
9.1.4 路由器的路由表和转发表
这里实际上就是对前面知识的复习了
10. 本章思维导图
本章常用名词中英文对照
Forwarding table 转发表
Virtual-circuit networks 虚电路网络
Datagram networks 数据报网络
Signaling message 信令报文
Active queue management 主动队列管理
Head-of-the-line 队头
Classless interdomain routing (CIDR) 无类域间路由
Plug-and-play 即插即用
Anycast 任播
Interior gateway protocols 内部网关协议
Routing information Protocol 路由信息协议(RIP)
Open shortest Path First OSPF 开放最短路径优先
Area border routers 区域边界路由器
Circuit Switching 电路转换
Packet Switching 分组交换
掘金:前端 LeBron
知乎:前端 LeBron
持续分享技术博文,关注微信公众号 👇🏻