网络层

Posted _Karry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络层相关的知识,希望对你有一定的参考价值。

文章目录

概述

网络层接受由数据链路层送来的数据,数据链路层解决了物理层的问题,将数据封装成帧、透明传输和差错检测。当网络层接收之后去掉帧头和帧尾即得到了准确的IP数据报。

数据链路层遗留问题:

  • 数据链路层没有解决可靠传输问题即不重复、不丢失、不失序。
  • 数据链路层没有解决不同交换机之间的通信,不能实现不同网络之间的连接

对于网络层提供的服务,有两种观点,即在计算机通信中,可靠交付由谁来负责?是网络还是端系统:

  1. 面向连接(由网络层负责可靠交付)
    通信之前需要建立虚电路

  2. 无连接(由端系统负责可靠交付)
    网络层只提供简单的、无连接的、尽最大努力交付的数据报服务。
    这样网络的造价大大降低,也提高了网络的利用率

两种观点对比:

最终决定网络层不负责可靠交付。

网际协议IP

概述

网络协议IP是TCP/IP体系中最主要的两个协议之一

分类的IP地址

IP的地址结构分为网络号和主机号

其中根据网络号所占的位数分为五类IP地址:

其中A、B、C三种常用类别的IP地址范围:

一般不使用的特殊的IP地址:

互联网中的IP地址:

同一个局域网上的主机或者路由器,其IP地址的网络号相同;
路由器总是具有两个或两个以上的IP地址,路由器的每个接口都有一个不同网络号的IP地址。

IP地址与硬件地址

IP地址与硬件地址是不同的地址
硬件地址(物理地址)是数据链路层和物理层使用的地址;
IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

地址解析协议ARP

主机之间进行通信的时候使用了两个地址:IP地址(网络层地址)和MAC地址(数据链路层地址)

ARP协议解决的问题:当已经知道了一个主机(或者路由器)的IP地址,如何得到相应的硬件地址

每一个主机都有一个ARP高速缓存,里面存储了所在局域网的各主机和路由器的IP地址到硬件地址的映射表。
当主机A向本局域网的主机B发送IP数据报时,就现在其ARP高速缓存查找是否有主机B的IP地址:
如果有,就查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发送到该硬件地址;
如果没有,ARP进程在本局域网上广播一个ARP请求分组,收到ARP响应分组后,将得到的IP地址和硬件地址写入ARP高速缓存中。

注意:
ARP解决的是同一个局域网的主机或路由器的IP地址和物理地址的映射问题。
如果要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址;然后把分组发送给这个路由器,让这个路由器转发给下一个网络。

IP数据报的格式

一个IP数据报由首部和数据两部分组成。
首部的前一部分是固定长度 20字节,所有IP报都具有的,然后后面是一些可选字段,长度可变。

  • 版本:占4位,指IP协议的版本

  • 首部长度:占4位,可表示的最大数值是15个单位(一个单位4字节),所以IP数据报首部最长60字节

  • 区分服务:占8位,用来获得更好的服务

  • 总长度:占16位,指首部和数据之和的长度,单位为字节,数据报最大长度为65535字节,总长度必须不超过最大传输单元MTU

  • 标识:占16位,是一个计数器,用来产生IP数据报的标识

  • 标志:占3位,目前只有2位有意义。标识字段最低位是MF(More Fragment)。MF=1表示后面还有分片。MF=0表示这是最后一个分片。标志字段中间一位是DF(Don’t Fragment)。只有当DF=0时才允许分片

  • 片偏移:占13位,指较长分组在分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位。
    比如一数据报总长度3820字节,其数据部分长度为3800字节,需要分片为长度不超过1420字节的数据报片。所以每个数据报片数据部分长度不能超过1400字节。分为3个数据报片,数据段长度分别为1400、1400、1000字节。具体如下图所示:

  • 生存时间:占8位,记为TTL(Time To Live),指示数据报在网络中可通过路由器数目的最大值

  • 协议:占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个处理过程

  • 首部校验和:占16位,只检验数据报的首部,不检验数据部分

  • 源地址:占4个字节

  • 目的地址:占4个字节

路由表

路由表可以根据目的网络地址确定下一跳路由器

特定主机路由:由管理员指定的为特定的目的主机指明一个路由。

默认路由:只要目的网络不在路由表中,直接交付给默认路由。可以减少路由表所占用的空间和搜索路由表所用的时间。

路由器分组转发算法

首先从数据报的首部地址提取目的主机IP地址,得到目的网络地址;

若网络地址与此路由器直接相连,则把数据报直接交付目的主机;

如果没有直接相连,若路由表中有目的地址的特定主机路由,则交付给特定主机;

若路由表中有到达目的网络的路由,则交付给路由表指明的下一跳路由

若路由表中有默认路由,则把数据报交付给默认路由

否则报告转发分组出错

划分子网和构造超网

划分子网

划分子网是将二级网络划分为三级网络,但是划分子网是内部系统的事情,对外仍是二级网络
主机号借用若干位作为子网号,而主机号也相应减少了若干位,而不改变原来的网络号。

子网掩码

从一个IP数据包首部无法判断源主机和目的主机所连接的网络是否进行了子网划分,使用子网掩码可以找出IP地址中的子网部分。

规则:
子网掩码长度=32位;
某位=1:IP地址中对应位为网络号或者子网号;
某位=0:IP地址中对应位为主机号。

无分类编址CIDR

原因:IPv4的地址空间将要被耗尽。

CIDR消除了传统的A、B、C类地址以及划分子网的概念,可以更加有效地分配地址空间。
CIDR使用各种长度的网络前缀来代替网络号和子网号。

CIDR使用斜线记法,即在IP地址后加“/”,然后写上网络前缀所占的位数(这个数值对应于子网掩码1的个数),比如(220.78.168.0/24)

CIDR地址块:CIDR把网络前缀都相同的连续IP地址组成“CIDR地址块”

一个CIDR地址块可以表示很多地址,这种地址的聚合通常称为路由聚合
路由聚合也称为构成超网

网际控制报文协议ICMP

ICMP报文概述

ICMP为了更加有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告

ICMP报文格式:

ICMP报文的种类

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文

ICMP差错报文共有4种:

  1. 终点不可达
  2. 时间超过
  3. 参数问题
  4. 改变路由(重定向)

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

ICMP应用举例

PING用来测试两个主机之间的连通性,使用了ICMP回送请求与回送回答报文
PING是应用层直接使用网络层ICMP的例子,没有通过传输层的TCP或UDP

互联网的路由选择协议

相关概念

互联网采用分层次的路由选择协议,这是因为互联网的规模非常大,如果让所有路由器知道网络应该怎样到达,则这种路由表非常大;其次许多单位不希望外部了解本单位内部网络布局 ,但同时希望连接到互联网。

自治系统AS:

在自治系统内使用内部网关协议,比如RIP和OSPF协议
在自治系统与自治系统之间使用外部网关协议,比如BGP-4

内部网关协议RIP

RIP认为一个好的路由就是它通过的路由数最少,即“距离短”。
RIP允许一条路径最多只能包含15个路由器,“距离”的最大值为16时即相当于不可达。可见RIP只适用于小型互联网。

RIP协议的三个特点:

  1. 仅和相邻路由表交换信息
  2. 交换的信息是当前路由器所知道的全部信息
  3. 按固定时间间隔交换路由信息

例如:已知路由器R6路由表如(a)所示,现在收到相邻路由器R4发来的路由更新信息如(b)所示,试更新R6的路由表

RIP协议特点:好消息传播的快,坏消息传播的慢。
当网络出现故障的时候,需要经过比较长的时间才能将此信息传送到所有路由器


RIP协议优缺点:
优点:实现简单,开销较小
缺点:

  1. RIP限制网络的规模,使用的最大距离是15
  2. 随着网络规模扩大,开销也大
  3. 坏消息传播的慢,更新过程收敛时间过长

内部网关协议OSPF

最短路径优先OSPF是为了克服RIP的缺点开发出来的

三个要点:

  1. 使用洪泛法本自治系统中所有路由器发送信息
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态
  3. 只有当链路状态发生变化时,路由器才采用洪泛法向所有路由器发送此信息

OSPF的重要优点是更新过程收敛的快

OSPF的区域
为了使OSPF能够用于规模更大的网络,OSPF将一个自治系统再划分成若干个更小的范围,叫做区域。
划分区域的好处就是利用洪泛法交换链路状态信息的范围局限在每一个区域而不是整个自治系统,减少 整个网络上的通信量。

OSPF直接用IP数据报传送
OSPF不用UDP而是直接用IP数据报传送。OSPF构成的数据报很短,可以减少路由信息的通信量。

OSPF分组:

外部网关协议BGP

BGP是不同自治系统的路由器之间交换路由信息的协议

BGP发言人:每个自治系统要选择至少一个路由器作为“BGP发言人”
一个BGP发言人与其他自治系统中BGP发言人要交换路由信息,要先建立TCP连接,然后在此连接基础上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息。

BGP报文的首部:

IPv6

IPv4地址将要耗尽,所以推出具有更大地址空间的IPv6

IPv6数据报的一般形式

IPv6仍支持无连接的传送,主要的变化:

  1. 更大的地址空间,IPv6将地址从IPv4的32位增大到了128位
  2. 扩展的地址层次结构
  3. 灵活的首部格式,IPv6定义了许多可选的扩展首部
  4. 改进的选项,IPv6允许数据报包含有选项的控制信息,其选项放在有效载荷中
  5. 允许协议继续扩充
  6. 支持即插即用(即自动配置),因此IPv6不需要使用DHCP
  7. 支持资源的预分配
  8. IPv6改为8字节对齐,首部长度必须是8字节的整数倍,原来的IPv4首部是4字节对齐。

IPv6数据报由两大部分组成:

  • 基本首部
  • 有效载荷。有效载荷也成为净负荷。有效载荷允许有零个或多个扩展首部,再后面是数据部分。


  • 版本:占4位,它指明了协议的版本,对IPv6该字段总是6
  • 通信量类:8位,为了区分不同的IPv6数据报的类别或优先级
  • 流标号:20位,所有属于同一个流的数据报都具有同样的流标号
  • 有效载荷长度:16位,它指明IPv6数据报除了基本首部外的字节数
  • 下一个首部:8位,相当于IPv4的协议字段或可选字段
  • 跳数限制:8位。源站在数据报发出时即设定跳数限制,路由器在转发数据时将跳数限制字段中的值减1。当跳数限制的值为0时,就丢弃该数据报
  • 源地址:128位,是数据报的发送站的IP地址
  • 目的地址:128位,是数据报的接收站IP地址

IPv6的地址

IPv6数据报的目的地址可以是以下三种基本类型之一:

  1. 单播:传统的点对点通信
  2. 多播:一对多的通信
  3. 任播:这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个

IPv6每个地址占128位,使用冒号十六进制记法,比如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF/60

以上是关于网络层的主要内容,如果未能解决你的问题,请参考以下文章

计网网络层首部

计网网络层首部

【网络协议笔记】第四层:传输层(Transport)TCP协议简介(1)

IP分组

计算机网络湖科大微课堂笔记 p54-57 IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT

IP报文分片