IP协议是Internet Protocol(互联网协议)的简称,它是一种网络层的协议。IP协议的主要作用是在互联网中传输数据包(也称为IP数据包),它定义了数据包在互联网上如何寻址、路由和传输的方式。
IP协议是一种面向无连接的协议,不保证数据包的可靠传输,也不保证数据包的传输顺序。因此,IP协议一般与传输层的协议(如TCP协议)一起使用,以保证数据包的可靠传输和有序性。
IP协议还定义了IP地址的格式和分配方式。IP地址是一个32位的二进制数,通常用点分十进制表示法来表示。在互联网中,每个设备都必须拥有唯一的IP地址,这样才能与互联网相通。
IP协议是互联网中最基本的协议之一,它为互联网上的数据通信提供了基础的支持。
IP协议头部格式如下:
IP地址分为两个部分:网络号和主机号
如下图:
不同的子网其实就是把网络号相同的主机放到一起。如果在子网中新增一台主机,则该主机的网络号与这个子网的网络号一致,但是主机号必须保证和该子网中的其他主机不同。
在刚开始设计互联网络时,为了便于寻址以及层次化构造网络,IP地址根据网络号划分出五种IP类型:A类地址、B类地址、C类地址、D类地址和E类地址。如下图所示:
其各自的范围如下:
A类:0.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 到 247.255.255.255
随着互联网的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址:
- 例如,申请了一个B类地址,理论上一个子网内能允许6万5千多个主机。A类地址的子网内的主机数更多,然而实际网络架设中,不会存在一个子网内有这么多的情况,因此大量的IP地址都被浪费掉了。
针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing,无类别域间路由)。
CIDR是一种用于分配IP地址的方法,与传统的IP地址划分方式不同,CIDR将IP地址划分为一个个的子网,每个子网的大小可以根据需要灵活调整。CIDR可以在不改变网络地址和主机地址划分的基础上,更好地利用IP地址空间,避免浪费IP地址,提高IP地址的使用效率。
利用CIDR划分子网的步骤如下:
确定需要划分的IP地址范围,例如:192.168.0.0~192.168.0.255。
根据需要分配的子网数量,确定网络前缀长度。例如,如果需要将该地址范围分为4个子网,则网络前缀长度为26位(2的2次方等于4,需要2个二进制位来表示4个子网)。
将IP地址范围划分为多个子网,每个子网的大小由网络前缀长度确定。
为每个子网分配一个独立的网络地址和主机地址范围。
例如,将192.168.0.0/24划分为4个子网,每个子网大小相同,即每个子网有64个IP地址。根据CIDR表示法,网络前缀长度为26位,子网划分如下所示:
CIDR IP子网划分可以更好地利用IP地址空间,并提供更灵活的子网划分方式。它也更容易管理,因为每个子网都有一个独立的网络地址和主机地址范围,这使得网络管理更加简单和高效。
我们知道,IP地址(IPv4)是一个4字节32位的正整数。那么一共只有 2^32 次方个IP地址,大概是43亿左右。而TCP/IP协议规定,每个主机都需要有一个IP地址,这意味着,一共只有43亿台主机能接入网络吗?
实际上,由于一些特殊的IP地址的存在,数量远不足43亿。另外 IP 地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个IP地址。
CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率、减少了浪费,但是IP地址的绝对上限并没有增加),但仍然不够用。这时候有三种方式来解决:
网络地址转换(NAT)是一种网络协议,用于在私有网络和公共网络之间转换IP地址。它通常用于家庭、小型办公室或企业网络,以便在一个公共IP地址下运行多个私有IP地址。
NAT技术可以隐藏内部网络的真实IP地址,从而增加了网络安全性。它可以防止来自互联网的未经请求的数据包进入内部网络,并且可以使内部网络中的主机更难受到攻击。
在NAT中,路由器会分配一个公共IP地址给内部网络中的每一个主机,并在必要时将数据包从公共IP地址转换到内部主机的私有IP地址。这使得内部网络中的多个主机可以共享单个公共IP地址,从而减少了IP地址的使用量。
然而,NAT技术也存在一些限制,例如它可能会影响某些应用程序的性能,特别是需要建立点对点连接的应用程序,例如视频会议或P2P文件共享。
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到因特网上。理论上使用任意的IP地址都可以,但是RFC 1918
规定了用于组建局域网的私有IP地址:
包含在以上范围中的IP地址,都作为私有IP,其余的则称为全局IP(或公网IP)。
路由是将网络数据包从一个网络节点传递到另一个网络节点的过程。在网络中,路由器是负责路由数据包的设备。当一个数据包进入路由器时,路由器会根据其目标IP地址来确定数据包应该转发到哪个网络节点。
在路由的过程中,路由器需要查找路由表以确定数据包应该转发到哪个节点。路由表是一个数据结构,它包含了网络中的所有节点和它们之间的联系。当一个数据包到达路由器时,路由器会将其目标IP地址与路由表中的地址进行匹配,以便找到下一个节点的地址。
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表:
route
命令查看。路由表是用于将IP地址映射到网络路径的数据结构,路由表生成算法用于确定路由表中的网络路径。常见的路由表生成算法包括以下几种:
静态路由:管理员手动配置的路由,它们不会自动更新或更改。静态路由比较容易实现,但需要管理员手动配置,并且不适用于复杂的网络环境。
RIP(Routing Information Protocol):是一种距离向量路由协议,使用跳数作为距离指标,每个路由器将其邻居的路由表传递给其它路由器,以便每个路由器都能获得整个网络的路由信息。
OSPF(Open Shortest Path First):是一种链路状态路由协议,每个路由器将其连接到的所有路由器和网络的信息发送给其它路由器,以便每个路由器都能计算出整个网络的最短路径。
BGP(Border Gateway Protocol):是一种路径向量路由协议,用于在互联网上交换路由信息。它使用AS路径作为路由选择的标准,每个AS(自治系统)都将其拥有的网络告知其它AS,以便确定全局路由。
这些算法都有其优点和局限性,网络管理员需要根据网络拓扑、带宽、延迟等因素来选择适合的路由表生成算法。