网际协议(IP):从理论到实际应用的指南

网际协议(IP,又称互联网协议)是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。与IP配套使用的主要还有以下三个协议:

  • 地址解析协议(Address Resolution Protocol, ARP)
  • 互联网控制报文协议(Internet Control Message Protocol, ICMP)
  • 互联网组管理协议(Internet Group Management Protocol, IGMP)

图4-4所示为这三个协议和IP的关系。在网络层中,ARP在最下面,因为IP经常要使用这个协议。ICMP和IGMP在这一层的上部,因为它们要使用IP。这三个协议将在后面陆续介绍。由于IP是用来使互连起来的许多计算机网络能够进行通信的,因此TCP/IP体系中的网络层常常称为网际层(Internet Layer),或IP层。

在讨论IP之前,必须了解异构网络互连和虚拟互连网络的概念。

异构网络互连

在全世界范围内把数以百万计的网络互连起来,并使它们能够互相通信,这样的任务非常复杂,其中有许多问题需要解决,涉及不同的寻址方案、不同的最大分组长度、不同的网络接入机制、不同的超时控制、不同的差错恢复方法、不同的状态报告方法、不同的路由选择技术、不同的用户接入控制、不同的服务(面向连接服务和无连接服务)、不同的管理与控制方式等。

能不能让大家都使用相同的网络? 这样可使网络互连变得比较简单。答案是不行。因为用户的需求是多种多样的,没有一种单一的网络能够适应所有用户的需求。另外,网络技术是不断发展的,网络的制造厂家也要经常推出新的网络,以在竞争中求生存。因此市场上总是有很多种不同性能、不同网络协议的网络,供不同的用户选用。

从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以将中间设备分为以下四种:

  1. 物理层使用的中间设备叫作转发器(Repeater)
  2. 数据链路层使用的中间设备叫作网桥或桥接器(Bridge)
  3. 网络层使用的中间设备叫作路由器(Router)
  4. 在网络层以上使用的中间设备叫作网关(Gateway) ,用网关连接两个不兼容的系统需要在高层进行协议的转换。

当中间设备是转发器或网桥时,互连仅仅是把一个网络扩大了,从网络层的角度看,这仍然是一个网络,因此一般并不称之为网络互连。网关主要用于高层协议转换,比较复杂,使用场合较少。因此现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择。路由器其实就是一台专用计算机,用来在互联网中进行路由选择。由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关(在本书中,有时也这样用)。对此请读者加以注意。

TCP/IP体系在网络互连上采用的做法是在网络层(即IP层)使用标准化协议,但相互连接的网络可以是异构的。图4-5(a)表示有许多计算机网络通过一些路由器互连。由于参加互连的计算机网络都使用相同的IP,因此可以把互连以后的计算机网络看成图4-5(b)所示的一个虚拟互连网络。所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性是客观存在的,但是我们利用IP可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。

当很多异构网络通过路由器互连起来时,如果所有的网络都使用相同的IP,在网络层讨论问题就显得很方便。例如,在图4-6所示的互联网中的源主机H1要把一个IP数据报发送给目的主机H2。主机H1先查找自己的路由表,看目的主机是否就在本网络上。如是,则直接交付,任务就完成了。如不是,则必须把IP数据报发送给某个路由器(如图4-6中的R1)。R1在查找了自己的路由表后,转发给R2,依此类推,直到数据报到达目的主机H2。

如果我们只从网络层考虑问题,可以把IP数据报想象成在网络层中传送,如图4-7所示。这样就不必画出许多完整的协议栈,使问题的讨论更加简单。

IP地址及编址方式

在TCP/IP体系中,IP地址是一个最基本的概念。任何连接在互联网上的设备,必须拥有IP地址才能和互联网上的其他设备通信。IP地址就是给互联网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位标识符。

IP地址的编址方式经历了三个历史阶段

  1. 分类编址:这是最基本的编址方法,在1981年就通过了相应的标准协议。
  2. 划分子网:这是对最基本的编址方法的改进,其标准RFC950在1985年通过。
  3. 无分类编址:这是目前互联网所使用的编址方法。1993年提出后很快就得到推广应用。

虽然前两种编址方式已成为历史,但由于很多文献和资料都还使用传统的分类IP地址,因此我们在这里还要从分类编址讲起。

分类编址

分类编址方式将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。其中第一个字段是网络号(Net-id),它标志主机(或路由器)所连接到的网络。第二个字段是主机号(Host-id),它标志该主机(或路由器)。一个IP地址可以表示为:

IP地址::={<网络号>,<主机号>}

这种两级编址方式的好处

  1. 方便IP地址的管理:IP地址管理机构在分配IP地址时只分配网络号,剩下的主机号由得到该网络号的单位自行分配。
  2. 减少路由表的项目数:路由器仅根据目的主机所连接的网络号来转发分组,减少了路由表所占的存储空间及查找路由表的时间。

分类编址的具体类型

  • A类地址:网络号字段为1字节,主机号字段为3字节,前1位为0。
  • B类地址:网络号字段为2字节,主机号字段为2字节,前2位为10。
  • C类地址:网络号字段为3字节,主机号字段为1字节,前3位为110。
  • D类地址:用于多播,前4位为1110。
  • E类地址:保留为以后使用,前4位为1111。
划分子网

划分子网的编址改进方案从网络的主机号中借用不定长的若干位作为子网号(Subnet-id) 。两级IP地址就变为三级IP地址:网络号、子网号和主机号。

IP地址:={<网络号>,<子网号>,<主机号>}

划分子网的编址方法大大减少了对A类、B类地址空间的浪费,因为可以将大的A类、B类地址空间划分给多个组织使用。

无分类编址

无分类编址的方法解决IP地址紧张的问题。CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念,可以更加有效地分配IPv4的地址空间。

IP地址:={<网络前缀>,<主机号>}

CIDR采用与IP地址配合使用的32位地址掩码,地址掩码由前面连续的一串1和后面连续的一串0组成,1的个数就是网络前缀的长度。CIDR还使用"斜线记法"(Slash Notation),即在IP地址后面加上斜线"/",然后写上网络前缀所占的位数。

CIDR地址块:网络前缀不仅可以用来表示某个网络的网络地址,还可以用来表示连续的IP地址块。例如,已知IP地址128.14.35.7/20是某CIDR地址块中的一个地址,这个地址块中的最小地址和最大地址可以通过计算得出。

不指派给接口的特殊IP地址

  • D类地址:用于多播。
  • E类地址:保留为以后使用。
  • 全0或全1的地址:一般不能指派给接口,全0表示"这个",全1表示"所有的"。
  • 网络前缀为127的地址:保留作为环回测试地址,用于本主机进程之间的通信。

IP地址的分配:使用CIDR编址方法,可以更加有效地分配IPv4的地址空间,可根据客户的需要分配适当大小的CIDR地址块。

例子:假定某ISP已拥有地址块206.0.64.0/18,某大学从该ISP获得地址块206.0.68.0/22,并需要分配给各系。可以通过CIDR地址块的划分方法,将地址块分配给各系和实验室。

图4-12展示了互联网中的IP地址实例,说明了CIDR编址方法的应用。

总结

IP协议是互联网通信的基础,通过不同的编址方式和CIDR方法,IP地址的管理和分配变得更加灵活和高效。理解IP协议及其相关概念,是掌握网络层功能的关键。

图片文本来源:<<计算机网络教程>>第六版微课版

相关推荐
gywl33 分钟前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
吉大一菜鸡40 分钟前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
WTT00111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
_oP_i2 小时前
HTTP 请求Media typetext/plain application/json text/json区别
网络协议·http·json
杨德杰2 小时前
QT网络(一):主机信息查询
网络·qt
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
yang_shengy2 小时前
【JavaEE】网络(6)
服务器·网络·http·https
OkeyProxy3 小时前
HTTP、HTTPS和SOCKS5代理協議
网络协议·https·云计算·代理服务器·海外ip代理
CCSBRIDGE3 小时前
Magento2项目部署笔记
笔记
zquwei3 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring