IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。
IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。IP协议定义了网络地址寻址方式(IPv4或IPv6),以及数据包在路由器之间传递时的处理规则。每个运行IP协议的设备都有一个唯一的IP地址,用于标识该设备在网络中的位置。
IP协议本身并不提供任何确认机制和重传机制,因此它无法保证数据传输的可靠性。在使用IP协议传输数据时,需要借助其他协议如TCP或UDP来确保数据的可靠传输。
TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网络中传输的则传输层之下的网络层和链路层。
IP协议作为网络层的协议,他的作用主要涉及以下方面:
寻址和标识:IP协议为网络中的设备提供唯一的IP地址,用于标识和寻址设备。每个设备都有一个唯一的IP地址,这使得它们可以在网络上被准确地定位和识别。
路由选择:IP协议负责根据目的IP地址来选择最佳的路径,以确保数据包从源主机传输到目的主机。这包括在网络中查找路由表,以确定数据包应该通过哪个路由器传输。
数据包封装:IP协议将数据包封装为IP数据包。这个封装的过程包括在数据包中添加源IP地址和目的IP地址等信息,以确保数据包能够在网络中正确传输。
跨网络通信:IP协议允许数据包从一个网络传输到另一个网络,因为它能够跨越不同的网络边界。这使得设备可以在全球范围内进行通信,而不受物理网络拓扑的限制。
路由和数据包转发:IP协议负责路由器之间的数据包转发。路由器使用IP地址来确定数据包的下一跳路由器,并根据路由表中的信息来选择正确的路径。这确保了数据包能够沿着正确的路由路径传输。
当数据包到达了网络层之后,经过IP协议包装之后,就会选择合适的路由路径,路由器路径的选择是由IP协议决定的,而非链路层协议。
在网络协议栈中,IP协议位于网络层,负责将数据包从源主机传输到目标主机。IP协议使用IP地址来标识主机和网络,并提供了路由选择的功能。当一个数据包到达路由器时,路由器会根据数据包的目标IP地址查找路由表,并基于此选择下一跳路由器或输出接口。IP协议使用一系列路由算法和度量标准来确定最佳路径,如最短路径优先、延迟、带宽等。
而链路层协议(如以太网)主要负责将数据包从一个链路传输到下一个链路,通过物理地址(MAC地址)进行寻址和传输。链路层协议只关注相邻节点之间的数据传输,而不涉及网络范围内的路径选择。
在这个过程中,网络层和链路层是密不可分的,共同完成了在路由器的传递过程。在路由器和路由器之间的数据传输过程中,网络层和链路层会交替工作,各自负责不同的任务,以确保数据包能够从一个路由器传输到另一个路由器,最终到达目的地。
以下是它们的交替工作方式:
网络层(第三层)工作:在发送路由器(源路由器)上,网络层的主要工作是路由选择。它根据目标IP地址来确定数据包的下一跳路由器,并将数据包封装成IP数据包。这个封装过程包括添加源IP地址和目标IP地址等信息。网络层的路由选择决定了数据包的路径。
链路层(第二层)工作:一旦数据包在网络层被封装为IP数据包,它将被传递到链路层。在发送路由器上,链路层的主要工作是将IP数据包封装为适当的数据链路层帧(例如以太网帧)。这个帧包含了目标物理地址(通常是MAC地址),源物理地址,以及链路层协议需要的控制信息。链路层的工作是确保数据包能够在物理网络上传输。
传输到下一跳路由器:一旦数据链路层帧被创建,它将被发送到源路由器连接的物理网络中。这个帧将经过物理网络中的设备,例如交换机和中继器,以最终到达下一跳路由器。
下一跳路由器的处理:在下一跳路由器上,链路层将负责解封装数据链路层帧,提取出IP数据包,并将其传递到网络层。网络层然后再次执行路由选择,选择下一个跳转的路由器。这个过程在不同的路由器之间重复,直到数据包最终到达目的地。
在网络分层中,TCP只关心提供数据传输的可靠性,而链路层只关心封装成MAC帧以实现在两个节点之间的传递。
所以数据的分片和组装都是由IP层独立完成的,因为MAC帧的最大长度限制MYU为1500字节,所以IP协议传下来的就不能大于这个值。
前提背景是要将数据从一台主机发送到另一台主机时,其实不是直接将数据发送到了目标主机,而是先将数据发送到目标主机所在的网络,然后再将数据发送到目标主机。这种方式可以一次性排查很多,提高检索的效率。因此,我们对网络进行了网段划分。
网络号不同于IP地址,尽管它们通常是IP地址的一部分。
IP地址是一个用于唯一标识设备或主机的32位(IPv4)或128位(IPv6)二进制数。IP地址用于标识一个具体的网络接口或主机,以便在互联网上进行通信。例如,IPv4地址可能是192.168.1.1或者8.8.8.8。
网络号是IP地址中的一部分,它用于标识一个网络。网络号的作用是将IP地址分组为不同的网络,以便路由器能够正确地将数据包传送到正确的目标网络。网络号的范围通常是IP地址的高位部分。例如,在IPv4地址192.168.1.1中,网络号通常是192.168,用于标识所属的网络。
但是这种划分方法有很多的问题:
浪费地址空间:类别划分中每个类别都有固定的网络号和主机号划分,导致了IP地址的浪费。特别是,A类地址的主机号非常大,而B类和C类地址的主机号相对较小,因此在许多情况下,分配的地址数量远远超过实际需要。
不适应网络规模变化:类别划分没有考虑到不同网络规模的需求。大型组织可能会获得过多的IP地址,而小型组织则可能获得太少的IP地址。这种不平衡会导致地址浪费或地址不足的问题。
路由表膨胀:由于每个类别都有固定数量的网络,这导致了路由表的膨胀。路由器需要存储大量的路由表项,即使有些网络可能只有少数IP地址。
难以分配子网:在类别划分下,划分子网变得复杂和不灵活。组织难以有效地划分子网以满足其内部网络拓扑的需求。
于是引入了子网划分和子网掩码。
子网划分是将一个大型IP网络划分成多个更小的子网,每个子网可以包含一定数量的主机。这样做的好处是可以更有效地利用IP地址资源,在网络管理和路由控制方面提供更多的灵活性和可扩展性。
子网掩码则是用于划分子网的一个二进制数字,与IP地址结合使用,确定网络号和主机号的边界。子网掩码的作用是将一个IP地址划分为网络地址和主机地址两部分。子网掩码的长度(用“1”表示的位数)表示了网络地址的长度,其余的位数则是主机地址。例如,一个子网掩码为255.255.255.0的IP地址与子网掩码相与后,就可以得到该IP地址所在的网络地址和主机地址。
在实际应用中,通常使用CIDR(无类域间路由)表示法来表示子网掩码和IP地址。CIDR表示法使用斜线后面的数字来表示子网掩码中网络地址所占用的位数,例如,一个CIDR地址为192.168.1.0/24,代表子网掩码为255.255.255.0,网络地址为192.168.1.0,主机地址范围为192.168.1.1~192.168.1.254。