计算机网络基础知识总结(四)网络层

四、网络层

4.1 基础概念

1)协议数据单元: IP数据报

2)网络层使用的中间设备:路由器

3)网络层提供的两种服务:虚电路服务(面向连接)、数据报服务(无连接)

4)直接交付和间接交付

  • 直接交付:主机或路由器不需要再经过其它路由器,而是直接把数据报交付给相邻网络上的主机。
  • 间接交付:主机或路由器查找路由表后,发现到达目的网络需要经过其它路由器,所以接着把数据报交付给下一跳所在路由器。

5)IP地址和硬件地址:IP地址(源地址和目的地址)是在IP数据报的首部,有32位。硬件地址(源地址和目的地址)是在MAC帧的首部,有48位。在数据传输过程中,往往会经过多个路由器,从始至终IP地址(源地址和目的地址)都不会改变;而硬件地址(源地址和目的地址)会不断改变,是相邻两个主机/路由器接口的硬件地址。


4.2 网际协议IP

4.2.1 IP数据报的格式

Snipaste_2020-01-19_17-02-10

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

  • 首部长度:占4位,表示多少个32位(4字节)。首部长度为最大值1111时(即十进制数的15),就表明首部长度达到最大值15个32位字长,即60字节。IP数据报的首部长度范围为20~60字节。

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

  • 总长度:占16位,总长度指首部和数据之和的长度,单位为字节。

  • 标识(identification):占16位。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

  • 标志(flag):占3位,但目前只有两位有意义。

    标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
    标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。

  • 片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位。

  • 生存时间 占8位,生存时间字段常用的英文缩写是TTL(Time ToLive),现在把TTL字段的功能改为“跳数限制”,路由器在每次转发数据报之前就把TTL值减1。

  • 协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。

  • 首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。不使用循环冗余检验CRC,而是使用如下方法:
    Snipaste_2020-01-19_17-17-52

  • 源地址:占32位。

  • 目的地址:占32位。

4.2.2 分类的IP地址

介绍

所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。

IP地址中的网络号字段和主机号字段

Snipaste_2020-01-19_16-26-24

IP地址的指派范围

Snipaste_2020-01-19_16-29-05

一般不使用的特殊IP地址

Snipaste_2020-01-19_16-31-04

转发分组流程

(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。

(2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

4.2.3 划分子网

介绍

划分子网的方法是从网络的主机号借用若干位作为子网号(subnet-id),当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机号。

子网掩码

用划分子网后的IP地址和子网掩码做与运算后,可以得出子网号。

A类地址的默认子网掩码是255.0.0.0,或0xFF000000。
B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000。
C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00。

转发分组流程

(1)从收到的数据报的首部提取目的IP地址D。

(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

4.2.4 无分类编址CIDR

介绍

CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,把32位的IP地址划分为前后两个部分。前面部分是“网络前缀”(network-prefix),用来指明网络,后面部分则用来指明主机。

要点

1)地址聚合:对于当前网络前缀以及在此基础上划分的子网,路由器只添加当前网络前缀。

2)最长前缀匹配:在查找路由表时得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由。


4.3 地址解析协议ARP

4.3.1 作用

进行IP地址到硬件地址的转换。

4.3.2 地址解析流程

Snipaste_2020-01-19_16-48-20
(1)发送方是主机(如H1),要把IP数据报发送到同一个网络上的另一台主机(如H2)。这时H1 发送ARP请求分组(在网1上广播),找到目的主机H2 的硬件地址。

(2)发送方是主机(如H1),要把IP数据报发送到另一个网络上的一台主机(如H3 或H4)。这时H1 发送ARP请求分组(在网1上广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1 来完成。R1 要做的事情是下面的(3)或(4)。

(3)发送方是路由器(如R1),要把IP数据报转发到与R1连接在同一个网络(网2)上的主机(如H3)。这时R1发送ARP请求分组(在网2上广播),找到目的主机H3的硬件地址。

(4)发送方是路由器(如R1),要把IP数据报转发到网3上的一台主机(如H4)。H4与R1不是连接在同一个网络上。这时R1发送ARP请求分组(在网2上广播),找到连接在网2上的一个路由器R2的硬件地址。剩下的工作由这个路由器R2来完成。

4.3.3 要点

1)每台主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。找不到目的硬件地址时才需要发送ARP请求分组。

2)ARP请求分组(包含源IP地址、源硬件地址和目的IP地址,想知道目的硬件地址)是广播形式,ARP响应分组(包含目的IP地址、目的硬件地址)是单播形式。

3)发送ARP响应分组的站点也会把收到的ARP请求分组的源IP地址、源硬件地址映射写进自己的ARP缓存中。


4.4 网际控制报文协议ICMP

4.4.1 介绍

ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

4.4.2 ICMP报文的种类

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

1)ICMP差错报告报文

  • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
  • 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。
  • 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

2)ICMP询问报文

  • 回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
  • 时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。

4.4.3 应用

1)PING

PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。

用于测试发送到哪个机器(IP地址),发送的、收到的和丢失的分组数(但不给出分组丢失的原因),以及往返时间的最小值、最大值和平均值。

2)tracert(Windows下)

Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间TTL设置为1。当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL的值减1。由于TTL等于零了,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。源主机接着发送第二个数据报P2,并把TTL设置为2。以此类推。最后目的主机因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。(注意:对应于每一个TTL值,源主机要发送三次同样的IP数据报)

用于测试到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。


4.5 互联网的路由选择协议

4.5.1 内部网关协议RIP

要点

基于距离向量,封装在UDP用户数据报的数据部分,支持变长子网划分和无分类域间路由选择CIDR,适用于规模较小的网络。

特点

(1)仅和相邻路由器交换信息。

(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到每个网络应经过的下一跳路由器”。

(3)按固定的时间间隔交换路由信息,例如,每隔30秒。

注意:路由器在刚刚开始工作时,它的路由表是空的

距离向量算法

对每一个相邻路由器发送过来的RIP报文,进行以下步骤:

(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1。每一个项目都有三个关键数据,即:到目的网络N,距离是d,下一跳路由器是X。

(2)对修改后的RIP报文中的每一个项目,进行以下步骤:

若原来的路由表中没有目的网络N,则把该项目添加到路由表中。
否则(即在路由表中有目的网络N,这时就再查看下一跳路由器地址)
若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目。
否则(即这个项目是:到目的网络N,但下一跳路由器不是X)
若收到的项目中的距离d小于路由表中的距离,则进行更新,
否则什么也不做。

(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)。

(4)返回。

4.5.2 内部网关协议OSPF

要点

基于链路状态,封装在IP数据报的数据部分,支持变长子网划分和无分类域间路由选择CIDR,适用于规模较大的网络。

特点

(1)向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(flooding),这就是路由器通过所有输出端口向所有相邻的路由器发送信息。

(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。而不像RIP那样,不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息。

4.5.3 外部网关协议BGP

要点

基于路径向量,封装在TCP报文段的数据部分,支持无分类域间路由选择CIDR。

4.5.4 路由器的构成

Snipaste_2020-01-21_16-28-37
整个的路由器结构可划分为两大部分:路由选择部分和分组转发部分。

1)路由选择部分:路由选择部分也叫做控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。路由表一般仅包含从目的网络到下一跳(用IP地址表示)的映射。

2)分组转发部分

  • 交换结构(switching fabric)又称为交换组织,它的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。转发表是从路由表得出的,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息(如下一跳的以太网地址)的映射。
  • 一组输入端口(请注意:这里的端口就是硬件接口)
  • 一组输出端口

4.6 IPv6(128位)

4.6.1 IPv6的格式

Snipaste_2020-01-21_16-36-28

  • 版本(version):占4位。它指明了协议的版本,对IPv6该字段是6。
  • 通信量类(traffic class):占8位。这是为了区分不同的IPv6数据报的类别或优先级。
  • 流标号(flow label):占20位。
  • 有效载荷长度(payload length):占16位。它指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是64KB(65535字节)。
  • 下一个首部(next header):占8位。它相当于IPv4的协议字段或可选字段。
    • 当IPv6数据报没有扩展首部时,下一个首部字段的作用和IPv4的协议字段一样,它的值指出了基本首部后面的数据应交付IP层上面的哪一个高层协议
    • 当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型。
  • 跳数限制(hop limit):占8位。用来防止数据报在网络中无限期地存在。源点在每个数据报发出时即设定某个跳数限制(最大为255跳)。
  • 源地址:占128位。是数据报的发送端的IP地址。
  • 目的地址:占128位。是数据报的接收端的IP地址。

六种扩展首部:(1)逐跳选项;(2)路由选择;(3)分片;(4)鉴别;(5)封装安全有效载荷;(6)目的站选项。

4.6.2 IPv6的地址

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

  • 单播(unicast):单播就是传统的点对点通信。

  • 多播(multicast):多播是一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。

  • 任播(anycast):这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是距离最近的一个。

2)地址缩写

  • 点分十进制记法为:104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255。
  • 冒号十六进制记法:68E6 : 8C64 : 0FFF : 0000 : 0000 : 0000 : 960A : 0FFF。
    • 允许把数字前面的0省略:68E6 : 8C64 : FFF : 0 : 0 : 0 : 960A : FFF。
    • 零压缩:68E6 : 8C64 : FFF : : 960A : FFF。为避免混淆,只允许一次零压缩。
  • 点分十进制记法和冒号十六进制记法结合:0 : 0 : 0 : 0 : 0 : 0 : 128.10.2.1。

3)地址分类
Snipaste_2020-01-21_16-54-04

4.6.3 从IPv4向IPv6过渡

1)双协议栈:双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有双协议栈:一个IPv4和一个IPv6。它同时具有两种IP地址:一个IPv6地址和一个IPv4地址。

2)隧道技术:在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报。


4.7 虚拟专用网VPN和网络地址转换NAT

4.7.1 虚拟专用网VPN

介绍

1)专用地址块

  • 10.0.0.0到10.255.255.255 (或记为10.0.0.0/8,它又称为24位块)

  • 172.16.0.0到172.31.255.255 (或记为172.16.0.0/12,它又称为20位块)

  • 192.168.0.0到192.168.255.255 (或记为192.168.0.0/16,它又称为16位块)

2)专用网:采用这样的专用IP地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。

3)虚拟专用网VPN(Virtual Private Network):利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN。

4)使用IP隧道技术实现虚拟专用网 (需要加密)
Snipaste_2020-01-21_17-03-01

4.7.2 网络地址转换NAT

介绍

在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密)。

需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。

NAT路由器的工作原理

Snipaste_2020-01-21_17-06-43

NAT地址转换表举例

前两行表示专用网内的一主机192.168.0.3向互联网发送了IP数据报,而NAT路由器有一个全球IP地址172.38.1.5。

后两行专用网内的另一主机192.168.0.7向互联网发送了IP数据报,而NAT路由器还有另外一个全球IP地址172.38.1.6。
Snipaste_2020-01-21_17-08-07

NAPT地址转换表举例

使用端口号的NAT也叫做网络地址与端口号转换NAPT(Network Address andPort Translation),而上卖面不使用端口号的NAT就叫做传统的NAT(traditionalNAT)。
Snipaste_2020-01-21_17-12-08
现在NAPT把专用网内不同的源IP地址都转换为同样的全球IP地址。但对源主机所采用的TCP端口号(不管相同或不同),则转换为不同的新的端口号。

发布了108 篇原创文章 · 获赞 69 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42780289/article/details/104064028