第四章 网络层(上)
第四章
- 网络层服务模型
- 转发(forwarding)和路由(routing)的概念对比
- 路由器的工作原理
- 路由算法及路由协议
- 能够完成简单的组网及IP地址和路由配置
路由器内部有什么:输入端口,交换端口,输出端口,缓冲区管理,调度
4.1 网络层概述
网络层功能
- 主要任务:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。 网络层传输单位是数据报。
- 功能一:路由选择与分组转发——最佳路径【最重要的功能,也可以算作两个功能,即路由、转发】
- 功能二:异构网络互联
- 例如学校wifi里的各种局域网相连
- 功能三:拥塞控制
- 若所有结点都来不及接受分组,而要丢弃大量分组,网络就处于拥塞状态。
- 因此要采取一定措施, 缓解这种拥塞。
网络层服务与协议
- 从发送主机到接收主机的报文段传输
- 发送方:将报文段封装为数据报,然后传递到链接层
- 接收方:将报文段传送到传输层
- 网络层协议设备:主机,路由器
- 路由器:检查通过它的所有IP数据报中的头部字段,沿端到端路径,将数据报从输入端口移动到输出端口,进行传输数据报
网络层分面:数据平面、控制平面
- Data plane:
- 本地:每个路由器自身的功能
- 确定到达路由器输入端口的数据报如何转发到路由器输出端口
- 主要功能是分组转发,即将数据报从其输入链路转发到它们的输出链路。转发存在于每个路由器中,是数据平面实现的唯一功能。
- Control plane
- 整个网络逻辑范围
- 决定数据报在端到端路径上的路由器之间如何路由。
- 两种控制平面的实现方式:
- 传统的路由算法:在路由器内实现
- 软件定义网络(software-defined networking, SDN):在远程服务器上实现【以前的方式:每个路由器都有单独的路由算法组件,路由器之间通过交互来实现控制平面】
- 控制平面的主要功能是路由,即确定数据包从其源到目的地的路径。控制平面负责执行路由协议,响应连接到上层或下层链路,与远程控制器通信以及执行管理功能。
网络层可能提供的服务
- 确保交付:确保分组到达目的地。
- 具有时延上界的确保交付:主机到主机的时延。
- 有序分组交付:按发送顺序到达。
- 确保最小带宽:当发送主机以低于特定比特率的速率发送比特,分组不会丢失,在一定时延到达。
- 确保最大时延抖动:发送方发送两个连续分组的时间间隔与接收到的间隔相同。
因特网的网络层提供的服务:尽力而为服务
- 分组间的定时不能被保证;
- 分组的接收顺序与发送顺序不一定相同;
- 传送的分组不能保证最终交付,即网络可能未向目的地交付分组。
- 因特网“尽力而为”服务模型不保证:
- 成功将数据报传送到目的地
- 定时或按序交付
- 端到端的可用带宽
- 尽力而为机制的简单性使Internet得以广泛部署。足够的带宽配置可使实时应用程序(例如交互式语音、视频)的性能在“大部分时间”内“足够好”。可复制的、应用层的分布式服务(数据中心,内容分发网络)连接到客户端的网络附近,从而允许从多个位置提供服务
连接和无连接服务
- 数据报 提供 无连接 服务,使用目的主机的地址进行分组转发
- 虚电路 提供 连接 服务,类似于电话网络的行为,沿着源—目的路径的网络行为类似
- 类比于TCP/UDP的面向连接/ 无连接的传输层服务:任何网络中的网络层只提供两种服务之一,不会同时提供。
传输层:面向连接服务在网络边缘的端系统中实现。
网络层:面向连接服务在端系统及网络核心的路由器中实现。
数据报网络的特点
- 网络层服务模型简单。
- 端系统功能复杂:高层实现许多功能,如按序传送、可靠数据传输、拥塞控制与DNS名字解析等。
- 带来的结果:因特网服务模型提供的服务保证最少(可能没有!),对网络层的需求最小,使得互连使用各种不同链路层技术的网络变得更加容易。许多应用都在位于网络边缘的主机(服务器)上实现。
4.2 IP数据报格式
IP数据报格式(1)首部-除标识部分
- 版本:IPv4 /IPv6?
- 首部长度:单位是4B,最小为5。首部长度占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 B
- 区分服务:指示期望获得哪种类型的服务。
- 总长度:首部+数据,单位是1B。指首部和数据之和的长度,最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
- 生存时间TTL(Time To Live) :IP分组的保质期。经过一个路由器-1,变成0则丢弃。
- 协议:数据部分的协议。
- 协议:TCP:6 、UDP:17
- 协议号是将网络层与运输层绑定到一起的黏合剂;
- 端口号是将运输层和应用层绑定到一起的黏合剂
- 首部检验和:只检验首部不检验数据部分。
- 源IP地址和目的地址:32bit
- 可选字段:0~40B。用来支持排错、测量以及安全等措施
- 填充:全0,把首部填充成4B的整数倍
IP数据报格式(2)首部-标识部分
- 标识:同一数据报的分片使用同一标识。
- 标志:只有2位有意义----DF (Don't Fragment)、MF (More Fragment) :
- DF=1,禁止分片
- DF=0,允许分片
- MF=1,后面还有
- MF=0,这是最后一片
- 片偏移:指出较长分组分片后,某片在原分组中的相对位置。
- 都是以8B为单位。除了最后一个分片,每个分片长度一定是8B的整数倍。
分片——最大传送单元MTU
- 网络层的数据是要向下打包传输的
- 下一层的链路层数据帧可封装数据是有上线的
- 以太网的MTU是1500字节。
- 如果所传送的数据报长度超过某链路的MTU值?——分片
分片例题
各种单位
一种八片首饰 —— 总长度单位是1B、片偏移单位是8B、首部长度单位是4B
分片例题
一个3200 bit长的运输层报文段传送到IP层,加上160 bit的首部后成为IP数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最长数据帧中的数据部分只有1200 bit。因此数据报在路由器必须进行分片。试问第二个局域网向其上层要传送多少比特的数据?
解:
- 第二个局域网所能传送的最长数据帧中的数据部分只有1200bit,即每个IP数据报的数据部分 < 1200 – 160 = 1040 bit
- 由于片偏移是以8字节即64 bit为单位,所以IP数据片的数据部分最大不超过1024 bit (1024<1040)
- 这样3200bit的报文要分4个数据片,所以第二个局域网向上传送的比特数等于(3200+4×160),共3840 bit。
- 每一片的最大数据报总长度(数据+首部)= 1024 + 160 = 1184 bit,运输层 3200 bit,则网络层的数据部分为 3200 bit。
- 即:
- 分片1数据部分:0 ~ 1023
分片2数据部分:1024 ~ 2047
分片3数据部分:2048 ~ 3071
分片4数据部分:3072 ~ 3200
- 分片1数据部分:0 ~ 1023
1、IP分片是在源主机还是中间路由器中进行?
答:都有可能。但是注意:分片后的数据重新组装只在目的端的IP层。
2、TCP和UDP报文段是否都需要进行IP分片?
答:IP分片只针对UDP(以及ICMP)。对于TCP报文段,不会产生IP分片,因为一旦TCP数据过大,比如超过了MSS,传输层会对TCP报文段进行分段。注意:IP分片只有第一个片段带有传输层或ICMP首部,其余的片段只有IP头。
为什么TCP/IP在运输层/网络层都执行差错检测?
两者校验和计算的内容不同。IP层只对IP首部计算了校验和,而TCP/UDP对整个TCP/UDP报文段进行了校验和计算。
TCP/UDP和IP不一定属于同一个协议栈。TCP能够运行在其他的协议上,IP携带的数据也不一定必须要传递给TCP/UDP(传输层还有SCTP等协议)。
4.3 IPv4地址、网络地址转换 (NAT)
- 分类的IP地址
- 子网的划分
- 构成超网(无分类编址方法)
IP-电脑主机的身份证
身份证号:110000199601010442
IP地址:全世界唯一的32位(4字节)标识符,标识路由器主机的接口。
IP地址::={<网络号>,<主机号>}
IP地址的分类
特殊IP地址
本地回环地址 127.0.0.1-127.255.255.254 ,这是预留的一组IP地址,主要是用来识别主机本身的地址。也叫做“localhost”,一般用来测试。
私有IP地址
私有地址(Private address)10.x.x.x, 172.16.x.x-172.31.x.x, 192.168.x.x ,这三个地址段被称为私有IP地址段,也就是局域网所使用的地址段,在公网上不能被路由
网络地址转换 (NAT)
私有IP地址
网络地址转换NAT
网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,对外部网络来讲,本地网络只用一个IP地址,在本地网络,改变设备的IP地址不用通知外部世界可以变更ISP,不用改变本地网络的设备的地址
本地网络中的所有设备在“专用”IP地址空间(10/ 8、172.16/12、192.168/ 16)中具有32位地址,这些地址只能在本地网络中使用。就外部世界而言,本地网络中的所有设备仅共享一个IPv4地址
路由器、主机有多个接口,每个接口有一个IP地址
4.4 子网划分 、子网掩码
分类的IP地址的弱点:
1.IP地址空间的利用率有时很低。
2.两级IP地址不够灵活。
子网划分
三级IP地址比二级IP多了一个在主机号划分出一部分为子网号。
某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。
【就像其他单位的职工不会清楚你的公司的职工分工】
例子
从这个路由器开始,在网络145.13.0.0
- 子网145.13.3.0
- 主机145.13.3.10
- 主机145.13.3.11
- 主机145.13.3.101
- 子网145.13.7.0
- 主机145.13.7.35
- 主机145.13.7.34
- 主机145.13.7.56
- 子网145.13.21.0
- 主机145.13.21.23
- 主机145.13.21.9
- 主机145.13.21.8
子网掩码
子网掩码与IP地址逐位相与 —— 得到子网网络地址。
例题
已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址、 广播地址。
解
- 子网掩码是255.255.192.0,由于前两段都是255,直接看第三段IP:192化成2进制为11000000
- 则,前面2位为网络号,后6位为主机号
- IP地址141.14.72.24,72化成2进制为01001000
- 所以,01000000为网络号【取前两位为网络号,后面六位补0】,而00001000为主机号【取后六位为主机号,前面两位补0】
- 广播地址01111111【取前两位+后面六位补1】
所以——网络号141.14.64.0 广播地址:141.14.127.255
例题2
某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是( )
A. 180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255
解:
题目要发送广播分组,所以求的是广播地址,
- 由子网掩码255.255.252.0(即11111111.11111111.11111100.00000000)可知网络为连续的1,那么主机位为连续的0,也就是10位,
- IP地址180.80.77.55 01001101
- 广播地址的后面的两段:01001111.11111111 ——180.80.79.255
例3
【例】已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。
【例】在上例中,若子网掩码改为255.255.224.0。
不同的子网掩码得出相同的网络地址。但不同的掩码的效果是不同的。
使用子网时路由器的变化
不划分子网时,路由表只有两项:目的网络地址和下一跳地址
使用子网划分后,路由表中将包括三项:目的网络地址、子网掩码和下—跳地址
路由器转发分组的算法:
1.提取目的IP地址
2.是否直接交付
3.特定主机路由
4.检测路由表中有无路径
5.默认路由0.0.0.0
6.丢弃,报告转发分组出错
4.5 无分类编址CIDR
B类地址很快将分配完毕!
路由表中的项目急剧增长!
演化过程: 对32bit的IP地址
- 网络号||主机号
- 网络号||子网号||主机号
- 网络前缀||主机号
CIDR记法:
IP地址后加上“/”,然后写上网络前缀(可以任意长度)的位数。——如 128.14.32.0/20
1.消除了传统的A类,B类和C类地址以及划分子网的概念。
⒉融合子网地址与子网掩码,方便子网划分。CIDR虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
例
- 这里的IP的二进制转换,得到前面20位置不变,后面全0则为最小地址,后面全1则为最大地址
- 其子网掩码,取前20位置全1,后面全0
构成超网(路由聚合)
一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
问题:由2048个C类网络组成,从192.24.0.0到192.31.255.0,哪个掩码可表示此地址范围?
假设有16个C类网络,从201.66.32.0到201.66.47.0,它们可以用掩码255.255.240.0统─表示为网络201.66.32.0。
例子
某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、 35.230.40.0/21、 35.230.48.0/21、 35.230.56.0/21,将该4条路由聚合后的目的网络地址为 ( )。
A.35.230.0.0/19 B.35.230.0.0/20 C.35.230.32.0/19 D.35.230.32.0/20
解:分开计算二进制结果——聚合:取共同长度最大值——剩余13位全部取0
最长前缀匹配
使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。
因为前缀越长,地址块越小,路由越具体
一、已知:收到的分组的目的地址 D = 206.0.71.128。路由表中的项目:206.0.68.0/22 206.0.71.128/25
问:分组发往哪个地址?
求解思路
将子网掩码与目的地址相与,确定该目的地址是否属于该子网内部。如果两者都属于,则选择网络前缀(掩码)最长的。
求解过程
1.先用目的地址 D 和第一个下一跳地址的子网掩码相与
结果:匹配
2.再用目的地址 D 和第二个下一跳地址的子网掩码相与,得到也匹配
这个时候由于两个子网都匹配,选择最长的网络前缀匹配,即
二、路由器R0的路由表见上表,若进入路由器R0的分组的目的地址为132.19.237.5,该分组应该被转发到()下一跳路由器。
A. R1 B. R2 C. R3 D. R4
答案解析:
132.19.237.5为A类地址,网络号为11111111.0.0.0(这里只是这样写比较简便),该网络可以被A、B标识,根据“ 最长前缀匹配原则”,该分组应该被转发到R22。R4是默认路由,只有路由表中的所有网络都不能和分组的目的网络匹配时才使用。故选B。
例子1:子网划分
例:现有一个C类网202.114.1.1 - 202.114.1.254,
(1)请写出怎样将这个C类网划分为2个、6个、14个子网;
(2)假设这些IP用于某公司。现公司任一部门,最多有30台机器,问应该怎样划分子网?如果有49台机器又将怎样划分?
对(1)、(2),请写出子网所需要的位数、子网掩码和子网号。
解答要点:
(1)2个子网需借2 bit (对于CIDR,只需1 bit),6个子网需借3 bit,14个子网需借4 bit;
(2)30<32,故每个子网的主机号只需5位,因为25= 32;同理49台机器的话,就需要6位,因为26 =64。
注意:对某个子网来说,主机号全0的地址不能用,它被用做表示该子网的子网号;主机号全1的也不能用,它用于本子网的广播。因此每个子网所能容纳的主机数是2^N-2,N是主机号位数。
子网划分为什么全0全1子网号不能使用?
RFC950提到的原因:假设有一个网络:192.168.0.0/24,现在需要两个子网,那么按照RFC950,应该使用使用两位子网号,即/26,得到两个可以使用的子网192.168.0.64/26和192.168.0.128/26。
对于主网络192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
对于子网192.168.0.0/26(子网号全0),网络地址是192.168.0.0,广播地址是192.168.0.63
对于子网192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
对于子网192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
对于子网192.168.0.192/26(子网号全1),网络地址是192.168.0.192,广播地址是192.168.0.255
可以看出,对于第一个子网,网络地址和主网络的网络地址是重叠的,对于最后一个子网,广播地址和主网络的广播地址也是重叠的。这样的重叠将导致极大的混乱。比如,一个发往192.168.0.255的广播是发给主网络的还是子网的?
CIDR为什么能使用全0全1子网号?
在子网划分下,一个发往192.168.0.255的广播不能确认是发给主网络的还是子网;
然而采用CIDR后,由于CIDR在路由时采取最长前缀匹配,目的地址192.168.0.255和地址块相比,192.168.0.192/26的前缀匹配长度最长,所以广播发送到192.168.0.192/26地址块。
例子2:子网划分及CIDR练习
现有一公司已获得网络号为202.1.1.0/24,如果该公司有3个部门:
(1)如果第1个部门有60台计算机,第2个部门有20台计算机,第3个部门有16台计算机,问使用分类IP的子网划分方法如何分配地址?
(2)如果第1个部门有120台计算机,第2个部门有60台计算机,第3个部门有60台计算机,使用分类IP的子网划分方法可以分配地址吗?使用CIDR方法如何分配地址?
解:
(1)以最多台数的部门(60台)为准,需要的最接近数为2^6=64,故要从最后个字节借8-6=2位作子网号,
子网分别为 202.1.1.0、202.1.1.64、202.1.1.128、202.1.1.192,在这4个其中任选3个即可。掩码均为255.255.255.192。
注意:由于这里总共有4个子网,包含第一个全0子网和最后一个全1子网,如果不采用CIDR方法,实际本题无解:按照RFC 950,第一个全0子网的网络地址和最后一个全1子网的广播地址分别与没有划分子网前的网络地址和广播地址相冲突,不能使用,实际可以分配的子网只有 2 个;如果再借一位主机位,子网划分为 8 个,每个子网主机数又都只有30台,也不满足题中要求。
(2)若以最多台数的部门(120台)为准,仅能分两个子网,无法满足。故应采用CIDR法:
首先以最小需求台数部门为准(60台),此时主机号位数需要6位(因为60=<2^6),则子网号位数为8-6=2位,然后将子网划分出来。此时和(1)一样;
接下来,部门2、3可以直接在4个子网中任选两个,部门1选剩下2个以满足120台的要求(但这两个子网要连续,以便用CIDR法合并之,做超网)。比如:
部门1用:202.1.1.0、202.1.1.64 -> 需要进行路由聚合(构成超网)
部门2:202.1.1.128
部门3:202.1.1.192
最后将各部门IP段用CIDR超网形式描述,以便对外发布:
部门1:202.1.1.0/25; (注意含义:表示前25位是网络号,且最后一个字节最高位为0,后面7位是主机号)
部门2:202.1.1.128/26; (最后一个字节最高两位为10,后面6位是主机号)
部门3:202.1.1.192/26; (最后一个字节最高两位为11,后面6位是主机号)
并且:将202.1.1.128、202.1.1.192给部门1,202.1.1.0、202.1.1.64分别给部门2、3亦可。此时答案为:
部门2:202.1.1.0/26;
部门3:202.1.1.64/26;
部门1:202.1.1.128/25
4.6 ARP、DHCP、ICMP
MAC与ARP: MAC地址的识别
广播信道的局域网中,一个节点发送的帧,在信道上广播传输,其他节点都可能收到该帧。
大多数情况,一个节点只向某个特定的节点发送。
由“网卡”负责MAC地址的封装和识别。
发送适配器:将目的MAC地址封装到帧中,并发送。所有其他适配器都会收到这个帧。
接收适配器:检查帧的目的MAC地址是否与自己MAC地址相匹配:
如果匹配:接收该帧,取出数据报,并传递给上层。
如果不匹配:丢弃该帧。
这里介绍一个特殊的广播帧:它是发送给所有节点的帧,因此它的目的MAC地址需要用广播地址,广播地址就是全1地址:FF-FF-FF-FF-FF-FF
链路层寻址和ARP协议
网络中的每个节点都有网络层地址和链路层地址。
其中网络层地址是节点在网络中分配的唯一地址(IP地址),用于把分组转发到目的网络。长度为32比特(IPv4)。
链路层地址:又叫做MAC地址或物理地址、局域网地址,用于把数据帧从一个节点传送到另一个节点(同一网络中)。
局域网中每个网卡都有唯一的局域网地址——MAC,如1A-2F-BB-76-09-AD
前三个字节1A-2F-BB是专门的机构IEEE分配的,后面是厂家分配
MAC不会变,IP会变。
既然主机和路由器有了网络层地址 IP 地址,为什么还需要链路层地址 MAC 地址?
1、局域网是为任意网络协议而设计的,而不只是用于 IP 和因特网。如果适配器被指派 IP 地址而不是“中性的”MAC地址的话,则适配器将不能方便地支持其他网络层协议(如 IPX、DECnet、AppleTalk等);
2、如果适配器使用网络层地址而不是MAC地址,网络层地址必须存储在适配器的RAM中,并且在每次适配器移动时要重新配置。
3、如果适配器不使用任何地址,让每个适配器将它收到的每帧数据(通常是IP数据报)沿协议栈向上传递,然后网络层能够核对网络地址是否匹配。这会带来一个问题,主机将被局域网上发送的每个帧中断,包括目的地是在相同广播局域网的其他结点的帧中断。这导致效率低下。
ARP
ARP表:局域网上的每个节点(主机、路由器)都有这个表:
这个表的作用:对局域网内的IP与MAC进行映射
两个主机在同一局域网内
- 假设同一个局域网中主机A希望发送数据报给主机B,
- 主机A首先查找自己维护的ARP表,看是否存在B的MAC地址,假设B的MAC地址不在A的ARP映射表中。
- 则主机A首先广播ARP查询分组,其中包含B的IP地址,查询分组是个广播帧,即目的MAC地址是FF-FF-FF-FF-FF-FF。
- 因此局域网中所有节点收到ARP查询分组,其余主机发现查询的不是本机的MAC地址,因此不进行回应。
- 只有主机B收到ARP查询分组后,返回B的MAC地址给主机A,包含有B的MAC地址的帧发送给主机A(单播)。
- 于是,主机A在自己的ARP表中缓存B主机的IP地址和MAC地址。
- 这里需要说明的是,ARP是即插即用的,即局域网中动态的增加或减少主机,不需要管理员进行额外的手工干预。
A与B不在同一局域网内
这里需要强调的是,在整个传输过程中,数据报的源IP地址和目的IP地址是不会发生改变的,改变的只是数据帧的源和目的MAC地址。
- 我们说当主机A判断该数据报的接收主机与自己不在同一个局域网时,它会首先将数据报发送到自己的第一跳路由器,即这里的路由器R,
- 因此该数据帧的目的MAC地址应该是R的左边端口的MAC地址,E6-E9-00-17-BB-4B。
- 数据帧从主机A发送到路由器R,路由器R收到数据帧,抽取出数据报递交到IP层,发现是要往B发送
- 该数据报要往右边的端口转发,且接收主机B与自己右边端口属于同一个局域网。
- 因此向右边端口输出数据帧时,数据帧的源MAC地址是路由器右边端口的MAC地址,数据帧的目的MAC地址是主机B的MAC地址
ARP协议使用过程:
- 检查ARP高速缓存,有对应表项则写入MAC帧
- 没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组
- 同一局域网中所有主机都能收到该请求。
- 目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)
- ARP协议是自动进行的。
例
主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?
共需6次,每一次都是下一跳的MAC
ARP协议4种典型情况:
1.主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
2.主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
3.路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
4.路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
DHCP协议
IP配置分类-IP如何分配?
- 静态配置
- 例如,一个机房内的所有电脑的IP是固定的
- 即手工指定其特定的子网掩码,默认网关
- 动态配置
- 例如,来教室上课的学生的手机的IP地址是在动态改变的。
- 这里就需要用到DHCP协议,自动从一个DHCP服务器得到IP地址
动态主机配置协议DHCP
- 是应用层协议,使用客户/服务器方式,
- 客户端和服务端通过广播方式进行交互,基于UDP。
- 提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址
- 允许地址重用,支持移动用户加入网络,支持在用地址续租。
过程
- 1.主机广播DHCP发现报文
- “有没有DHCP服务器呀?”——试图找到网络中的服务器,服务器获得一个IP地址。
- 发送Dhcpdiscover包,即该数据包的源地址为 0.0.0.0,目标地址为 255.255.255.255
- 2.DHCP服务器广播DHCP提供报文
- “有!”“有!”“有!”——服务器拟分配给主机一个IP地址及相关配置,先到先得。
- 3.主机广播DHCP请求报文
- “我用你给我的IP地址啦?”——主机向服务器请求提供IP地址。
- 4.DHCP服务器广播DHCP确认报文
- “用吧!”——正式将IP地址分配给主机.
DHCP分配的不仅仅是IP地址,还可分配:
- 客户的第一跳路由器的地址(网关)
- DNS服务器的IP地址或域名
- 子网掩码
即:
- DHCP 服务器形成包含客户 IP、客户机第一跳路由器的 IP、DNS 服务器的名称和 IP 的 DHCP ACK
- 封装的DHCP服务器帧转发到客户,在客户端解析出 DHCP
- 客户现在就知道了其IP地址、DNS服务器名称和IP地址,第一跳路由器的IP地址
ICMP协议
Internet Control Message Protocol 网际控制报文协议ICMP
用于主机路由器之间彼此交流网络层信息·差错报告:不可到达的主机,网络、端口、协议·请求/应答(用于ping, traceroute)
位于IP之上——因为ICMP消息是装载在IP分组里的
为了更有效地转发IP数据报和提高交付成功的机会
类型
支持主机或路由器:
差错报告、网络探寻时——发送特定的ICMP报文:ICMP差错报文、ICMP询问报文
ICMP差错报告报文(5种)
- 1.终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。 无法交付
- 【2.源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。 拥塞丢数据】(貌似已弃用)
- 3.时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当 终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发 送时间超过报文。 TTL=0
- 4.参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发 送参数问题报文。 首部字段有问题
- 5.改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器 (可通过更好的路由)。值得更好的路由
不应发送ICMP差错报文的情况
1.对ICMP差错报告报文不再发送ICMP差错报告报文。
2.对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3.对具有组播地址的数据报都不发送ICMP差错报告报文。
4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文
1.回送请求和回答报文 主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态。
2.时间戳请求和回答报文 请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
3.掩码地址请求和回答报文 【废】
4.路由器询问和通告报文【废】
ICMP的应用
- PING 测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
- Traceroute 跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
应当注意:
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。
“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
4.7 IPv6
中国主导“雪人计划”于2016年在全球16个国家完成25台IPv6根服务器架设,事实上形成了 13 台原有 IPv4 根加 25 台 IPv6 根的新格局。在中国,目前部署有4台服务器,其中含有1台主根服务器和3台辅根服务器,这也打破了中国过去没有根服务器的格局。
32位IPv4地址空间已分配殆尽…
CIDR、NAT治标不治本
而IPv6从根本上解决地址耗尽问题
特点
改进首部格式、快速处理/转发数据报、支持QoS
QoS(Quality of Service,服务质量)指 一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是 网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。
IPv6数据报格式
依次解读
- 指明了协议版本,总是6。
- 区分数据报的类别和优先级。
- “流”是互联网络上从特定 源点到特定终点的一系列数 据报。
- 所有属于同一个流的 数据报都具有同样的流标签。
- 标识下一个扩展首部或上层 协议首部。
- 跳数限制相当于IPv4的TTL。路由器在转发数据报时将跳数限制字段中的值减当跳数限制的值为零时,则将此数据报丢弃。
IPv6地址表示形式
一般形式,冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:217
压缩形式4BF5:0000:0000:0000:BA 5F:039A:000A:2176
零压缩:一连串连续的0可以被一对冒号取代。 FF05:0:0:0:0:0:0:B3----FF05::B3(零压缩,双冒号表示法)注意:双冒号表示法在一个地址中仅可出现一次。
CIDR的斜线表示法仍然可用。
例如:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
——12AB::CD30:0:0:0:0/60(零压缩,双冒号表示法)
——12AB:0:0:CD30:/60(零压缩)
IPv6基本地址类型
IPv6和IPv4
1.IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
2.IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
3.IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
4.IPv6支持即插即用(即自动配置),不需要DHCP协议。
5.IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
6.IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
7.ICMPv6:附加报文类型“分组过大”。
8.IPv6支持资源的预分配, 支持实时视像等要求,保证一定的带宽和时延的应用。
9.IPv6取消了协议字段,改成下一个首部字段。
10.IPv6取消了总长度字段,改用有效载荷长度字段。
11.IPv6取消了服务类型字段
IPv6向IPv4过渡的策略
双栈协议
双协议栈技术就是指在一台设备上同时启用lPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。
- 如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。
- 如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
隧道技术
通过使用互联网络的基础设施在网络之间传递数据的方式。
使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。
隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。