《计算机网络》笔记——第四章 网络层
第4章 网络层
网络层提供的两种服务
第一种: 虚电路服务
第二种: 数据报服务
虚电路服务面向连接,由网络提供可靠传输的服务.
数据报服务无连接,不提供服务质量的承诺,可靠性由网络主机中的运输层负责.
为何这样选择?
计算机网络与电信网络不同,计算机网络的端系统是有智能的计算机,计算机有很强的差错处理能力,因此把可靠传输的责任交给端系统是一个正确的决定.它使网络造价大大降低,运行方式灵活,能够适应多种应用.
网际协议IP
网际协议IP又称为Kahn-Cerf协议.
虚拟互连网络
虚拟互联网络(internet)
物理网络的异构性仍然是客观存在的,但是利用IP协议就可以使这些网络在网络层上看起来好象是一个统一的网络.
互联网(Internet)就是一种虚拟互联网络.
分类的IP地址
IP地址与硬件地址
这个例子很好的表示了IP地址和物理地址在分组传输过程中的区别.
- IP层抽象的互联网上只能看到IP数据报,IP数据报的源地址和目的地址始终不变.:face
- 路由器只根据目的站的IP地址的网络号进行路由选择.
- 在局域网的链路层,只能看见MAC帧,MAC帧在不同局域网传输过程中的源地址和目的地址一直在改变.
所以这体现了IP层上下的区别,IP层只要提供目的地址就好了,但下面的数据链路层要考虑的就多了😅
- IP层抽象的互联网屏蔽了下层复杂的细节.
地址解析协议ARP
ARP高速缓存(ARP cache)是主机用来存储本局域网的各主机和路由器的IP地址到硬件地址的映射表.
如果ARP高速缓存中没有想要的映射,则会发生上图的过程:
-
主机A欲向主机B发送IP数据报.但是ARP缓存中没有找到主机B的IP地址到物理地址的映射.
-
A广播一个ARP请求分组,B接收到请求后,发现请求IP地址正是自己,则单播一个ARP响应分组给发送端,其他不相关的主机则忽略这个请求.
-
A收到B的响应分组后,就在其ARP高速缓存中写入B的IP地址到硬件地址的映射.
-
A根据B的硬件地址,装填MAC帧,传递给物理层运输.
ARP缓存中的每个映射都有生存时间,因为IP地址和硬件地址对应关系有可能改变,比如,主机更换了网络适配器,那么硬件地址就变了.
IP数据报的格式
IP层转发分组的流程
直接交付代表怎样的过程?
将目的主机地址通过ARP转换为物理地址,把数据报封装成MAC帧,发送此帧.
IP数据报中没有指明"下一跳路由器的IP地址",那么待转发的数据报是怎么找到下一跳路由器的呢?
路由器就像一个指挥,每到下一跳地址(遇见了一个路由器),路由器就会根据路由表告知数据报下一跳去哪,直到找到目的地址
上图是路由器的分组转发算法.
划分子网和构造超网
划分子网
使用子网时分组的转发
区别就是现在路由表新增一栏子网掩码.
- 目的地址和该行的子网掩码进行按位与操作
- 比对目的网络地址.
无分类编址CIDR(构造超网)
CIDR(Classless Inter-Domain Routing)
无分类,或者再细分?
区别:
原来只有ABC类,在分配时,只能在8,16,24位中选择.
CIDR取消了分类,在分配时可以选择任意位数作为地址块.
斜线记法:
CIDR表示IP地址的方法是128.14.35.7/20.
20表示网络前缀的长度,20位之后都是主机号.
优点:
这种编制方式符合直觉并且简单,之前ABC类地址分类本就是一种限制极大的设计.
构造超网就是减轻了每一层的负担,但增加了层数,举例来说,256=4x64,这样便减轻了上层负担.
最长前缀匹配
举例来说,如果从A国发往B国某省某市一条信息,显而易见,如果国省市都出现在A国的路由表中,最终将有多个匹配结果,所以理想情况下应当选择最长前缀匹配,直接发往B市,减少路由器中转次数.
CIDR的遗憾就是它是后来者,如果IP地址按照地理位置分配,那就可以大大压缩路由器中的项目数,比如国家最上层路由器的路由表中只需要存所有国家的IP前缀即可,但现实是一个国家的IP前缀并不统一.
如何进行最长前缀匹配也是一个关键的问题
常用的是二叉线索(binary trie).
网际控制报文协议ICMP
ICMP(Internet Control Message Protocol)
ICMP的应用
-
ping
ping(Packet InterNet Groper)
PING使用的正是ICMP回送(Echo)请求与回送回答报文.
PING是应用层直接使用网络层ICMP的一个例子,它没有通过运输层的TCP或UDP.
突然就懂了ping的原理,好神奇.
-
traceroute
通过TTL实现,发送一连串的IP数据报,TTL从1开始递增,所以途径的每个节点都会给发送端发送一个ICMP时间超过差错报告报文,而目的主机会发送ICMP终点不可达差错报告报文.
这样我们就得到了从主机到目的主机的路由路径.
但是实测中发现baidu和sina都无法得到目的主机发回的报文,具体原因可以参考能ping通traceroute不通
但是我想到一个方法🤓
既然ping命令可以设置ttl(生存时间)
那我只要找到能ping通的最小ttl,不就知道经过了多少路由器吗🤔
归纳:
那么如果路径上有1个路由器,最小ttl是2.
A---->路由器(ttl-1)---->B
现在最小ttl是18,可以得知路径上有17个路由器🤓
验证:
参考这个文章之后,能ping通traceroute不通
得知linux的traceroute
默认使用udp,并不是我们刚才所学的原理,可以用--icmp
参数指定它使用icmp报文.
发现路径上的路由器确实是17个.
GPT对这些IP地址的解释:
路由器 | 作用 | 地址类型 | 网络范围 |
---|---|---|---|
192.168.1.1 |
本地网关(家庭/办公路由器) | 私有 IP | 局域网(LAN) |
10.30.0.1 |
ISP 内部网络设备 | 私有 IP | 运营商内部网络 |
111.45.201.57 等 |
公网路由器 | 公网 IP | 互联网骨干网 |
总之验证成立!
互联网的路由选择协议
路由选择协议的两大类:
-
内部网关协议IGP(Interior Gateway Protocol).
- RIP和OSPF等
-
外部网关协议EGP(External Gateway Protocol).
- BGP
网关是RFC(Request for Comments)原来使用的名字,现在已经改为路由器,这两个意思相同
内部网关协议RIP
RIP(Routing Infomation Protocol),路由信息协议
是一种分布式的基于距离向量的路由选择协议.
算法设计缺陷:好消息传播得快,坏消息传播得慢
首先我发送了一个好消息
然后网1突然坏了,我又发送了一个坏消息
但是在这之前,我收到了好消息的回复,于是我真的认为网1是可达的(鱼的记忆),然后又把这个好消息告诉了对方
对方刚刚收到最开始的坏消息,随后又收到了这个好消息,也高兴地认为网1可达
于是二人就一直循环传递这个好消息,直到距离超过15,双方才知道网1不可达.
内部网关协议OSPF
开放最短路径优先(Open Shortest Path First).
洪泛法(flooding):路由器通过所有输出端口向相邻的路由器发送信息,而每个相邻路由器又再将此信息发往其所有的相邻路由器(但不包括刚刚发来信息的那个路由器).
OSPF将一个自治系统划分为若干个区域(area).
OSPF直接用IP数据报传送.
OSPF的五种分组类型
- 问候(Hello)分组,发现和维持邻站的可达性.
- 数据库描述(Database Description)分组
- 链路状态请求(Link State Request)分组
- 链路状态更新(Link State Update)分组,洪泛法更新.
- 链路状态确认(Link State Acknowledgment)分组.
可靠的洪泛法在收到更新分组后要发送确认(收到重复的更新分组只需要发送一次确认).
外部网关协议BGP
BGP并非要寻找一条最佳路由,而是寻找一条能够到达目的网络且比较好的路由.
BGP使用了路径向量(path vector)路由选择协议.
每个自治系统都至少有一个路由器作为该自治系统的"BGP发言人(speaker)".
路由器的构成
每个输入端口都有复制的转发表,称为“影子副本”(shadow copy)
交换方式
IPv6
冒号十六进制记法:
四个一组,一共八组.
零压缩:
连续的0组可以压缩为两个冒号(:😃
比如FF05:0:0:0:0:0:0:B3压缩为FF05::B3
只能使用一次零压缩,因为使用了多次的话,就还原不了了🤓
从IPv4向IPv6过渡
- 双协议栈
通过DNS查询对方使用IPv4还是IPv6,在传输过程中,可以使用首部转换方法将IPv6转换为IPv4,但是会损失某些字段.
- 隧道技术
用IPv4包装IPv6.
ICMPv6
用来反馈差错信息.
地址解析协议ARP和网际组管理协议IGMP的功能都合并到了ICMPv6.
IP多播
局域网硬件多播
网际组管理协议IGMP和多播路由选择协议
网际组管理协议IGMP
IGMP使用范围是本地.
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组.
多播路由选择协议
- 洪泛与剪除
- 隧道技术
-
基于核心的发现技术
每个多播组指定一个核心(core)路由器,给出它的IP单播地址,然后使用隧道技术在路由器和核心之间传递多播数据报,多播组内部使用转发树.
类似于1.2方法的融合.能适应各种大小的多播组.
虚拟专用网VPN和网络地址转换NAT
虚拟专用网VPN
VPN(Virtual Private Network)
RFC 1918 指明了一些专用地址(private address).
在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发.
以下是三个专用地址块:
- 10.0.0.0到10.255.255.255 (或记为10.0.0.0/8)
- 172.16.0.0到172.31.255.255 (或记为172.16.0.0/12)
- 192.168.0.0到192.168.255.255 (或记为192.168.0.0/16)
采用这样的专用IP地址的互联网络称为专用互联网或本地互联网
网络地址转换NAT
NAT(Network Address Translation)
使用端口号的NAT也叫作网络地址与端口号转换NAPT(Network Address and Port Translation)
多协议标记交换MPLS
MPLS(MultiProtocol Label Switching)
LSR从入接口接受到IP数据报后,把入标记更换为出标记,这叫作标记对换.
转发等价类FEC(Forwarding Equivalence Class).
即路由器按照同样方式对待的IP数据报的集合.
划分FEC的方法由网络管理员控制.
MPLS首部的位置与格式
MPLS"打标记"就是在IP首部和帧首部之间插入一个MPLS首部,从层次定位上位于网络层和数据链路层之间.
本文作者:yuzujr
本文链接:https://www.cnblogs.com/yuzujr/p/18694708
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix