笔记前言
站在巨人的肩膀上,让知识的获得更加容易!本文为学习计算机网络后,自顶向下的学习笔记;
- 学习视频来源: 计算机网络微课堂(有字幕无背景音乐版)
- 课件pdf来源:评论区up
bili_68567544
整理目录分享 - 思维导图来源:https://blog.csdn.net/weixin_45067603/article/details/107053479
- 参考文章:百度百科、知乎、掘金等文具体位置具体标注
课程相关资源(课件、PDF文档、网络仿真实验软件)稍后有时间整理分享链接到评论区自行下载(网盘或者上传csdn)
系列目录:
一、网络层概述
网络层的主要任务是实现网络互连,让数据包在各网络之间传播。TCP/IP网络层的核心是IP协议,它是TCP/IP协议族中最主要的协议之一。
在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议)以及IGMP协议(Internet组管理协议)。因此在TCP/IP协议栈中网络层常称为网际层
。
TCP/IP协议栈
各层次的传输单元
OSI参考模型 | 各层次的传输单元 |
---|---|
应用层 | 报文 |
传输层 | 报文段 |
网络层 | IP数据报,分组(如果IP数据报太大就切割成分组) |
数据链路层 | 帧 |
物理层 | 比特流 |
主要功能:
TCP/IP体系中的网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺,不保证分组交付的时限,所传送的分组可能出错、丢失、重复和失序。
- 1、屏蔽网络差异,提供透明传输(异构网络互联)
- 2、路由选择
- 通过路由选择算法为分组通过通信子网选择最适当的路径
- 3、拥塞控制
- 为了避免网络传输路径中数据的传输延迟或死锁,主要采用预约缓冲区,分组丢弃等方式.
二、网络层数据交换方式
电路交换、报文交换与分组交换:https://zhuanlan.zhihu.com/p/205251011
在计算机网络中有三种主要的数据交换方式,分别是电路交换、报文交换和分组交换。
2.1 电路交换
类似打电话,特点是独占资源
2.2 报文交换
报文发送的过程:https://blog.csdn.net/weixin_45067603/article/details/106993253
1.源先根据报文加上ip地址,物理地址等,通过物理层发送
2.交换机收到报文之后,先进行存储,等待链路空闲之后进行转发,但是转发的路径不是固定的,是比较随机的
3.最后通过许多交换机最终到达目的地
2.3 分组交换
把从传输层接收到的数据报文切割封装成分组(Packet,也称为“包”)再向下传送到数据链路层。
分组交换的两种传输方式
网络层可为传输层提供数据报和虚电路两种服务,但 Internet的网络层仅为传输层提供数据报一种服务。
-
1、数据报方式
- 为网络层提供无连接服务(无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。)
- 每个分组携带源和目的地址
- 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表;检索转发表;每个分组独立选路
-
2、虚电路方式
- 为网络层提供连接服务(连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。)
三、网络层协议及报文格式
3.10 IP数据报格式
由于TGP/IP体系结构的因特网的网际层提供的是简单灵活、无连接的、尽最大努力交付的数据报服务,因此本文主要围绕网际层如何传送IP数据报这个主题进行讨论。
IPv4数据报格式:
名称 | 注释 | 大小 |
---|---|---|
版本 Version | ipv4或者ipv6 | 4位 |
首部长度 | 该字段取值以4字节为单位,所以此处最小值为5,表示IP数据报首部只有20字节的固定部分,最大值取值15;表示IP数据报首部包含20字节固定部分和40字节可变部分 | 4位 |
区分服务 | 旧标准叫服务类型,根据数值确定服务质量,用的比较少 | 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 | 用来排错等安全检测 | 1-40位之间 |
填充 | 将数据报对齐成4字节的整数倍,数值全部为0 | 据可选字段定 |
IP数据报分片
https://blog.csdn.net/weixin_45067603/article/details/106993253
例题:
3.1 IPv4协议
IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。2011年已经宣布分配完毕,之后开始全面开展部署IPv6
分类编址
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
例题:
ps:网络标识(Net.ID)和主机标识(Host.ID)
划分子网
因为IP地址不够用,且分类编址中两级IP地址的划分不仅不够灵活,而且有时地址空间的利用率很低,所以需要进行划分子网,子网掩码机制提供了子网划分的方法,其本质上其实就是从主机号借一部分比特作为子网号。如下图:
为什么子网好能全0或者全1:因为CIDR编址(可见下一段)
为什么主机号不能全0或者全1:因为全0代表本网络,全1代表广播分组
子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。
通过子网掩码判断两计算机是否属于同一网段的方法是,将计算机十进制的IP地址和子网掩码转换为二进制的形式,然后进行二进制“与”(AND)计算(全1则得1,不全1则得0),如果得出的结果是相同的,那么这两台计算机就属于同一网段。
例题:
无分类编址CIDR
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本lP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC 1517~1519和1520。
CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
将多个子网聚合成一个较大的子网叫做构成超网或者说路由聚合;
比如:
206.1.0.0/17和206.1.128.0它们前16位是一样的,对于206.1.0.0/16表示这个这个路由的地址也就是这个子网的地址;
小结:
3.20 IPv6数据报格式
名称 | 作用 |
---|---|
版本号 | 表示协议版本.值为6 |
优先级 | 主要用于QoS(解决网络延迟、拥塞等的一种技术) |
流标签 | 用来标识同一个流里面的报文 |
载荷长度 | 包含扩展报头和数据部分的长度,最多可表示65535字节数,超过则置为0 |
下一个首部 | 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法 |
跳数限制 | 该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃 |
源地址 | 标识该报文的来源地址 |
目的地址 | 标识该报文的目的地址 |
3.2 IPv6协议
无论是nat地址转换还是CIDR无分类编址都只能延缓地址不够用的问题,IPv6从根本上解决地址耗尽问题
IPv6地址表示形式:
IPv6的地址长度为128位,采用十六进制表示的一般形式,经过0位压缩后表示如上图例;
为了过渡ipv4和ipv6采用内嵌表示法:https://www.jb51.net/network/680502.html
比如:135.75.43.52
非标准转换:0000:0000:0000:0000:0000:0000:135.75.43.52
也即是::135.75.43.52
IPv6地址类型
https://baike.baidu.com/item/IPv6/172297#5
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。
简单的说,单播一对一,组播一对多,任播看似一对多实则一对一;单播地址可做源地址也可作目的地址,组播和任播只能做目的地址;
IPv4和IPv6之间的过渡
双栈协议解决过渡问题简单粗暴两个都支持呗,隧道技术巧妙一点必要时将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。虽然,隧道技术不能实现IPv4主机和IPv6主机之间的通信,但是NAT技术可以解决IPv4主机和IPv6主机之间的互通问题。
网络地址转换(Network Address Translator,NAT)技术是将IPv4地址和IPv6地址分别看作内部地址和全局地址,或者相反。例如,内部的IPv4主机要和外部的IPv6主机通信时,在NAT服务器中将IPv4地址(相当于内部地址)变换成IPv6地址(相当于全局地址),服务器维护一个IPv4与IPv6地址的映射表。反之,当内部的IPv6主机和外部的IPv4主机进行通信时,则IPv6主机映射成内部地址,IPv4主机映射成全局地址。
补充
IPv6的地址自动配置协议是基于IPv4的DHCP
优化的DHCPv6和扩充的无状态地址自动配置;
IPv6的路由协议同样分成内部网关协议(IGP)
与外部网关协议(EGP)
,其中IGP包括由RIP
变化而来的RIPng,由OSPF
变化而来的OSPFv3,以及IS-IS协议
变化而来的IS-ISv6。EGP则主要是由BGP
变化而来的BGP4+;
这里的图来自计算机网络自顶向下,然后自己查了一下找到了解释:IPv6中为啥没有ARP协议了呢?
3.3 ARP协议(地址解析协议)
ARP协议是将IP地址解析为以太网MAC地址(物理地址)的协议.
局域网中,当一台机器A要向机器B发送数据时,它必须知道对方的网络层地址,即IP地址,但光知道IP地址是不够的,因为数据报文归根结底还是要封装成帧在物理网络中传输,因此发送方A还必须要知道B的MAC址.ARR就是实现这个功能的协议.
特别注意: ARP解决的是同一个局域网中主机(或路由器)上的IP地址和MAC地址的映射问题,如果目的主机和源主机不在同一个局域网内,那么就要通过ARP找到一个位于当前局域网上某个路由器的MAC地址,把分组发送给这个路由器,然后这个路由器再把分组转发到下一个网络,剩下的工作就由下一个网络来完成了.
3.4 ICMP协议(网际控制报文协议)
为了更有效的转发IP数据报和提高交付的机会,在网际层使用ICMP协议
用来在IP主机、路由器之间传递控制消息,比如网络通不通,主机是否可达,路由是否可用等信息,这些控制信息虽然并不传输用户数据,但是对于用户数据的传递也起着重要的作用.
ICMP报文被封装在IP数据报中发送,比如像Ping(分组网间探测),和tracert(跟踪路由)这样的诊断程序都是属于ICMP的内容.
3.5 IGMP协议(因特网组管理协议)
IGMP
是TCP/IP协议族中负责IPV4组播成员管理的协议。想要了解IGMP就不得不说组播
。
什么是组播? 组播是报文传输的一种方式,作为IP传输三种方式之一。
IP传输三种方式? 单播一对一,组播一对多,广播一对所有。
举个栗子:
我们在家打开电视机收看电视节目,电视台就相当于组播源,会有不同的影视节目(组播包)源源不断的进行发送,经过中间的广电设备(组播路由器)进行流量传送,而我们全国各地的观众则可以通过家里的电视机(组播组成员),加入到对应的频道,来接收同一个电视节目。
IGMP主要功能如上图所示来理解
1、主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。
2、路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护,IGMP报文封装在IP报文中。
意外发现华为的产品技术支持文档讲的非常清楚,关于IGMP这部分https://support.huawei.com/enterprise/zh/doc/EDOC1100125984/c43a885d
四、路由选择算法和路由协议
4.1 概述
路由的概念:把信息从源节点传送到目标节点的行为.
路由的实现:依靠的是路由器或三层交换机中的路由表进行的.
路由的分类:
- 静态路由: 1.手动配置 2.路由路径固定不变 3.单向性,不提供反向路由 4.优先级较高 5.适用于小型网络.
静态路由对于小型且变化不是很频繁的网络来说是可行的的,比如局域网,但是对于较大的广域网来说,由于拓扑结构复杂,网络结构经常变动,就需要使用动态路由了.
- 动态路由:1.自动生成 2.自动调整 3.自动生成双向路由 4.仅可以生成网络间的路由表径,不能生成到达具体节点或主机的路由表项.
路由表基础:
路由表是存储在路由器或者联网计算机中的电子表格或类似的数据库.路由表存储着指向特点那个网络地址的路径.
每个静态路由表项中至少包含以下信息:
1.目的地址的网络IP地址
2.子网掩码:用来判断目的地址所属的网络
3.下一跳地址/接口.
1、路由选择算法
路由算法是在给定一组路由器及连接路由器链路的情况下,找出一条由源节点到目标节点的最佳路径.
路由算法分为两大类:非自适应路由算法和自适应路由算法
非自适应路由算法典型代表就是静态路由,而动态路由中所使用到的算法都属于自适应路由算法
几种主要的路由算法:
静态路由算法:
1.最短路径路由算法.
2.扩散算法
动态路由算法:
1.距离矢量路由算法
2.链路状态路由算法
2、路由选择协议
因特网采用分层次的路由选择协议
,多个路由器组成一个自治系统AS
,这个圈子里用同样的协议叫做内部网关协议IGP
,当这个圈子和另外一个圈子通信时用的协议叫外部网关协议EGP
,如下图:
不管是内部网关协议还是外部网关协议,都有相应的路由选择算法,有的基于距离的,有的基于链路状态
3、路由器的基本构造
4.2 路由信息协议RIP和距离向量算法
RIP协议概述
- 路由信息协议RIP是内部网关协议中最早得到广泛使用的协议之一,RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的
距离记录
(距离记录指一组距离,称为“距离向量D-V(Distance-Vector)")。
RIP协议报文格式
RIP协议路由更新规则
举例:
第一步、改造或者说改造
第二步、根据改造后的路由表对每一个项目进行更新
RIP协议的问题
RIP协议小结:
4.3 OSPF和链路状态算法
OSPF概述
OSPF特点
为什么OSPF收敛速度快?因为它只是刷新一下链路状态,得知其是否连通,不需要和RIP一样进行对照,而是直接通过Dijilstra算法来自己算出路径
OSPF分组格式
OSPF基本工作原理
OSPF分组类型
OSPF小结
4.4 BGP协议
例题:
BGP协议小结
本文思维导图
先借用下大佬的图,之后补思维导图,这章真的麻了,虽然最主要讲的就是IP协议,但是,这之中还有好多好多东西,我知道后面讲BGP协议的地方确实有些偷懒了之后慢慢改吧很多地方都需要优化,我是个麻瓜,嗨海害!
当然估摸着能看到这儿也能看得出来,本文主要是参考湖科大老师和王道的,然后对于部分内容就是知乎、百度百科等等网页和各博主的,根据自己学习情况规划整理笔记。