【计算机网络】网络层——2. IPv4、IPv6

1. IPv4

(1)IPV4分组

IPv4即现在普遍使用的IP (版本4)。IP 定义数据传送的基本单元一-IP 分组及其确切的数据格式。IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP 还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。

1)IPv4分组的格式

一个IP分组由首部数据两部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP 数据报的格式如图所示。
IP数据报格式
IP首部的部分重要字段含义如下:
1)版本。指IP的版本,目前广泛使用的版本号为4。
2)首部长度。占4位。以32位为单位,最大值为60B (15*4B)。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。
3)总长度。占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为216- 1= 65535B。以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面数据链路层的MTU值。
4)标识。占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是“序号”(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。
5)标志。占3位。标志字段的最低位为MF, MF= 1表示后面还有分片,MF= 0表示最后一个分片。标志字段中间的一位是DF,只有当DF = 0时才允许分片。
6)片偏移。占13位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8B (64 位)的整数倍。
7)首部校验和。占16位。IP数据报的首部校验和只校验分组的首部,而不校验数据部分。
8)生存时间(TTL)。 占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1。若TTL被减为0,则该分组必须丢弃。
9)协议。占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,值为17 表示UDP。
10)源地址字段。占4B,标识发送方的IP地址。
11) 目的地址字段。占4B,标识接收方的IP地址。

注意:在IP数据报首部中有三个关于长度的标记,一个是首部长度、一个是总长度、一个是片偏移,基本单位分别为4B、1B、8B。

2)IP数据报分片

一个链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在链路层数据报中,因此链路层的MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的MTU。例如,以太网的MTU为1500B,而许多广域网的MTU不超过576B。当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中,这些较小的数据报称为
片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组。创建一个IP数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。IP 首部中的标志位有3比特,但只有后2比特有意义,分别是MF位(MoreFragment)和DF位(Don’t Fragment)。只有当DF=0时,该IP数据报才可以被分片。MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片。当MF=1时,表示相应的原始数据报还有后续的片;当MF=0时,表示该数据报是相应原始数据报的最后一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置。
IP分片涉及一定的计算。例如,一个长4000B的IP数据报(首部20B,数据部分3980B)到达一个路由器,需要转发到一条 MTU为1500B的链路上。这意味着原始数据报中的3980B数据必须被分配到3个独立的片中(每片也是一个IP数据报)。假定原始数据报的标识号为777,那么分成的3片如下图所示。可以看出,由于偏移值的单位是8B,所以除最后一个片外,其他所有片中的有效数据载荷都是8的倍数。
IP分片例

3)网络层转发分组流程

网络层的路由器执行的分组转发算法如下:
1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
2)若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;否则是间接交付,执行步骤3)。
3)若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤4)。
4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5)。
5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6)。
6)报告转发分组出错。

注意:得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址。

(2)IPv4地址与NAT

1)IPv4地址

连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符, 即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E五类。
无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::= {<网络号>, <主机号>}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个因特网范围内是唯一的。
分类的IP地址如下图所示。
在这里插入图片描述
在各类IP地址中,有些IP地址具有特殊用途,不做主机的IP地址:

  • 主机号全为0表示本网络本身,如202.98.174.0。 主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255。
  • 127.0.0.0保留为环路自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
  • 32位全为0,即0.0.0.0表示本网络上的本主机。
  • 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。

常用的三种类别IP地址的使用范围见下表。

A类地址可用的网络数为27-2,减2的原因是:第一,网络号字段全为0的IP地址是保留地址,意思是“本网络”;第二,网络号为127的IP地址是环回测试地址。B类地址的可用网络数为214-1,减1的原因是128.0这个网络号是不可指派的。C类地址的可用网络数为21-1,减1的原因是网络号为192.0.0 的网络是不可指派的。

在这里插入图片描述

IP地址有以下重要特点:
1)每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构。分等级的好处是:①IP地址管理机构在分配IP地址时只分配网络号(第一级), 而主机号(第二级)则由得到该网络的单位自行分配,方便了IP 地址的管理;②路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
2) IP地址是标志一台主机(或路由器)和一条链路的接口。 当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。因此IP网络上的一个路由器必然至少应具有两个IP地址(路由器每个端口必须至少分配一个IP地址)。
3)用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同
4)在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的。
5)在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址。

2)网络地址转换

网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
此外,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet 中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。私有IP地址网段如下:
A类: 1个A类网段,即10.0.0.0~10.255.255.255。
B类: 16个B类网段,即172.16.0.0~172.31.255.255。
C类: 256个C类网段,即192.168.0.0~ 192.168.255.255。
在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。 这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。
使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。通过{ip地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。

下面以宿舍共享宽带上网为例进行说明。假设某个宿舍办理了2Mb/s的电信宽带,那么这个宿舍就获得了一个全球IP地址(如138.76.29.7),而宿舍内4台主机使用私有地址(如192.168.0.0网段)。宿舍的网关路由器应该开启NAT功能,并且某时刻路由器上的NAT转换表见下表。那么,当路由器从LAN端口收到源IP及源端口号为192. 168.0.2:2233的数据报时,就将其映射成138.76.29.7: 5001,然后从WAN端口发送到因特网上。当路由器从WAN端口收到目的IP及目的端口号为138.76.29.7: 5060的数据报时,就将其映射成192.168.0.3: 1234,然后从LAN端口发送给相应的本地主机。这样,只需要一个全球地址,就可以让多台主机同时访问因特网。
在这里插入图片描述

注意:普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。

(3)子网划分与子网掩码、CIDR

1)子网划分

两级IP地址的缺点:IP地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级的IP地址不够灵活。
从1985年起,在IP地址中又增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。这种做法称为子网划分。子网划分已成为因特网的正式标准协议。
子网划分的基本思路如下:

  • 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构如下: IP 地址= {<网络号>,<子网号>,<主机号>}。
  • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。

注意:
1)划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。因此,从一个IP地址本身或IP数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。
2) RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能为全1或全0。但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,使用时要弄清路由器所用的路由选择软件是否支持全0或全1的子网号。
3)不论是分类的IPv4地址还是CIDR, 其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址。

2)子网掩码

为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。
子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。
现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。例如,某主机的IP地址192.168.5.56, 子网掩码为255.255.255.0, 进行逐位“与”运算后,得出该主机所在子网的网络号为192.168.5.0。
由于子网掩码是一个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码。

在使用子网掩码的情况下:
1)一台主机在设置IP地址信息的同时,必须设置子网掩码。
2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
3)路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。

使用子网掩码时路由器的分组转发算法如下:
1)从收到的分组的首部提取目的IP地址,记为D。
2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付,执行步骤3)。
3)若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则,执行4)。
4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相“与”,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5)。
5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6)。
6)报告转发分组出错。

3)无分类域间路由选择(CIDR)

无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。
如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(8个连续的C类网络),而不是一个完全的B类地址。这样可以大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。CIDR的主要特点如下:
1)消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间。CIDR使用“网络前缀”的概念代替子网络的概念。因此,IP地址的无分类两级编址为: IP:= {<网络前缀>,<主机号>}
CIDR还使用“斜线记法”(或称CIDR记法),即IP地址/网络前缀所占比特数。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。例如,对于128.14.32.5/20 这个地址,它的掩码是20个连续的1和后续12个连续的0,通过逐位相“与”的方法可以得到该地址的网络前缀(或直接截取前20位):
IP = 10000000.00001110.00100000.00000101,
掩码= 11111111.11111111.11110000.00000000
进行逐位与,得到:
网络前缀= 1000000000010.0000000000000 (128.14.32.0)

CIDR虽然不使用子网,但仍然使用“掩码”一词。“CIDR不使用子网”是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一一些子网。例如,某组织分配到地址块/20,就可以再继续划分为8个子网(从主机号中借用3位来划分子网),这时每个子网的网络前缀就变成了23位。全0和全1的主机号地址一般不使用。

2)将网络前缀都相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。
例如,在下图所示的网络中,如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。网络1和网络2的网络前缀在二进制表示的情况下,前16位都是相同的,第17位分别是0和1,并且从R1到网络1和网络2的路由的下一跳皆为R2。若使用路由聚合,在R1看来,网络1和网络2可以构成一个更大的地址块206.1.0.0/16,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。
路由聚合例
CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2N-2, N表示主机号的位数,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。
最长前缀匹配(最佳匹配): 使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。##
CIDR查找路由表的方法: 为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。最常用的数据结构就是二叉线索。

(4)ARP、DHCP、ICMP

1)IP地址与硬件地址

IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(MAC地址)是平面式的。在网络层及之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装把IP数据报封装为MAC帧后,数据链路层看不见数据报分组中的IP地址
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在IP网络的网络层只使用IP地址来完成寻址。
寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(主机号全0的网络地址)需要转发到下一跳(路由器的物理端口号或下一网络地址),而IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址。这样可以提高路由选择效率。
1)在IP层抽象的互联网上只能看到IP数据报。
2)虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择。
3)在局域网的链路层只能看见MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。
4)尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。

注意:路由器互联多个网络,它不仅有多个IP地址,也有多个硬件地址。

2)地址解析协议(ARP)

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成 IP地址到MAC地址的映射,这就是地址解析协议(Address Resolution Protocol, ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。
ARP工作在网络层,其工作原理如下:主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。如果没有,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求。主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。ARP由于“看到了”IP地址,所以它工作在网络层,而NAT路由器由于“看到了”端口,所以它工作在传输层。

注意: ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

ARP的4种典型情况总结如下:
1)发送方是主机时,要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址
2)发送方是主机时,要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
3)发送方是路由器时,要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址
4)发送方是路由器时,要把IP数据报转发到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成。
从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为链路层所需要的硬件地址。

3)动态主机配置协议(DHCP)

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP是应用层协议,它是基于UDP的。
DHCP的工作原理如下:使用客户/服务器方式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。
DHCP服务器聚合DHCP客户端的交换过程如下:

  1. DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址。
  2. DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息。
  3. DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址。
  4. DHCP 服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机。

DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。

DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。
DHCP是应用层协议,因为它是通过客户/服务器方式工作的,DHCP客户端向DHCP服务器请求服务。
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行期间,客户端和服务器端都没有标识自己身份的IP地址,因此不可能通过单播的形式进行交互。
采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么就不可能通过双方的套接字建立连接。

4)网际控制报文协议(ICMP)

为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(InternetControl MessageProtocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是IP层协议。

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器,向源主机报告差错和异常情况。共有以下5种类型:
1)终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
2)源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
3)时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
4)参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
5)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不应发送ICMP差错报告报文的几种情况如下:
1)对ICMP差错报告报文不再发送ICMP差错报告报文。
2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3)对具有组播地址的数据报都不发送ICMP差错报告报文。
4)对具有特殊地址( 如127.0.0.0 或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文有4种类型:回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文,最常用的是前两类。
ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute(UNIX中的名字,在Windows中是tracert, 可以用来跟踪分组经过的路由)。其中PING使用了ICMP回送请求和回答报文,Traceroute (Tracert) 使用了ICMP时间超过报文。

注意:PING 工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP。Traceroute/Tracert工作在网络层。

2. IPv6

(1)IPv6的特点

解决IP地址耗尽问题的措施有以下三种:
①采用无类别编址CIDR,使IP地址的分配更加合理;
②采用网络地址转换(NAT)方法以节省全球IP地址;
③采用具有更大地址空间的新版本的IPv6。
其中前两种方法只是延长了IPv4 地址分配结束的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。
IPv6的主要特点如下:
1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。IPv6的字节数(16B)是IPv4字节数(4B)的平方。
2)扩展的地址层次结构。
3)灵活的首部格式。
4)改进的选项。
5)允许协议继续扩充。
6)支持即插即用(即自动配置)。
7)支持资源的预分配。
8) IPv6 只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6不允许分片(不允许类似IPv4在路由分片)。
9)IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
10)增大了安全性。身份验证和保密功能是IPv6的关键特征。
虽然IPv6与IPv4不兼容,但总体而言它与所有其他的因特网协议兼容,包括TCP、UDP、ICMP、IGMP、 OSPF、BGP和DNS,只是在少数地方做了必要的修改(大部分是为了处理长的地址)。IPv6 相当好地满足了预定的目标,主要体现在:
1)IPv6有比IPv4长得多的地址。IPv6的地址用16个字节表示,地址空间是IPv4的2128-32=296倍,从长远来看,这些地址是绝对够用的。
2)简化了IP分组头,它包含8个域(IPv4是12个域)。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率。
3)更好地支持选项。这一改变对新的分组首部很重要,因为一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度。

(2)IPv6 地址

IPv6数据报的目的地址可以是以下三种基本类型地址之一:
1)单播。单播就是传统的点对点通信。
2)多播。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。
3)任播。这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
IPv4地址通常使用点分十进制表示法。如果IPv6也使用这种表示法,那么地址书写起来将会相当长。在IPv6标准中指定了一种比较紧凑的表示法,即把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。
通常可以把IPv6地址缩写成更紧凑的形式。当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址4BF50000:000:0000:BA5F:039A:000A:2176缩写为4BF5:0:0:0:BA5F:39A:A:2176。
当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(:)。当然,双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域的个数来推算。这样一来,前述地址可被更紧凑地书写成4BF5::BA5F:39A:A:2176。

IPv6扩展了IPv4地址的分级概念,它使用以下3个等级:第一级(顶级)指明全球都知道的公共拓扑;第二级(场点级)指明单个场点;第三级指明单个网络接口。IPv6 地址采用多级体系主要是为了使路由器能够更快地查找路由。
IPv4向IPv6过渡只能采用逐步演进的办法,同时还必须使新安装的IPv6系统能够向后兼容。
IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略:双协议栈技术是指在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么在路由器的不同接口上分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络;如果这台设备是一台计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。隧道技术是将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syn
03-17

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值