网际协议(Internet Protocol,IP)是TCP/IP体系结构中的网络层的协议,是该协议最重要的组成部分之一。常说的IP地址就是IP协议的一部分。
IP协议 是整个TCP/IP协议族的核心,也是构成互联网的基础。IP协议位于TCP/IP模型的网络层,它可以向传输层提供各种协议的信息,例如TCP、UDP等;还可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术传送。
为了能适应异构网络,IP强调适应性、简洁性和可操作性,并在可靠性方面做了一定的牺牲。IP协议不保证分组的交付时限和可靠性,所传送分组有可能出现丢失、重复、延迟或乱序等问题。
正是因为IP协议的优势,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此IP协议也可以叫作“因特网协议”。
IP协议主要包含三方面内容:IP编址方案、分组封装格式及分组转发规则。
IP地址是IP协议的一个重要组成部分。IP地址(Internet Protocol Address)指互联网协议地址,又称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址和MAC地址的作用类似,通过不同的IP地址,标识不同的目标位置,这样数据才能有目的地传输过去。就像每家的门牌号,只有知道对方的门牌号,信件才能发出去,邮局才能去送信,对方才能拿到这封信。地址必须是唯一的,不然有可能送错。
最常见的IP地址是IPv4地址,IPv4地址通常用32位的二进制表示,通常被分隔成4个8位的二进制数,也就是4字节。IP地址通常使用点分十进制的形式进行表示(a.b.c.d),每位的范围为0~255。例如常见的192.168.0.1,用二进制点分十进制表示如表2-2所示。以下主要以IPv4地址为例介绍IP地址的相关知识,如无特别说明,IP都是指IPv4。
表2-2
同MAC地址的前半部分标明生产厂商的操作类似,32位的IP地址也通过分段划分为网络位和主机位。但根据不同划分,网络位与主机位的长度并不是固定的。
● 网络位也叫网络号,用来标明该IP地址所在的网络,在同一个网络或者网络号中的主机可以直接通信,不同网络的主机只有通过路由器转发才能进行通信。
● 主机位也叫主机号,用来标识终端的主机地址号码。
网络号可以相同,但同一个网络中的主机号不允许重复。网络位和主机位的关系就像以前的座机号码,例如010-12345678,其中010是区号,后面是本区的电话号码。
Internet委员会定义了5种IP地址类型,以适应不同容量、不同功能的网络,如表2-3所示。
表2-3 网络位与主机位
(1)A类地址。
在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为主机号码的组合,称为A类地址。A类网络地址数量较少,有2 7 -2=126个网络,但每个网络可以容纳主机数达2 24 -2=16777214台。
A类网络地址的最高位必须是“0”,但网络地址不能全为“0”,也不能全为“1”。也就是A类地址的网络地址的第一字节范围为1~126,不能为127,因为该地址被保留用作回路及诊断地址,任何发送给127.×.×.×的数据都会被网卡传回该主机,用于检测使用。每个网络支持的最大主机数为2 24 -2=16777214台。
(2)B类地址。
在IP地址的四段号码中,前两段号码为网络号码,后两段号码为主机号码,称为B类地址。如果用二进制表示IP地址,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识长度为16位。B类网络地址第一字节的取值为128~191,所以B类的网络的第1个可用网络号为128.1.0.0。
B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为2 16 -2=65534台。
在B类地址中的169.254.0.0也是不使用的,在DHCP发生故障或响应时间太长而超出了一个系统规定的时间,系统会自动分配这样一个地址。如果发现主机IP地址是一个这样的地址,该主机的网络大都不能正常运行。
(3)C类地址。
在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地主机的号码的组合,称为C类地址。如果用二进制表示IP地址,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类网络地址取值为192~223,C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含2 8 -2=254台计算机。C类网络的第1个可用网络号为192.0.1.0。
(4)D类地址。
D类IP地址不分网络号和主机号,也称多播地址或组播地址。在以太网中,多播地址命名了一组在该网络中可以接收相同多播或组播的一类站点。多播地址的最高位必须是“1110”,范围为224~239。
(5)E类地址。
E类地址为保留地址,也可以用于实验,但不能分给主机,E类地址以“11110”开头,范围为240~255。
在互联网上进行通信,每个联网的设备都需要从A、B、C类地址中获取到一个正常的。可以通信的IP地址,这个地址叫外网地址或公网地址。但是由于网络的飞速发展,需要联网并需要使用IP的设备已经不是IPv4地址池所能满足的。为了满足如家庭、企业、校园等需要大量IP地址的局域网的要求,Internet地址授权机构IANA将A、B、C类地址中各挑选的一部分保留下来,作为内部网络地址使用,保留地址也叫私有地址或者专用地址,即内网IP地址。它们不会在全球使用,只具有本地意义。保留地址如表2-4所示。
表2-4
内网IP只能在局域网中使用,通过网络地址转换(NAT)技术,将内网IP转换为公网IP的形式,才能传输数据。返回的数据包会根据转换映射表再回传给局域网中的特定设备。转换一般在路由器上实现,一般会使用不同端口进行标记。转换示意图如图2-16所示。
图2-16
网络号也叫网络地址,代表某网段所在的网络,从概念上来说,当某网络的网络地址的主机号为全0,网络地址代表着该网段的网络,如192.168.0.0/16代表192.168.0.0这个网络,其中的主机地址为192.168.0.1~192.168.255.254。
广播地址通常称为直接广播地址,广播地址与网络地址的主机号正好相反,广播地址中主机号全为1(二进制表示时),如192.168.255.255/16代表192.168.0.0网络中的所有主机。当向该网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。
互联网在IPv4协议的基础上运行了很长时间。随着互联网的迅速发展,IPv4定义的有限地址空间已经被耗尽。为了解决IP地址问题,拟通过IPv6来重新定义地址空间。在IPv6的设计过程中,除解决了地址短缺问题外,还考虑了性能的优化:端到端IP连接、服务质量(Quality of Service,QoS)、安全性、多播、移动性、即插即用等。只要网络设备支持,IPv4或IPv6客户端之间可以直接通信。现在正在从IPv4向IPv6过渡,所以IPv6同IPv4客户端之间的通信需要转换技术,如图2-17所示,反过来通信也需要解析。
图2-17
与IPv4相比,IPv6主要有如下优势。
(1)明显地扩大了地址空间。
IPv4采用32位地址长度,只有大约43亿个地址,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。从而确保了端到端连接的可能性。
(2)提高了网络的整体吞吐量。
由于IPv6的数据包远远超过64KB,应用程序可以利用最大传输单元(MTU)获得更快、更可靠的数据传输,同时在设计上改进了选路结构,采用简化的报头定长结构和更合理的分段方法,使路由器加快了数据包处理速度,提高了转发效率,从而提高网络的整体吞吐量。
(3)使得整个服务质量得到很大改善。
报头中的业务级别和流标记,通过路由器的配置可以实现优先级控制和QoS保障。
(4)安全性有了更好的保障。
采用IPSec可以为上层协议和应用提供有效的端到端安全保障,能提高在路由器水平上的安全性。
(5)支持即插即用和移动性。
设备接入网络时,通过自动配置可自动获取IP地址和必要的参数,实现即插即用,简化了网络管理,易于支持移动节点。而且IPv6不仅从IPv4中借鉴了许多概念和术语,还定义了许多移动IPv6所需的新功能。
(6)更好地实现了多播功能。
在IPv6的多播功能中增加了“范围”和“标志”,限定了路由范围和可以区分永久性与临时性地址,更有利于多播功能的实现。
联网的设备在获取了IP地址后,并不能直接与另一设备通信,首先会根据对方的网络信息判断彼此是否在同一个网络或网段中。如果是,说明在同一局域网中,可以直接通信。如果不是在同一个网络中,就需要路由设备根据两者所在的网络,按照路由表中的转发规则,计算并判断出最优路径,然后转发出去。这里需要子网掩码来判断对方与自己是否在同一网络中。
另外,除了在企业内部网络使用私有地址的形式进行上网外,还可以对一个高类别的IP地址进行再划分,以形成多个子网,提供给不同规模的用户群使用。这里也需要子网掩码,通过这种方式规划网络,就叫作子网划分。
子网掩码是表示子网络特征的一个参数,它在形式上等同于IP地址,也是一个32位二进制数字,它的网络位部分全部为1,主机位部分全部为0。例如,IP地址192.168.100.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0,如表2-5所示。有时也会用“IP/网络位位数”的格式,如192.168.100.1/24,表示有24位的网络位。
表2-5
知道了IP地址和子网掩码,就可以计算网络号。通过网络号是否一致,判断通信的双方是否在同一网络中。
方法是将两个IP地址与子网掩码分别进行AND(与)运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果相同,就表明它们在同一个子网络中,否则就不是。
例如,已知B类地址为128.245.36.1,那么就可以进行计算它的网络号。因为B类地址的子网掩码为255.255.0.0,需要转换成二进制并进行AND运算,如表2-6所示。
表2-6
按照同样方法可以计算出其他IP的网络号,这样就可以判断它们是否处于同一个网络中。
大、中型企业的网络设备较多,可以使用保留IP在企业内部进行通信,或者使用NAT技术共享上网。企业网络也会按照某标准,为使用的保留IP再次进行细化,以便合理利用网络和方便地管理网络,以实现更复杂的功能。这种IP地址的科学规划在大、中型企业的网络规划中是必不可少的。
例如某公司提供了C类地址192.168.10.0/24,并需要分给5个不同的部门使用,每个部门大概有30台计算机。这里涉及的一个概念就是“借位”。要将24位网络位,8位主机位分给5个部门使用,那么就需要在8位主机位中借出可供5个部门使用的网络号。因为2 2 =4,2 3 =8,那么就需要从8位主机位中借出3位作为网络位。剩下的5位,可以存在2 5 -2=30台主机满足要求。该网络的网络号的位数就变成27,也就是有27位的网络号。子网掩码就是11111111. 11111111 11111111. 111 00000,即255.255.255.224。划分的这8个范围的信息如表2-7所示。
表2-7
从传输层发送来的数据在网络层加入网络层的标识后继续向下发送。
IP数据报在模型中的位置和结构如图2-18所示。应用层到达传输层后,封装了TCP/UDP首部,然后变成TCP报文后传到网络层,封装了IP地址后变成IP报文,传入数据链路层后封装MAC地址和尾部FCS,进入物理层,开始传输。
图2-18
IP数据报的结构如图2-19所示。
图2-19
一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须有的。在首部的固定部分的后面是可选字段,其长度是可变的,具体内容如下。
● 版本: 占4位,指IP协议的版本,目前的IP协议版本号为4(即IPv4)。
● 首部长度:占4位,可表示的最大数值是15个单位(一个单位为4字节)。因此IP的首部长度的最大值是60字节。
● 服务类型: 占8位,用来获得更好的服务,在旧标准中叫服务类型,但实际上一直未被使用过。
● 总长度: 占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。
● 标识: 占16位,是一个计数器,用来产生数据报的标识。
● 标志: 占3位,目前只有前两位有意义。标志字段的最低位是MF(More Fragment)。MF1表示后面还有“分片”。MF0表示最后一个分片。标志字段中间的一位是DF(Don't Fragment)。只有当DF=0时才允许分片。
● 片偏移: 片偏移(12位)指出较长的分组在分片后某片在原分组中的相对位置。片偏移以8字节为偏移单位。
● 生存时间: 生存时间(8位)记为TTL(Time To Live),数据报在网络中可通过的路由器数的最大值。
● 协议: 协议(8位)字段指出此数据报携带的数据使用的何种协议,以便明确主机的IP层将数据部分上交给哪个处理过程。例如网络层的ICMP、IGMP、OSPF等或者传输层的协议。
● 首部校验和: 首部校验和(16位)字段只校验数据报的首部,不校验数据部分。这里不采用CRC校验码,而采用简单的计算方法。
● 源地址和目的地址: 各占4字节(32位),记录发送源的IP地址以及到达目标的IP地址。
● 可选字段: IP首部的可选字段就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。可选字段的长度可变,从1~40字节不等,取决于所选择的项目。增加首部的可选字段是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被用到。