三、网络层
概述
网络层=网际层
网络层作用:实现源主机到目的主机之间的通信
网络层传输单位是数据报,需要完成网络之间的路由选择和分组转发。
具体有以下几个功能:
- 功能一:路由选择与分组转发 最佳路径
- 功能二:异构网络互联
- 功能三:拥塞控制
若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施, 缓解这种拥塞。
两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
(1)让网络负责可靠交付:虚电路服务(了解)类似与MPLS技术
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
虚电路
优点:路由器会预留一定的资源,可以提供一定的连接保障
(2)网络不负责可靠交付:数据报服务就是现在使用的
互联网的先驱者提出了一种崭新的网络设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付
由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
互连网选择数据报服务的原因:
- 电信网的终端是电话机等等,没有处理能力,不能处理信息错误的问题。
- 互联网的终端是计算机等等,有智能性,处理能力 可以处理信息错误的问题。
虚电路服务与数据报服务的对比
虚拟互连网络(逻辑互连网络)
将客观异构的物理网络互连起来的网络。
但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
中间设备
将网络互相连接起来要使用的设备。
中间设备又称为中间系统或中继 (relay)系统。
分类:
- 物理层中继系统:转发器 (repeater)。
- 数据链路层中继系统:网桥 或 桥接器 (bridge)。
- 网络层中继系统:路由器 (router)。
- 网桥和路由器的混合物:桥路器 (brouter)。
- 网络层以上的中继系统:网关 (gateway)。
当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
网关由于比较复杂,目前使用得较少。
网络互连都是指用路由器进行网络互连和路由选择。
由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
虚拟互连网络的意义
使用虚拟互连网络的好处是:
当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
IP协议与数据报格式
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:(图片中下层为上层提供服务)
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
IP 网: 使用 IP 协议的虚拟互连网络可简称为 IP 网。
互联网 (Internet): 在覆盖全球的 IP 网的上层使用 TCP 协议,那么就是互联网 (Internet)。
互联网可以由多种异构网络互连组成。
从网络层看 IP 数据报的传送
如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。
IP数据报的格式
一个 IP 数据报由首部和数据两部分组成,长度范围是20~60。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的(0~40字节)。
注: 有三个字段有单位:总长度单位是1B,片偏移单位是8B,首部长度单位是4B(一种八片首饰)
版本
——占 4 位,指 IP 协议的版本。
目前的 IP 协议版本号为 4 (即 IPv4)。
首部长度
——占 4 位,可表示的最大数值(整个首部的长度)
是 15 个单位(一个单位为 4 字节),
因此 IP 的首部长度的最大值是 60 字节。
区分服务
——占 8 位,用来获得更好的服务。(区分报文优先级,需要硬件支持)
在旧标准中叫做服务类型,但实际上一直未被使用过。
1998 年这个字段改名为区分服务。
只有在使用区分服务(DiffServ)时,这个字段才起作用。
在一般的情况下都不使用这个字段
总长度
——占 16 位,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为 65535 字节。
总长度必须不超过最大传送单元MTU。
(但是数据链路层 中 ppp协议和因特网 MTU都是1500字节,因此超过1500需要分片)
标识(identification)
——占 16 位,(用来分片用,同一个分片一个标识)
它是一个计数器,用来产生 IP 数据报的标识。
标志(flag)
——占 3 位,目前只有前两位有意义。()
-
标志字段的最低位是 MF (More Fragment)。
MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。 -
标志字段中间的一位是 DF (Don't Fragment) 。
只有当 DF=0 时才允许分片。
片偏移
——占13 位,(相当于指明第几片)
指出:较长的分组在分片后,某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。
生存时间
占8 位,记为 TTL (Time To Live),
指示数据报在网络中可通过的路由器数的最大值。
注意:
- 生存时间包括经过主机的数量,因此当生存时间为1时,就不能转发给路由器,如果还没有找到目的主机,就要丢尽。
- 每经过一个路由器就会将值-1
例: 生存时间为10。则该报文只能转发9个路由器,如果转发9个路由器后还没找到主机,就要丢弃。
常用命令行:
路由追踪命令:追踪访问某IP的路由器的路由器:tracert www.baidu.com
ping命令:可以看到某报文到本主机的经过路由TTLping www.baidu.com
协议
占8 位,指出此数据报携带的数据使用何种协议,也就是传输层的协议类型
IP 协议支持多种协议,如TCP=6,UDP=17(TCP建立连接就很6,UDP不建立就容易遗弃
)
目的: 协议字段指出应将数据部分交给哪一个进程,方便目的主机的 IP 层将数据部分上交给那个处理过程,
首部检验和: 占16 位,只检验数据报的首部。
每个路由器都要校验和重新计算首部校验和。
不检验数据部分。
数据部分会在数据链路层校验。
计算方法:
16 位二进制反码求和算法
源地址和目的地址: 各占 4 字节
可选字段(长度可变、可有可无):0~40B,用来支持排错、测量以及安全等措施。
填充:全0,把首部补成4B的整数倍。
可选字段和填充字段是可选部分,
实际上很少被使用。
增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
IP数据报分片
数据链路层的 数据帧可封装的数据有上限。最常用的以太网的MTU是1500字节
,当网络层的数据报长度超过MTU时,为了能在数据链路层传输,必须进行分片。
分片需要用到的数据包字段:
标识(identification): 占 16 位,同一数据报的分片使用同一标识。
实质是一个计数器,用来产生 IP 数据报的标识。
标志(flag): 占 3 位,目前只有前两位有意义。
-
标志字段中间的一位是 DF (Don't Fragment) 。
DF=1,禁止分片;DF=0,允许分片 -
标志字段的最低位是 MF (More Fragment)。
MF=1,后面“还有分片” ; MF=0 表示最后一个分片/没分片。
片偏移: 占13 位,指出:较长的分组在分片后,某片在原分组中的相对位置。(相当于指明第几片)
以 8字节
为偏移单位 \(\to\) 除了最后一个分片,其余分片都是8bit整数倍。
【例】 IP 数据报分片
一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
解: 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
片偏移字段分别是:0,175,350
注: 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
分片原则:
- 分片的总长度应尽可能得靠近MTU(1500)。
- 每片的数据部分的首位的编号是8的倍数。
生存时间
占8 位,记为 TTL (Time To Live),
指示数据报在网络中可通过的路由器数的最大值。
注意:
- 生存时间包括经过主机的数量,因此当生存时间为1时,就不能转发给路由器,如果还没有找到目的主机,就要丢尽。
- 每经过一个路由器就会将值-1
例: 生存时间为10。则该报文只能转发9个路由器,如果转发9个路由器后还没找到主机,就要丢弃。
常用命令行:
路由追踪命令:追踪访问某IP的路由器的路由器:tracert www.baidu.com
ping命令:可以看到某报文到本主机的经过路由TTLping www.baidu.com
IP地址及其编址方法
我们把整个互联网看成为一个单一的、抽象的网络。
IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。
注:
- 实际来说,是标识路由器/主机的接口。
- IP 地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址内容主要是两方面:1.IP地址的表示方法,2.IP地址的编址方式。
(一)表示方法
-
机器中: 存放的 IP 地址 是 32 位二进制代码
-
手写为:点分十进制记法 (为了提高可读性)
将每 8 位的二进制数,转换为十进制数
(二)IP 地址的编址(规划ip地址)方法
一共三个阶段。前两阶段是分类的,第三阶段是无分类,具体如下:
-
分类的 IP 地址-分类IP地址
这是最基本的编址方法,在1981年就通过了相应的标准协议。 -
子网的划分-子网掩码
这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。 -
构成超网(无分类编址方法)-CIDR方式
这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
注: IP地址编址方法改进的原因一直都是IP不够用,需要更先进的方法分配IP地址。
分类 IP 地址
方法: 将IP地址划分为若干个固定类。
表示: 每一类地址都由两个固定长度的字段组成,记为:(::=代表"定义为")
- 网络号 net-id,标志主机(或路由器)所连接到的网络
- 主机号 host-id,标志该主机(或路由器)。
注:
- 主机号在它前面的网络号 所指明的网络范围内 必须是唯一的。
- 一个 IP 地址在整个互联网范围内是唯一的。
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。
分类 为了满足不同数量设备的需求,IP分为以下5类:
常用的三种类别的IP 地址的指派范围
网络类别 | 最大可指派的网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中最大主机数 |
---|---|---|---|---|
A | \(126(2^7-2)\)(排除全零和127) | 1 | 126 | \(2^{24}-2\)(16777214) |
B | \(16383(2^{14}-1)\) | 128.1 | 191.255 | \(2^{16}-2\)(65534) |
C | \(2097151(2^{21}-1)\) | 192.0.1 | 223.255.255 | \(2^{8}-2\)(254) |
注: 网络号减去全零,主机号减去全零和全一。
特殊IP地址
注意:一般不使用的特殊的 IP 地址
网络号 | 主机号 | 含义 | 源地址使用 | 目的地址使用 |
---|---|---|---|---|
0 | 0 | 本网络上的本主机 | 可以 | 不可 |
0 | host-id | 本网络的host-id主机 | 可以 | 不可 |
全1 | 全1 | 只在本网络上进行广播(路由器不转发) | 不可 | 可以 |
net-id | 全1 | 对net-id上所有主机进行广播 | 不可 | 可以 |
127 | 除全零和全1的任何值 | 用于本地软件环回测试 | 可以 | 可以 |
总结:
- 网络号全0代表整个本网络的地址,不能发往其他网络
- 主机号全1代表广播地址,广播地址不能当作源地址
优点:
-
方便了 IP 地址的管理。
IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。 -
使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号)
弱点:
- IP地址空间的利用率有时很低。
- 两级IP地址不够灵活。
IP 地址的一些重要特点
-
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),
一个路由器至少应当有两个不同的 IP 地址。 -
路由器的每一个接口都有一个不同网络号的IP地址。
-
用转发器或网桥连接起来的若干个局域网仍为一个网络
因此这些局域网在同一个局域网上的主机或路由器都具有同样的网络号 net-id。 -
所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
附加:
两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明IP地址。
虚拟专用网VPN 和 网络地址转换NAT
划分子网 和 子网掩码
分类的IP地址的弱点:1.IP地址空间的利用率有时很低。 2.两级IP地址不够灵活。
为了更灵活的分配IP地址引入了划分子网:
注:
- 子网号能全0或者全1:因为CIDR编址(可见下一段)
- 主机号不能全0或者全1:因为全0代表本网络,全1代表广播分组
- 某单位划分子网后,对外仍表现为一个网络,本单位外的网络看不见本单位内子网的划分。
即从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
地址掩码/子网掩码
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
因此需要借助子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
表示: 长度为32 位。左边部分的一连串 1,对应于网络号和子网号;右边部分的一连串 0,对应于主机号。
为了方便表达,可以进行点十进制表示,也可以结合IP地址进行略写(/xx,代表网络号和子网号的位数)。
例: /20地址块: 11111111 11111111 11110000 00000000
等价于255,255,240,0
等价于128.14.35.7/20(128.14.35.7是IP地址)
注意:分类ip有隐含地址掩码,引入地址掩码后,若部门没有划分子网,一样适用。
计算子网方法: 将子网掩码(二进制形式)与IP地址逐位与运算,就可以得到子网ip地址
计算技巧:
因为255是11111111,所以如果写着255的话,ip地址和子网ip地址对应的地方的数值就相同
\(10000000 \to 128;11000000 \to 192;11100000 \to 224;11110000 \to 240\)
\(11111000 \to 248;11111100 \to 252;11111110 \to 254;11111111 \to 255\)
例: 已知IP地址是141.14.72.24。
如果子网掩码是255.255.192.0,求网络地址;如果子网掩码是255.255.224.0,求网络地址
解:
72对应二进制为:01001000。
255.255.192.0:192是11000000即2个1,一共是2×8+2=18个1,则网络地址是141.14.64
255.255.224.0:224是11100000即3个1,一共是2×8+3=19个1,则网络地址是141.14.64
通过这道题可以看出来,即使子网掩码不同,相同ip地址对应的子网ip地址也可能相同,但是子网掩码不同,划分的子网数目不同
例:
某主机的IP地址为180.80.77.55, 子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的
地址可以是( D ).
A. 180.80.76.0;B. 180.80.76.255;C.180.80.77.255; D. 180.80.79.255
77的二进制为:01001101,因此子网(网络)地址是:180.80.76.0;
因此广播地址是(主机号全一):180.80.79.255
默认网关:主机经过的第一个路由设备的ip地址
CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
CIDR 和 构造超网
背景
划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在 1992 年互联网仍然面临三个必须尽早解决的问题:
- B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
- 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
- 整个 IPv4 的地址空间最终将全部耗尽。
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)
思想: 子网划分在某一网络只能划分固定大小的子网,CIDR就是扩展子网划分,将一个网络的子网划分可以划分多个任意大小的子网。
特点:
-
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
-
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
-
IP 地址从三级编址(使用子网掩码)又回到了两级编址。
无分类的两级编址的记法是:$$IP地址 ::= {<网络前缀>, <主机号>}$$
例: 某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络中的最大子网 个数、每个子网内的最大可分配地址个数分别是(B )。
A. 32、8; B.32、6; C. 8、32; D. 8、30
因为本网络是192.168.5.0/24,就是192.168.5.(0000 0000)/24,将248写成二进制是11111 000,有五个1,所以前五位都可以作为子网的编号,剩下的三位就是用来分配子网内剩余的地址了,因为不能全0或者全1,所以还要减2
表示方式
1.“斜线记法”(slash notation)(CIDR 记法):
在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。
比如说 128.14.32.0/20表示
表示起始地址是128.14.32.0;有20位网络前缀
因此:表示的地址块共有 \(2^{12}\) 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
2.压缩0法
点分十进制中低位连续的 0 可以省略。
10.0.0.0/10 可简写为 10/10
3.星号法
二进制表示时,网络前缀的后面加一个星号 * 的表示方法,
- 在星号 * 之前是网络前缀,
- 星号 * 表示 IP 地址中的主机号,可以是任意值。
如 00001010 00*,
CIDR地址块
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
比如说 128.14.32.0/20表示
从 128.14.32.0(地址块的最小地址)
到 :128.14.47.255(地址块的最大地址)
的所有地址。
注意
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
- 全 0 和全 1 的主机号地址一般不使用。
路由聚合/构成超网
路由聚合 (route aggregation)也称为构成超网 (supernetting)
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
条件:
- 子网的共同前缀相同
- 主机号能从全零到全一
构成超网
前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
这些 C 类地址合起来就构成了超网。
CIDR 地址块中的地址数一定是 2 的整数次幂。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。
划分子网:将大地址换成两个大小相同的小地址
网络前缀再往后取一位,两个小地址,一个设为0,一个设为1
例: 已知:
大学地址块是206.0.68.0/22
11001110.00000000.010001*
一系主机不超过500台
二系主机不超过200台
三系四系不超过100台
问题:给四个系分配地址块(划分子网)
划分原则:
- 从大往小分(先给大的)
- 从剩下的分
(要保证主机号连续,因此要找到能表示大于设备的最小二进制位数,然后从前向后分配即可)
解题:
分给一系
\(2^9 >500\) 所以去取9位主机号、23位网络前缀。
分配11001110.00000000.0100010*
206.0.68.0/23
剩下 11001110.00000000.0100011*,从剩下选
分配的二系
\(2^8>200\)所以取8位主机号
分配11001110.00000000.01000110*
206.0.70.0/24
地址解析协议 ARP
发送数据的过程
IP 地址与硬件地址是不同的地址。
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
- IP 地址是网络层及以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
(IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。)
若主机H1向主机H2发送消息:
在网络层通信路径是:H1→H3。在数据链路层通信的路径:H1→经过 R1 转发→再经过 R2 转发→H2
主机 H1 与 H2 通信中使用的IP地址 与 硬件地址如下:
分析:
-
中间的路由器不会改变原IP和目的IP,路由器只根据目的站的 IP 地址的网络号进行路由选择。 (如果改变则找不到目的地,如果改变源地址,则目的地无法回复信息)
(网络层) -
但是MAC帧是需要改变,需要是下一个目的的硬件
(数据链路层:相邻节点的数据传输)
注意: 交换机不是一个节点,要看成一个通道。
地址解析协议 ARP
引子:
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址;
但是上面转发时,没有解决已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?
ARP协议: 属于网络层
,ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
作用是 从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。(解决下一跳走哪的问题)。
注意:
为什么不直接使用硬件地址进行通信?
由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
设计思想:通过广播的方式询问本网络的主机的MAC地址,目的主机通过单播的方式回复本机MAC地址,从而自学习ARP表。
具体工作流程如下: 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:
- 先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有:查出其对应的MAC地址,将此MAC地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此MAC地址。
- 如没有:ARP 进程在本局域网上广播发送一个 ARP 请求分组,同一局域网中所有主机都能收到该请求。
目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
查看本机的ARP表命令:
arp -a
其中静态是管理员或者计算机生成的关机后不会消失;动态的是自学习生成的关机后消失。
使用 ARP 的四种典型情况
通过IP地址就可以看出是不是本网络
发送方是主机
-
要把 IP 数据报发送到本网络上(LAN)的另一个主机。
这时用 ARP 找到目的主机的MAC地址。 -
要把 IP 数据报发送到另一个网络上(LAN)的一个主机。
这时用 ARP 找到本网络上的默认网关的MAC地址,剩下的工作由这个路由器来完成。
发送方是路由器
-
要把 IP 数据报转发到直连网络上的一个主机。
这时用 ARP 找到目的主机的MAC地址。 -
要把 IP 数据报转发到非直连网络上的一个主机。
这时用 ARP 找到直连网络上下一跳的MAC地址,剩下的工作由这个路由器来完成。
总结就是:
- 两个主机在同一局域网,直接解析目的MAC地址
- 两个主机不在同一个局域网,解析默认网关的硬件地址。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
例: 主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?
解: 6次。ARP协议解决下一跳走哪的问题,
ARP缺点:
因为没有认证功能; 会有ARP病毒。
ARP中间人欺骗:
攻击机:A
被攻击机:B
欺骗1
- 可以通过程序伪造IP地址,攻击机A将:发送方MAC地址是:自己,发送方IP是默认网关;目标方IP地址是被攻击方B。
- 和被攻击机通信,被攻击机ARP记录
- 被攻击机发送信息是,将会把信息发送攻击机。
如果只有欺骗1,B会断网;如果想实现窃听目的需要欺骗2
欺骗2
- 再设另一条伪造:发送方MAC地址:A,发送方IP:B,目标方IP:网关。
解决:
减少影响:大量设为VLAN,将局域网设小。
将网关地址和硬件地址固定。
动态主机配置协议 DHCP
网际控制报文协议 ICMP
网际控制报文协议 ICMP (Internet Control Message Protocol)
ICMP协议的目的: 是为了更有效地转发 IP 数据报和提高交付成功的机会。
主要功能是:配合IP协议,通过发送ICMP报文,实现 主机或路由器的
- 报告差错情况和提供有关异常情况的报告。
- 网络探寻
注:
- ICMP 是互联网的标准协议。
- ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
ICMP 报文的格式
- 类型:ICMP报文的类型
- 代码:进一步区分同一类型ICMP报文的不同情况
- 检验和:检验整个ICMP报文
ICMP 报文的种类
ICMP 报文的种类有两种,即
- ICMP 差错报告报文
- ICMP 询问报文。
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
(一)ICMP 询问报文有两种
- 回送请求和回答报文: 测试目的站是否可达以及了解其相关状态。
- 时间戳请求和回答报文: 请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
(二)ICMP 差错报告报文共有 4 种
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
路由找不到,IP不匹配
- 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当 终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发 送时间超过报文。
TTL=0
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
首部字段有问题
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器 (可通过更好的路由)。
告诉路由器,一条更好的路由路线
ICMP差错报告报文如何与IP数据报结合(ICMP差错报告报文数据字段)
![image](https://img2022.cnblogs.com/blog/2502367/202210/25 02367-20221005141034569-1755286399.png)
不应发送 ICMP 差错报告报文的几种情况
-
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
-
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
(分页数据只对分片的第一片发送差错报文) -
对具有多播地址的数据报都不发送 ICMP 差错报告报文。
-
对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP应用
PING (Packet InterNet Groper) (使用ICMP 回送请求与回答报文
)
PING 用来测试两个主机之间的连通性。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
Traceroute
用来跟踪一个分组从源点到终点的路径。
它利用 IP 数据报中的
- TTL 字段和 ICMP时间超过 差错报告报文
- ICMP终点不可达 差错报告报文
在 Windows 操作系统中这个命令是 tracert
。
实现:
- 发送ttl=1的报文
- 发送ttl=2的报文
................. - 对于目的主机,发动 终点不可达的报文。
IPv6
路由选择协议
IP 多播(组播)
IP数据报的三种传输方式
- 单播 :发送数据包到单个目的地,且每 单播 发送一份单播报文都使用一个单播IP地址 作为目的地址。是一种
点对点
传输方式。 - 广播:指发送数据包到同一广播域或子 广播 网内的所有设备的一种数据传输方式, 是一种
点对多点
传输方式。 - 组播/多播 :当网络中的某些用户需要特定数据时, 组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽 可能近的节点后才开始复制和分发,是一种
点对多点
传输方式。
为什么使用多播路由器: 适用于在同一局域网的多个接收方,接受相同的信息,减少网络流量。
如果使用单播,则每人发送一次
如果采用多播,只发送一次,且在主干网只传输一份
在互联网上进行多播就叫做 IP 多播。 互联网范围的多播要靠路由器来实现。
多播路由器(multicast router)
能够运行多播协议的路由器称为多播路由器(multicast router)。
注: 多播路由器可以转发普通的单播IP数据报,不冲突,但是是两套系统。
IP多播地址
IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。
组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个多播组。
注:
- 组播地址只能用作分组的目标地址。源地址总是为单播地址。
- 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
- 对组播数据报不产生ICMP差错报文。(因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。)
- 并非所有D类地址都可以作为组播地址。
多播数据报和一般的 IP 数据报的区别就是:
- 使用 D 类 IP 地址作为目的地址,
- 首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
在局域网上进行硬件多播
互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
因此 TCP/IP 协议使用的以太网地址块的范围是
从 00-00-5E-00-00-00
到 00-00-5E-FF-FF-FF
不难看出,在每一个地址中,只有23位可用作多播。
D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。
D 类 IP 地址与以太网多播地址的映射关系
前25位固定,后23位
IGMP协议 和 多播路由选择
-
为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
-
连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
(一)、IGMP协议
IGMP协议让路由器知道本局 域网上是否有主机(的进程) 参加或退出了某个组播组。
适用于主机和本地多播路由器之间的通信
IGMP 工作可分为两个阶段
第一阶段:加入多播组。
-
当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
-
本地的多播路由器收到 IGMP 报文后,将组成员关系通过多播路由选择协议转发给互联网上的其他多播路由器。
多播路由器 只记录组里面有没有成员。不记录每个成员的具体内容
第二阶段:探询组成员变化情况。
-
因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
-
只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
(二)、多播路由选择
不要求
多播路由选择实际上就是要找出以源主机为根结点的多播转发树。
对不同的多播组对应于不同的多播转发树。
虚拟专用网VPN 和 网络地址转换NAT
多协议标记交换 MPLS
类似与虚电路技术
多协议标记交换 MPLS (MultiProtocol Label Switching)
一种基于标签的快速转发的新技术。
- “多协议” 表示在 MPLS 的上层可以采用多种协议,例如:IP,IPX;可以使用多种数据链路层协议,例如:PPP,以太网,ATM 等。
- “标记” 是指每个分组被打上一个标记,根据该标记对分组进行转发。
要求 网络的所有路由器都要支持该协议
特点
MPLS 并没有取代 IP,而是作为一种 IP 增强技术,被广泛地应用在互联网中,通常用于核心网。
MPLS 具有以下三个方面的特点:
- 支持面向连接的服务质量;
- 支持流量工程,平衡网络负载;
- 有效地支持虚拟专用网 VPN。
路由器
总结
网络层作用:实现源主机到目的主机之间的通信
需要完成网络之间的路由选择和分组转发。
一、IP协议
-
IP地址:
分类IP(判断),CIDR地址。
前缀,掩码,几种特殊IP
计算:网络地址/划分子网(掩码等长不等长)/构造超网(路由聚合) -
路由表
查找:
计算,找到转发端口
路由项目类别:
特定主机路由/直连路由/非直连路由/默认路由
静态路由:手动配置/动态路由:路由协议生成
(实验:会配置路由器和路由,ICMP 的应用举实现网络互联)
二、ARP协议
作用:IP地址转化为硬件地址。 局域网内部运行
四种情况:
三、ICMP协议
作用:差错报告或询问。 掌握差错类型,应用(ping,TRACERT)
四、IGMP协议
作用:组管理。 在计算机和本地多播路由器之间维护组的关系。
五、路由协议
分为两个层次:内部网关协议(RIP,OSPF),外部网关协议(BGP),代表性协议。
RIP的计算。 对比RIP和OSPF的特点(WWW-H)
六、路由器和构成和作用
工作层次和作用:网络层,连接网络,在网络之间转发数据。
两大任务:分组转发(根本) 和路由选择 分组转发算法和路由表(一.2)
七、几种技术
IP多播,VPN,NAT。掌握解决的网络问题,要点。
VPN要点:两端内网的出口路由器上要进行加密和重新封装(改变了源IP和目的IP,外到外,因此能实现跨越因特网的内网与内网的通信。
NAT要点:将一个IP地址范围转换为另一个IP地址范围;实现内网IP访问互联网。
NAPT:IP+端口转化,多个内网IP共享一个外网IP通信。节省外网IP。
八、IPv6
128位,协议可以继续扩充,即插即用,支持服务质量保障(流)
几种特殊地址:::1,计发:十六进制零压缩法