吐槽
今天都三月了,昨天终于出了一趟门散散步晒晒太阳,心情愉悦,这一周主要是复习计算机网络层的相关知识,把一些重点的协议啊,包的格式总结一下方便自己后期的阅读。
本文思维导图
1 网络层的基本概念
在计算机网络层,主要是担任运输中转的功能,他的主要的目的就是选择各种合适的路径,然后讲数据包发送出去。人们在设计网络层的时候主要是考虑它是面向链接还是无连接的方式。
1.2 网络层提供的两种服务模型
(1)无连接的网络服务:数据报服务
- 网络随时接收主机发送的分组(即数据报),网络为每个分组独立的选择路由
- 分组使用目的主机地址转发,相同源和目的对,可能采用不同的路径
(2)面向连接的网络服务:虚电路服务
- 主机H1先向主机H5发送一个特定格式的控制信息分组,要求进行通信,同时寻找一条合适的路由。若主机H5同意通信就发回响应,然后双方就建立了虚电路
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储方式传送,而不是真正建立了一条物理连接
-
(3)区别以及优缺点
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 要 | 不要 |
目的站地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有目的站的全地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由转发 | 每个分组独立选择路由进行转发 |
当节点出现故障 | 所有通过故障的节点的虚电路均不能工作 | 故障节点可能丢失分组,一些路由可能会发生变化 |
分组顺序 | 总是按发送顺序到达 | 到达目的站时不一定按照发送顺序 |
端到端的差错处理和流量控制 | 可以由分组交换网负责也可以由用户主机负责 | 由用户主机负责 |
1.3 网络层的发送方式
网络在发送分组时不需要先建立连接。每一个分组(IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层被定义成不可靠的无连接分组交付系统。尽最大努力交付,不提供服务质量的承诺。即所传送分组可能出错、丢失、重复和失序,也不保证分组传送的时限。可靠性由网络的主机中的运输层负责。
这样设计的原因
- 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)
- 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用
1.4 网络层的协议
协议名 | 作用 |
---|---|
ARP | 地址解析协议 |
RARP | 逆地址解析协议 |
ICMP | 网际控制报文协议 |
IGMP | 网际组管理协议 |
协议的关系图
2 IP协议
2.1 IP协议的报文
1)一个IP数据报由首部和数据两部分组成;
2)首部的前一部分是固定长度、共20字节、是所有IP数据报必须具有的;
3)在首部的固定部分的后面是一些可选字段,其长度是可变的;
- 版本:占4bit,指IP协议的版本,目前的IP协议版本号为4(即IPv4);
- 首部长度:占4bit,可表示的最大数值是15个单位(一个单位为4字节)因此IP的首部长度的最大值是60字节;
- 区分服务:占8位,用来获得更好的服务,但实际上一直未被使用过;
- 总长度:占16bit,指首部和数据和的长度,单位为字节,因此数据报的最大长度为65535字节;
- 标识:占16bit,他是一个计数器,用来产生数据报的标识;
- 标志:占3位,只有前两位有意义;
- 最低位为MF,当MF=1时表示后面还有分片。MF=0,表示这是最后一个分片;
- 中间一位为DF,只有当DF=0时才允许分片;
- 片偏移:12bit,较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。
- 生存时间:8bit,计为TTL,表示数据报在网络中至多可经过多少个路由器;
- 协议:8bit,字段指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给那个处理过程;
- 首部检验和:16bit,该字段只检验数据报的首部,不包括数据部分;
- 源地址和目的地址各占四个字节;
2.2.1 片偏移计算以及MTU选择
1)MTU定义:无力网络对帧的数据部分的最大字节数限制,由硬件决定。
2)IP分组的大小由软件定义
- 选择合适的分组长度适应不同的MTU
- 选择网络中最小的MTU
- 在MTU较大的网络传输中会造成硬件浪费;
-选择网络中最大的MTU - 在MTU较小的网络不能时限数据报到帧的封装;
3)分片方法
- 在MTU较大的网络传输中会造成硬件浪费;
- 选择网络中最小的MTU
2.3 IP地址
IP地址为32位二进制数,4个用圆点隔开的十进制数。由两个固定的字段组成,其中一个字段是网络号net-id,它标志主机(或者路由器)所连接的网络,另一个字段是主机号host-id,它标志的是主机(或路由器)
路由器转发分组时,先按照IP地址中的网络号把目的网络找到,当分组到达目的网络后,再利用主机号将数据报直接交付给目的主机
2.3.1 ip地址的分类
(1)A类地址的网络号字段net-id为1字节,也就是前8bit;后24bit为host-id
- 每个网络最多可容纳(224 - 2)台主机;
- 从高位起,前1位为“0”,第一字节用十进制表示的取值范围为“1-126”;
- 具有A类地址特征的网络总数为(27 - 2)个;
(2)B类地址的网络号字段net-id为2字节,也就是前16bit;后16bit为host-id
- 每个网络最多容纳(216 - 2)台主机;
- 从高位起,前2位为“10”,第一字节用十进制表示的取值范围为“128-191”;
- 具有B类地址特征的网络总数为(214 - 1)个;
(3)C类地址的网络号字段net-id为3字节,也就是前24bit;后8bit为host-id
- 每个网络最多容纳(28 - 2)台主机;
- 高位起,前3位为“110”,第1字节用十进制表示的取值范围为“192-223”;
- 具有C类地址特征的网络总数为(221 - 1)个;
2.3.2 IP地址分类比较
2.3.3 特殊的ip地址
net-id | host-id | 最为源地址 | 作为目的地址 | 含义 |
---|---|---|---|---|
全0 | 全0 | 可以 | 不可以 | 代表本网络上的本主机 |
全0 | host-id | 可以 | 不可以 | 代表本网络上的某个主机(host-id) |
全1 | 全1 | 不可以 | 可以 | 对本网络上所有主机广播(路由器不转发) |
net-id | 全1 | 不可以 | 可以 | 对net-id指明的网络上的所有主机广播 |
127 | 非全0/1 | 可以 | 可以 | 本地软件环回测试用 |
(1)回环测试地址:本机将IP数据报回传回自身的地址-IP地址第一个字节是127;
- 环回测试地址范围为:127.0.0.1----127.255.255.254
(2)广播地址
直接广播地址:用于向某个网络的所有主机广播;例如主机212.111.44.136所在网络的广播地址为212.111.44.255;
有限广播地址(255.255.255.255):在未知本网地址情况下用于本网广播;
(3)网络地址:主机地址部分全部定义为“0”,用于区分网络;
- 例:主机212.111.44.136
- 所在网络地址为212.111.44.0
(4)专用IP地址(供测试和独立的网络用,以下IP地址的数据包会被路由器过滤,不会在网络上传输)
- 10.0.0.0-10.255.255.255(1个A类网络)
- 172.16.0.0-172.31.255.255(16个连续的B类网络)
- 192.168.0.0-192.168.255.255(256个连续的C类网络)
2.3.4 IP地址的特点
(1)IP地址是一种分等级的地址结构。分两个等级的好处是:
- 第一,IP地址管理机构在分配IP地址时只分配网络号,剩下的主机号则由得到该网络号的单位自行分配。方便了IP地址的管理;
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的的主机号),这样就使路由表中的项目大幅度减小,从而减小了路由表所占的存储空间。
(2)实际上IP地址是标志一个主机(或路由器)与一条链路间的接口;
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为多接口主机;
- 由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的IP地址。
(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有相同的网络号net-id;
(4)所有分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
2.3.5 分组转发算法
1)从数据报的首部提取目的站的IP地址D,得出目的网络地址为N;
2)若网络N与此路由器直接相连,则直接将数据报交付给目的站D;否则是间接交付;
3)若路由表中有目的地址为D的特定主机路由,则将数据报传送给路由表中所指明的下一挑路由器;否则执行(4);
4)若路由表中有到达网络N的路由,则将数据报传送给路由表指明的下一跳路由器;否则执行(5);
5)若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则执行(6)
6)报告转发分组出错
2.3.6 子网划分
- 从主机借用若干个比特作为子网号subnet-id,而主机号host-id也就相应减少了若干个比特;即IP地址::={<网络号>,<子网号>,<主机号>}
- 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到IP数据报后,在按目的网络号net-id和子网号subnet-id找到目的子网;
- 最后将IP数据报直接交付给目的主机;
例如:将一个C类地址划分为6个子网,子网掩码应该此用什么?
- 没有划分之前C类地址的默认掩码是255.255。255.0
- 11111111 11111111 11111111 00000000
- 主机号8位,划分6个子网,子号占三位才够用
- 11111111 11111111 11111111 11100000
- 所以子网掩码位255.255.255.224
通过子网掩码获取网络地址:IP地址 & 掩码 = 网络地址
3 ARP协议
定义:组成网络的各个站点都具有一个机器可以识别的地址,称为该站点的物理地址
特点:长度和格式由物理网络的硬件决定,不同网络具有各自的地址定义方式。物理地址不能保证在整个互联网上具有唯一性,但在同一网络上物理地址是唯一的
3.1 ARP高速缓存
在大多数情况下,两台主机之间不回仅传递一个数据报。如果每次传递数据报之前都要使用arp请求获取目标的物理地址,通信效率会大大降低
实际中,主机都在本地设置一个ARP高速缓存(ARPCache),存放最近解析出来的IP/MAC映射关系。发送方在发送数据首先会在本地ARP高速缓存中查找,如果找到直接使用,否则会广播arp请求报文,进行地址解析
例如:当主机A向本局域网上的某个主机E发送IP数据报时,就先在其ARP高速缓存中查看有无主机E的IP地址。如果有,就查处其对应的物理地址,再将此硬件写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
3.2跨网通信时ARP的使用方法
(1)主机A判断D是否与自己处于同一个物理网络,如果不是(即需简介交付),则必须将数据发送给它的默认网关—路由器R,再由R转发给D。
- 发送前,先利用ARP获取E0的物理地址MAC3;
- 然后发送
- IP数据报:IP1---->IP2
- MAC帧:MAC1 —>MAC3
(2)路由器R把数据从E1端口转发给主机D; - 转发前,利用ARP获取D的物理地址MAC2;
- 然后发送
- IP数据报:IP1---->IP2
- MAC帧: MAC4—>MAC2
4 ICMP协议
为了提高IP数据报交付成功的机会,在网络层使用了因特网控制报文协议ICMP。ICMP协议允许主机或路由器报告差错情况和提供有关异常情况的报告。它不是高层协议,而是IP层协议。ICMP报文作为IP层数据报的数据,加上IP首部,组成IP报文发送出去。
ICMP差错报告报文
- 3:不可达到
- 网络不可达;
- 主机不可达;
- 协议不可达到
- 11 时间超时
ICMP询问报文
- 8或0,回送请求/回送应答
- PING就是基于ICMP询问报文
ICMP(Type=3:Destination Unreachable)IP路由过程中,若出现以下问题,路由器或目的主机便发出”目的不可达“ICMP报文通知源端;
- 路由器无法将IP数据报传送出去;
- 目的主机无法处理收到的IP数据报;
5 路由
5.1 静态路由的选择
- 管理员将路由信息输入路由器配置中,只要网络拓扑改变,管理员必须手工更新这些静态路由条目。
- 当一个网络只有一条路径可以到达时,可以使用静态路由,避免了动态路由选择的开销;
优点:
- 简单直接
- 无需路由软件;
- 不需要传播路由信息,因此不需要消耗带宽;
5.2动态路由选择
- 管理员输入配置命令启动动态路由选择后,只要从互联网络中收到新的信息,路由选择进程就自动更新路由信息。
- 动态路由允许网络快速地更新和适应于变化;
5.3 路由选择算法
1)分布式路由选择算法(代表算法:距离向量算法)
- 路由器知道:物理相连的邻居,它到邻居的链路费用;
- 通过迭代计算及相邻节点交换信息的过程,使各个节点能够计算出到达某个目的节点的最低费用路径。
2)全局路由选择算法(代表算法:链路状态算法)
- 所有结点之间的连通性及所有链路的费用为输入,计算最优路径;
- 要求每一个路由器知晓完全的网络拓扑、链路费用信息
3)距离向量算法基本思想
- 一个路由器知道到达邻居的距离,如果邻居知道到达目的地的距离,则能算出本路由器到达目的地的距离。
- 每个结点周期想地向其邻居发送自己的距离向量(DV);
- 当结点X接收到来自邻居V的新距离向量时,它使用Bellman-Ford方程更新自己的距离向量:
6 多播和单播 广播
6.1 多播
1)多播通信是一个源点和一组终点。源点和终点的关系是一对多的;
2)多播通信中,IP数据报中的源地址是单播地址,目的地址都是多播地址。多播地址定义多播组成员,即多播地址并不代表接收者的地址,而是说明了当前分组(目的地址为该多播地址)携带的是哪个多播组的数据。
3)多播通信中,路由器在收到IP数据报后,可以在它的多个接口转发这个分组;
6.2 单播
1)单播通信是一个源点和一个终点。源点和终点的关系是一对一的;
2)单播通信中,IP数据报中的源地址和目的地址都是指派给主机的单播地址;
3)单播通信中,路由器在收到IP数据报后,只从它的一个接口转发这个分组;
6.3 广播
1)广播通信中,源点和终点的关系也是一对多的。源点只有一个,但所有其他主机都是终点;
2)因特网不支持广播,因为这会产生巨大的通信量;