> 文档中心 > IP 地址

IP 地址

        IP网络地址采用“网络●主机”的形式,其中网络部分是网络的地址编码,主机部分是网
络中一个主机的地址编码。IP 地址的格式如图下所示。

1.IP地址

IP 地址的格式
0 网络地址 主机地址
10 网络地址

主机地址

110 网络地址 主机地址
1110 组播地址
11110 保留

A        1.0.0.0~127.255.255.255

B        128.0.0.0~191.255.255.255

C        192.0.0.0~223.255.255.255

D        224.0.0.0~239.255.255.255

E        240.0.0.0~255.255.255.255

        IP地址分为5类。A、B、C类是常用地址。IP 地址的编码规定全0表示本地地址,即本
地网络或本地主机:全1表示广播地址,任何网站都能接收。所以除去全0和全1地址外,A
类有126个网络地址
1600 万个主机地址; B类有16 382个网络地址,64 000个主机地址; C
类有200万个网络地址,254 个主机地址

        IP地址通常用十进制数表示,即把整个地址划分为4个字节,每个字节用一个十进制数表
示,中间用圆点分隔。根据IP地址的第一个字节, 就可判断它是A类、B类还是C类地址。
IP地址由美国Internet信息中心( InterNIC)管理。如果想加入Internet, 就必须向InterNIC
或当地的NIC (例如CNNIC)申请IP地址。如果不加入Internet,只是在局域网中使用TCP/IP
协议,则可以自己设计IP地址,只要网络内部不冲突就可以了。
        一种更灵活的寻址方案引入了子网的概念,即把主机地址部分再划分为子网地址和主机地
址,形成了三级寻址结构。这种三级寻址方式需要子网掩码的支持,如图下所示

子网掩码

         子网地址对网络外部是透明的。当IP分组到达目标网络后,网络边界路由器把32位的IP地址与子网掩码进行逻辑“与”运算,从而得到子网地址,并据此转发到适当的子网中。下图所示为B类网络地址被划分为两个子网的情况。

         虽然子网掩码是对网络编址的有益补充,但是还存在着一些缺陷。例如,一个组织有几个
包括25台左右计算机的子网,又有一些只包含几台计算机的较小的子网。在这种情况下,如
果将一个C类地址分成6个子网,每个子网可以包含30台计算机,大的子网基本上利用了全
部地址,但是小的子网却浪费了许多地址。为了解决这个问题,避免任何可能的地址浪费,就
出现了可变长子网掩码(Variable Length Subnetwork Mask, VLSM) 的编址方案。这样,可以
在IP地址后面加上“位数”来表示子网掩码中“1”的个数。例如,202.117.125.0/27 就表示前
27位表示网络号和子网号,即子网掩码为27位长,主机地址为5位长。下图所示为一个子
网划分的方案,这样的编址方法可以充分利用地址资源,特别是在网络地址紧缺的情况下尤其
重要。可变长子网掩码

         在点对点通信(unicast) 中使用A、B和C类地址,这类地址都指向某个网络中的一个主
机。D类地址是组播地址,组播(multicast) 和广播(broadcast) 类似,都属于点对多点通信,
但是又有所不同。组播的目标是一组主机,而广播的目标是所有主机。在一些新的网络应用中
要用到组播地址,例如网络电视(LAN TV)桌面会议(desktop conferencing)协同计算
(collaborative computing)
团体广播( corporate broadcast)等,这些应用都是向一组主机发送信息。

        实现组播需要特殊的方法。首先是网络中必须有能识别组播地址的路由器,这种路由器叫
做组播网关,它接受-一个目标地址为组地址的数据并转发到相应的网络中。其次,主机要能
够发送组播数据报,这需要给IP软件增加两个功能,其一是IP软件要能够接受应用软件指定
的目标组地址,其二是网络接口软件要能够把IP组地址映射到硬件组地址或广播地址上。另外,
主机还需要能够接收组播报文,这要求主机中的IP软件能够向组播网关声明加入或退出某个地
址组,并且当组播数据报来到时向同- -组的各个应用软件各发送一个拷 贝。事实上,IP 软件为
主机连接的每一个网络维护一个组播地址表,以指示各个网络中的组地址分布情况,这些功能
在IP软件中是不难实现的。
        E类保留作研究用,以后的IPv6地址就是在此基础上扩展的。

2.IP协议的操作

        下面分别讨论IP协议的一些主要的操作。

(1)数据报生存期

        如果使用了动态路由选择算法,或者允许在数据报旅行期间改变路由决策,则有可能造成
回路。最坏的情况是数据报在因特网中无休止地巡回,不能到达目的地并浪费大量的网络资源。
        解决这个问题的办法是规定数据报有一定的生存期,生存期的长短以它经过的路由器的多
少计数。每经过-一个路由器,计数器加1,计数器超过一定的计数值,数据报就被丢弃。当然,
也可以用一个全局的时钟记录数据报的生存期,在这种方案下,生成数据报的时间被记录在报
头中,每个路由器查看这个记录,决定是继续转发,还是丢弃它。

(2)分段和重装配

        每个网络可能规定了不同的最大分组长度。当分组在因特网中传送时,可能要进入-一个最
大分组长度较小的网络,这时需要对它进行分段,这又引出了新的问题:在哪里对它进行重装
配? -种办法是在目的地重装配。但这样只会把数据报越分越小,即使后续子网允许较大的分
组通过,但由于途中的短报文无法装配,从而使通信效率下降。
        另外一种办法是允许中间的路由器进行重装配,这种方法也有缺点。首先是路由器必须提供重装配缓冲区,并且要设法避免重装配死锁;其次是由一个数据报分出的小段都必须经过同一个出口路由器才能再行组装,这就排除了使用动态路由选择算法的可能性。
        关于分段和重装配问题的讨论还在继续,已经提出了各种各样的方案。下面介绍在DoD
和ISO的IP协议中使用的方法,这个方法有效地解决了以上提出的部分问题。
        IP协议使用了4个字段处理分段和重装配问题。一个是报文ID字段,它唯一地标识了某
个站某--一个协议层发出的数据。在DoD(美国国防部)的IP协议中,ID字段由源站和目标站
地址、产生数据的协议层标识符以及该协议层提供的顺序号组成。第二个字段是数据长度,即
字节数。第三个字段是偏置值,即分段在原来数据报中的位置,以8个字节(64 位)的倍数计
数。最后是M标志,表示是否为最后一个分段。
        当一个站发出数据报时对长度字段的赋值等于整个数据字段的长度,偏置值为0, M标志
置False (用0表示)。如果一个IP模块要对该报文分段,则按以下步骤进行。

  1. 对数据块的分段必须在64位的边界上划分,因而除最后- - 段外,其他段长都是64位的整数倍。
  2. 对得到的每一-分段都加.上原来数据报的IP头,组成短报文。
  3. 每一个短报文的长度字段置为它包含的字节数。
  4. 第一个短报文的偏置值置为0,其他短报文的偏置值为它前边所有报文长度之和(字节数)除以8。
  5. 最后一个报文的M标志置为0 (False), 其他报文的M标志置为1 (True)。

        下表所示为一个分段的例子

数据报分段的例子

长度 偏置值 M标志 原来的数据报 475 0 0 第一个分段 240 0 1 第二个分段 235 30 0

        重装配的IP模块必须有足够大的缓冲区。整个重装配序列以偏置值为0的分段开始,以
M标志为0的分段结束,全部由同一ID的报文组成。
        数据报服务中可能出现- -个或多个分段不能到达重装配点的情况。为此,采用两种对策应
付这种意外。一种是在重装配点设置一一个本地时钟,当第一个分段到达时把时钟置为重装配周.
期值,然后递减,如果在时钟值减到零时还没等齐所有的分段,则放弃重装配。另外一种对策
与前面提到的数据报生存期有关,目 标站的重装配功能在等待的过程中继续计算已到达的分段
的生存期,一旦超过生存期,就不再进行重装配,丢弃已到达的分段。显然,这种计算生存期
的办法必须有全局时钟的支持。

(3)差错控制和流控

        无连接的网络操作不保证数据报的成功提交,当路由器丢弃-一个数据报时,要尽可能地向
源点返回一些信息。源点的IP实体可以根据收到的出错信息改变发送策略或者把情况报告上层
协议。丢弃数据报的原因可能是超过生存期、网络拥塞FCS校验出错等。在最后一种情况 下
可能无法返回出错信息,因为源地址字段已不可辨认了。
        路由器或接收站可以采用某种流控机制来限制发送速率。对于无连接的数据报服务,可采
用的流控机制是很有限的。最好的办法也许是向其他站或路由器发送专门的流控分组,使其改
变发送速率。

3.ip协议数据单元

IP协议的数据格式如下表所示,其中的字段如下。

  • 版本号: 协议的版本号,不同版本的协议格式或语义可能不同,现在常用的是IPv4, .正在逐渐过渡到IPv6。
  • IHL: IP 头长度,以32位字计数,最小为5,即20个字节。
  • 服务类型:用于区分不同的可靠性、优先级、延迟和吞吐率的参数。
  • 总长度:包含IP头在内的数据单元的总长度(字节数)。
  • 标识符:唯-标识数据报的标识符。
  • 标志:包括三个标志,一个是M标志,用于分段和重装配;另一个是禁止分段标志,如果认为目标站不具备重装配能力,则可使这个标志置位,这样如果数据报要经过一个最大分组长度较小的网络时,就会被丢弃,因而最好是使用源路由以避免这种灾难发生;第三个标志当前没有启用。
  • 段偏置值:指明该段处于原来数据报中的位置。
  • 生存期:用经过的路由器个数表示。
  • 协议:.上层协议 (TCP或UDP)。
  • 头检查和:对IP头的校验序列。在数据报传输过程中IP头中的某些字段可能改变(例如生存期,以及与分段有关的字段),所以检查和要在每---个经过的路由器中进行校验和重新计算。检查和是对IP头中的所有16位字进行1的补码相加得到的,计算时假定检查和字段本身为0。
  • 源地址:给网络和主机地址分别分配若千位,例如,7和24、14和16、21和8等。
  • 目标地址:同上。
  • 任选数据:可变长,包含发送者想要发送的任何数据。
  • 补丁:补齐32位的边界。
  • 用户数据:以字节为单位的用户数据,和IP头加在一起的长度不超过65535字节。
    IP 协议格式
    版本号 IHL 服务类型 总长度
    标识符 D M 段偏置值
    生存期 协议 头部查和
    源地址
    目标地址
    任选数据+补丁

    用户数据

     

MSDN工具下载