当前位置: 代码迷 >> 综合 >> 4.3 IPv4
  详细解决方案

4.3 IPv4

热度:58   发布时间:2024-01-18 08:25:01.0
	IP定义数据报传送的基本单元-IP分组及其确切的数据格式。
一、IPv4分组
1. IPv4分组的格式一个IP分组由首部和数据两部分组成。首部前一部分的长度固定,20B,是所有IP分组必须具
有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全机制。
IP首部的部分重要字段含义如下:
(1)版本。指IP的版本,目前广泛使用的版本号为4。最常用的首部长度是208,
(2)首部长度。占4位。以32位为单位,最大值为60B(15×4B)。最常用的首部长度是20B,此时不使
用任何选项(即可选字段)(3)总长度。占16,指首部和数据之和的长度,单位为字节,数据报的长度为2^16-1=65545B。以
太网的最大传送单元(MTU)1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数
据)一定不能超过下面数据链路层的MTU值。
(4)标识。占16位。它是—个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是"序
号"(因为IP是无连接服务)。当一个数据报的长度超过网络的MTU 时,必须分片,此时每个数据报
片都复制一次标识号,以便能正确重装成原来的数据报。
(5)标志。占3位。标志字段的最低位为 MF, MF=1表示后面还有分片,MF=0表示最后1一个分片。
标志字段中间的一位是 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地址。2. IP数据报分片一个链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在
链路层数据报中,因此链路具的MTU严格地限制着IP数据报的长度,而且在IP数据报的源与目的路径
上的各段链路可能使用不同的链路层协议,有不同的MTU。例如,以太网的MTU为1500B,而许多广域
网的MTU不超过576B。当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在两
个或多个较小的IP数据报中,这些较小的数据报称为片。片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成
对片的重组。创建一个IP数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个
数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发
送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报
的片。IP首部中的标志位有3比特,但只有后2比特有意义,分别是MF位和DF位。只有当DF=0,该IP
数据报才可以被分片。MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片。当
MF=1,表示相应的原始数据报还有后续的片;当MF =0,表示该数据报是相应原始数据报的最后
一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在IP数据报的哪个位置。3.网络层转发分组的流程
网络层的路由器执行的分组转发算法如下:
1)从数据报的首部提取目的主机的IP地址D,得出目的网终地址N。
2)若网络N与此路由器直接相连,则把数据报直接交付给目的机D,这称为路由器的直接交付;否则
是间接交付,执行步骤3)3)若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为
了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由
器;否则,执行步骤4)。
4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5
5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6
6)报告转发分组出错。二、IPv4地址与NAT
1. IPv4地址连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。传统
的IP地址是分类的地址,分为A、B、C、D、E五类。无论哪类IP地址,都由网络号和主机号两部分组成。即IP地址::={
    <网络号>,<主机号>}。其
中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主
机号标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围必须是唯一的。由此
可见,一个IP地址在整个因特网范围内是唯一的。分类的IP地址如下:A类(1-126):8位为网络号B类(128-191):16位为网络号C类(192-223):24位为网络号D类(224~239):多播地址E类(240~255):保留为今后使用在各类IP地址中,有些IP地址且有特殊用途,不用做主机的IP地址:主机号全为0表示本网络本身,如202.98.174.0。主机号全为1表示本网络的广播地址,又称直接广播地址,202.98.174.255127.0.0.0保留为环路自检 (Loopback Test)地址,此地址表示任意主机本身,目的地址
为环回地址的IP数据报永远不会出现在任何网络上。32位全为0,即0.0.0.0表示本网络上的本主机。32位全为1,即 255.255.255.255表示整个 TCP/IP网络的广播地址,又称受限广播地址。实
际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。2.A类地址可用的网络数为2^7-2,2的原因是:第一,网络号字段全为0的IP地址是保留地址,意思
是"本网络";第二,网络号为127的IP地址是环回测试地址,每个网络中的最大主机数是2^24-2。B
类地址的可用网络数为2^14-1,减一的原因是128.0这个网络号是不可指派的,每个网络中的最大主
机数是2^16-2。C类地址的可用网络数为2^21-1,减一的原因是网络号为192.0.0的网络是不可指
派的,每个网络中的最大主机数是2^8-23.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地址。4.网络地址转换网终地址转换(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.010.255.255.255。B类:16个B类网段,72.16.0.0172.31.255.255。C类:256个C类网段,192.168.0.0192.168.255.255。在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP
地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的
外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全
球地址,或将全球地址转换成本地地址。NAT转换表中存放着{
    本地P地址:端口}{
    全球IP地址,端
口)的映射。通过{
    ip地址:端口}这样的映射方式,可让多个私有P地址映射到同一个全球IP地址。三、子网划分与子网掩码、CIDR
1.子网划分两级IP地址的缺点:IP 地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由
表变得太大而使网络性能变坏;两级的IP地址不够灵活。从1985年起,在IP地址中又增加了个"子网号字段",使两级IP地址变成了三级IP地址,这种做
法称为子网划分。子网划分已成为因特网的正式标准协议。子网划分的基本思路如下:子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结
构如下:IP地址={
    <网络号>,<子网号>,<主机号>}。凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找
到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目
的子网。最后把IP数据报直接交付给目的主机。2.子网掩码为了告诉主机或路由器对一个A类、 B类、C类网络进行了子网划分,使用子网掩码来表达对
原网络中主机号的借位。子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由由一串的1和跟随的一串0组
成。其中,1对应于IP地址中的网络号及子网号,0对应于主机号。计算机只需将IP地址和其对应
的子网掩码逐位"与:(逻辑AND运算),就可得出相应子网的网络地址。现在的因特网标准规定: 所有网络都必须使用子网掩码。如果一个网络未划分子网,那么采用
默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0255.255.0.0255.255.255.0。例如,某主机的IP地址192.168.5.56,子网掩码为255.255.255.0,进行逐位
"与"运算后,得出该主机所在子网的网络号为192.168.5.0。由于子网掩码是个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须
要把自己所在网络(或子网)的子网掩码告诉对方。路由表中的每个条目,除要给出目的网络地址和
下一跳地址外,还要同时给出该目的的网络的子网掩码。在使用子网掩码的情况下:(1)一台主机在设置IP地址信息的同时,必须设置子网掩码。(2)同属于一个子网的所有主机及路由器的相应端口,必须设同的子网掩码。(3)路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下跳地址。
使用子网掩码时路由器的分组转发算法如下:A.从收到的分组的首部提取目的的IP地址,记为D.B.先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D
逐位相"与",看结果是否和相应的网络地址匹配,若匹配, 则将分组直接交付,否则间接交付,执行
步骤C。C.若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由
器:否则,执行D。D.对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位
相"与",其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器:否
则,执行步骤E。E.若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器:否则,执行F。F.报告转发分组出错。3.无分类域间路由选择(CIDR)无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并
且可以在软件的支持下实现超网构造的一种IP地址的划分方法。例如,如果一个单位需要2000个地
址,那么就给它分配个2048地址的块(8个连续的C类网络),而不是一个完全的B类地址。这样可以大
幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。CIDR的主要特点如
下:(1)消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间。
CIDR使用"网络前级"的概念代替子网络的概念。因此,,IP地址的无分类两级编址为: IP::= {
    <
网络前缀>,<主机号>}(2)将网络前缀都相同的连续IP地址组成"CIDR地址块"。一个 CIDR地址块可以表示很多地
址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个
原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。CIDR地址块中的地址数一定是2的整数次幂,实际可指派的地址数通常为2^N-2,N表示主机号
的位数,主机号全0代表网络号,主机号全1为广播地址。网络前缀越短,其地址块所包含的地址数就
越多。而在三级结构中,划分子网是使网络前缀变长。CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短,因此相应的路由表的
项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每个项目由"网络前缀""下一跳地址"组
成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前
缀的路由,因为网络前缀越长,其地址块越小,因而路由就越具体。CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放
在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构是二叉线索。
  相关解决方案