少女祈祷中...

网络层

本文主要参考eaglebear2002的博客

使用IP地址(而不使用硬件地址)的原因:

  • 设备数量和供应商多
  • 规格不一致
  • 定位复杂

一、网络层概述

  • 对于不同帧使用同一的方案进行处理
  • 希望通过路由选择算法进行路径的选择和转发,对第二层是透明的。(即第二层的具体实现不影响第三层)
  • 第三层只能避免拥塞(流量控制在第四层)

第三层职责

  • 通过网络来移动数据,划分广播域,跨网段传播数据。
  • 使用分层寻址方案(IP地址)
  • 细分网络
  • 减少交通拥堵,基于IP做分段和传达
  • 与其他网络交谈

一般,第三次负责的是联通和传达,而数据可靠性由终端设备(第四层及以上)来进行保证(不然会带来比较大的计算量)

第三层设备概述

1、路由器:

  • 互连网段或网络(不同网段的分割)
  • 根据 IP 地址做出合理的决定
  • 确定最佳路径,根据路由表。
  • 将数据包从入站端口切换到出站端口

路由器转发的只会是不同网段的地址

二、IP地址和子网划分

  • 首部部分:蓝框部分
  • 版本号:4bit,IP协议版本(IPv4或IPv6)
  • 首部长度:4bit,最长60字节(一个单位表示4字节,而4bit最多表示15位)
  • 服务类型:8bit,用来获得更好的服务,前6位区分服务码,后2位保留
  • 总长度:16bit,首部+数据长度(最大65535字节,但是大多数不超过1500字节(帧大小限制))
  • 标识:16bit,用来给报文分片然后合并(按照标识的计数)
  • 标志:3bit,最高位0,DF位表示是否允许分片(0允许1不允许),MF位表示是否为最后一个分片(0表示是)
  • 片偏移:13bit,表示分组在分片后在原分组中的位置,8个字节为偏移单位。如果标识号相同,那么就根据片偏移进行重拍,偏移小的靠前(因为先发未必先到,所以要重排)

报文分配:

根据报文数据在原分组中的位置确定偏移

  • 生存时间:8bit,数据报在网络中可通过的路由器数的最大值。最大值为255,路由器每转发一次,就会对生存时间 -1,减小为 0 后,就会丢弃掉,并且通知给发送方我已经丢弃掉这个报文(防止环上回路问题)

  • 协议:8bit,指出数据使用何种协议,来确定交给哪个进程

  • 首部检验和:16bit,只检验首部,不包括数据部分。传输前后的检验和应该相同(不同说明传输出现差错)

网络层地址

IPv4地址为32位长,包括两个部分:网络ID+主机ID

  • 网络ID:标识网段,标识设备所连接的网段
  • 主机ID:标识网段上的特定设备,由网络管理员分配

IP地址

分类:A、B、C、D、E类地址

Class A N H H H
Class B N N H H
Class C N N N H

N标识网络ID,H标识主机ID

具体划分方法:

  • A类地址:开头固定为0,0-127
  • B类地址:开头固定为10(只有一个1),128-191
  • C类地址:开头固定为110(有两个1),192-223
  • D类地址:开头固定为1110(三个1),224-239,为多播地址(组播)
  • E类地址:开头固定1111(四个1),240-255,为研究

host不能全取0或1(全0标识网段地址,全1标识广播地址)

主机的数量:

A类:2^24-2
B类:2^16-2
C类:2^8-2
减去2:不能为全0或全1,为保留地址

专用地址空间

A类:10.0.0.0-10.255.255.255
B类:172.16.0.0-172.31.255.255
C类:192.168.0.0-192.168.255.255

IPv6有效解决了IPv4耗尽的问题(长度达到128位,是v4的32位的四倍)

子网划分

子网:将网络划分为较小的网络,提供额外寻址灵活性(小的局域网可以完成隔离)

  • 需要从主机字段借来几位。

子网划分只需要本网段网络管理员在本地分配,减小了广播域,提高网络利用率

可借用位数

子网不能为全0或全1,因此需要减去两个

可以借用的最小位数:2(其中两个需要给保留地址(全0和全1),剩下两个可以表示不同子网)

可以借用的最大位数:全部主机位中保留两位给主机号即可。

子网掩码

网络位和借用的位赋为1,其他为0

在计算需要几位主机位时,记得需要把用位数算出来的可表示的值减2

计算时,将每八个位看成一个十进制数字,表示出来。

有的时候子网掩码会在IP地址后面加一个斜杠和数字(/24),这也表示的是子网掩码,意思是前面有24个1

子网网络地址:直接将地址和子网掩码按位与运算

三、第三层设备

路由器

两个功能:

  • 路径选择
  • 分组转发

路径选择:

根据链路带宽、跳数、延迟选择到达目的地的路径的下一条地址

  • 路由器连接网络,每个网络都需要网络号(包含在网络设备的IP地址中),IP地址是我们配置的,有层次的(确定网段)

  • 路由器有端口,记录网段IP地址,并且一个路由器可能有不同网段的IP地址(分隔网段)

  • 路由器连接在这个网段的端口的IP地址即为这个网段的网关。路由器在每个网段的端口的IP地址都是不一样的

发送过程:

A5想要发送给B5,先把帧放到总线上,被路由器接收,发现目的地是B5(解封装),于是检查路由表,寻找到对应的端口B1,形成新的帧转发,其mac地址变成了B5的mac地址

IP地址分配

  • 动态地址分配:RARP(反向地址解析协议)、BOOTP(BOOTstrap协议)、DHCP(动态主机配置协议)

四、ARP协议

Address Resolution Protocol 地址解析协议(单网段内)

解决下一跳走哪里的问题,使计算机能够查找与IP地址关联的计算机的mac地址,即IP地址->Mac地址

ARP示例:

首先需要查询ARP table,寻找有没有目的IP地址,如果没有,就发送一个request请求(将Mac地址全设为1,作为广播发送),然后每个主机如果不是目标主机就丢弃,是目标主机就记录下来发送给对方作为应答。同时对方记录下主机A的MAC地址。同时主机A的ARP表中也会更新这一项,然后再次形成一个数据帧发送出去

  • ARP请求时本网段形成的,不能跨网段进行广播

不在同一网段怎么交流?

  • 默认网关(连接到路由器)
  • 代理ARP(Proxy ARP)

ARP对应目的方不是本地?

  • 路由器把Router MAC地址给你,在路由器另一端口形成新的帧

ARP攻击

一个机器发送无用帧,将cache写满(解决方法:一段时间不处理,等记录失效)

四、网络层设备

面向连接的网络设备

传输数据前先要建立连接,数据有序传输,差错需要接收方处理,可靠传输,代缴高

无连接的网络服务

分别对待每个数据包,无需建立连接、缓存,不处理报文丢失,可靠性低(报文数量少时可以提高效率)

电路交换

先建立一个虚电路关系,报文走对应的虚电路。属于面向连接,数据在同一虚拟电路上传播。强于面向连接。

报文交换

数据包传输时可以切换路径、乱序到达。根据各种标准为每个数据包确定路径,将原始数据分为很多子报文。基于packet switched进行实现,出现问题只需重传对应部分报文

五、网络协议操作

routed protocol 被动可路由协议:支持网络层的协议

Non-routable protocol 不可路由协议:不支持网络层的协议,

路由协议的的分类

  • 静态路由:网络管理员在路由器中手动输入信息
  • 动态路由:路由器在运行过程中互相学习信息(手动维护代价较大)

静态路由:用于隐藏部分网络,安全,测试网络中的特定链接,

动态路由:维护路由表,适应不断变化的网络状态。打开后会启动进程,学习网上的信息,根据算法生成路由表。

routing protocol 主动可路由协议,用来构建路由表

  • Routed Portocol 用于路由器之间,用来保证路由器之间连通(完成转发),保证路由器有效连通。
  • Routing Protocol 用于做各自的路由表的生成:路由器彼此交换信息。
  • Routing Protocol 决定 Routed Protocals

动态路由协议的分类

**内部网关协议:**可在自治系统中使用(RIP,IGRP,OSPF)
**内部网关协议:**在自治系统之间路由数据包(EGP,BGP)

自治系统是逻辑的划分,不是物理层次的划分

内部网关协议的分类:DVP and LSP:

DVP(距离矢量协议):RIP,IGRP,在路由器之间添加距离向量,将路由表的副本传给邻居路由器。
LSP(链路状态协议):获取整个网络拓扑的通用视图,计算到其他路由器的最短路径,事件触发的更新,将链路状态路由更新到其他路由器。

RIP:DVP的代表

  • 指数是跳数,最大为15
  • 每30秒更新一次
  • 并非选择最快的路径
  • 产生大量的网络流量

OSPF:LSP的代表

  • 指标为带宽、速度、流量,可靠性和安全性(本科阶段只考虑带宽)
  • 事件触发的更新

IGRP and EIGRP

  • 基于距离向量的最大网关协议
  • IGRP最大跳数255,EIGRP指标由带宽、负载、延迟和可靠性组成
  • 90秒更新一次
  • EIGRP是IGRP的高级版本

六、可变长度子网掩码VLSM

经典路由:无子网掩码,会造成网络号的浪费。

VLSM:有子网掩码,允许单个自治系统的网路具有不同的的子网掩码。

可以在主机少的网络上使用长掩码,主机多的子网上使用短掩码。

  • 路由网络连接上使用30位子网掩码255.255.255.252
  • 用户网路的子网掩码为255.255.255.0
  • 也可以使用更少的子网掩码(1000个用户)(255.255.252.0)

VLSM被称为子网划分,用于最大化寻址效率,缩小IPv4和IPv6之间的差距

VSLM的优缺点

会导致地址空间浪费:(广播地址和网络号都无法使用)

表示方法:192.168.1.1/30,其中的/30就表示前面多少位表留给网络位

VLSM的例子

我们需要为四个路由器划分网段,其中KL、Perth、Sydney、Singapore分别需要28,60,12,12个主机。

  • KL需要5为主机号;Perth需要6位主机号,Sydney、Singapore需要4位主机号

  • 首先我们可以为Perth分配网络号,即将子网掩码设为26位(255.255.255.192),就可以划分成四个子网,其中一个给Perth使用,可以给Perth的网段记为192.168.10.0/26。剩下三个记为unused。

  • 我们可以将剩下三个unused网段每个划分为更小的网段。即再借用一位。我们就可以将剩下的三个网段分成六个更小的网段,即1923168310.64/27、192.168.10.96/27等等。其中我们可以选择192.168.10.64/27作为KL的子网掩码。然后再将剩下的标记位unused

  • 接下来继续将其划分的更小,将子网掩码设为28位,就可以得到从192.168.10.96/28一直打192.168.10.240/28的所有网段。将这这里面的前两个网段分配给Sydney和Singapore,然后再将剩余的网段置为unused。

  • 为WAN连接分配地址。每个WAN连接需要两个IP地址,需要2位来表示。从192.168.10.128/28上可以划分成192.168.10.128/30和192.168.10.132/30两个网段。

**注意:**只有未使用的(unused)子网才可以进一步划分子网。

路由聚集 Route Aggregation

多个路由条目汇聚成小的路由条目

聚集方法:每个路由写在一起,划线到第一个有不同的位的左边,那么这条线左边的位为1,右边的位为0

  • 减少了路由表条目的数量
  • 隔离拓扑更改
  • 全0子网会在题目中说是否可用
  • 全1子网尽量不要使用

七、因特网控制报文协议ICMP

  • 允许主机或路由器提供有关异常情况的报告
  • ICMP报文可以作为IP数据报的数据部分发送出去
  • 路由器丢弃报文时一般都会返回一个ICMP差错报文

ICMP报文格式:

两种ICMP报文:

目的站不可到达:

  • 网络不可到达(net unreachable)
  • 主机不可到达(host unreachable)
  • 协议不可到达(protocol unreachable)
  • 端口不可到达(port unreachable)
  • 源路由选择不能完成(source route failed)
  • 目的网络不可知(unknown destination network)
  • 目的主机不可知(unknown destination host)
  • 不可知是完全不可以解析,不可达是可以解析但是不可以到达

差错报告报文的数据字段的内容

相当于将原来的IP数据报的首部前后+8字节组装到ICMP差错报告报文的IP数据报的数据部分,然后前面再加上新的首部,组成新的IP数据报

不应发送ICMP差错报告报文的几种情况

  • 对ICMP差错报告报文不再发送
  • 第一个分片的数据报片的所有后续数据报片都不发送(每次传送只需发送一次)
  • 多播地址数据报
  • 特殊地址,如127.0.0.0和0.0.0.0

PING(Packet InterNet Groper)

  • 使用ICMP的"Echo request“和”Echo reply"消息来实现的
  • 用来测试两个主机之间的连通信(局域网)。ping需要同时发送的过去和应答的过来
  • 使用ICMP回送请求和回送回答报文
  • 应用层直接使用网络层ICMP,没有使用运输车的TCP、UDP

八、不同设备的比较

1、路由器:互联两个不同网络层协议的网络
2、网桥:互联两个物理层的链路层不同的网段
3、集线器:不能互联两个物理层不同的网段

能否隔离冲突域 能否隔离广播域
物理层设备(中继器、集线器) × ×
链路层设备(网桥、交换机) ×
网路层设备(路由器)