阅读导航
- 引言
- 一、IP协议基本概念
- 二、IP协议头格式
- 三、网段划分
- 1. 网络号和主机号
- 2. 引入子网掩码
- (1)基本概念
- (2)默认子网掩码
- (3)子网掩码的作用
- (4)子网掩码与IP地址的结合
- (5)网络地址和广播地址
- ⭕网络地址
- ⭕广播地址
- 四、私有IP地址和公网IP地址
- 1. 私有IP地址
- 2. 公网IP地址
- 3. 私有IP地址与公网IP地址的区别
- 五、路由
- 1. 引出路由
- 2. 路由的基本概念
- 3. 路由表
- 4. 路由循环
- 温馨提示
引言
在上一篇文章中,我们深入探讨了传输层的两种主要协议——UDP(用户数据报协议)和TCP(传输控制协议),它们在网络通信中扮演着至关重要的角色。UDP以其低延迟和简单性而著称,适用于需要快速传输但可能容忍一定数据丢失的应用。而TCP则以其可靠性和有序性著称,适用于需要确保数据完整性和顺序的应用。
现在,让我们将视角转向网络层,进一步探索IP协议——互联网协议。IP协议是网络通信的基石,负责在复杂的网络环境中实现主机之间的数据传输。在本文中,我们将详细讨论IP协议的工作原理、它在现代网络中的重要性以及它与其他网络层协议的相互作用。通过深入了解IP协议,我们将能够更好地理解整个网络通信的架构和运作方式。让我们开始这段探索之旅吧。
一、IP协议基本概念
互联网协议(IP)是网络层的核心协议,负责在全球范围内的计算机网络设备间传输数据。它使用IP地址来唯一标识网络中的每个设备,并通过数据包的形式进行数据传输。IP是一个无状态和不保证可靠性的协议,它允许数据包独立地在网络中传输,不维护传输状态,也不保证数据包的顺序、完整性或到达。IP协议支持路由,通过路由器根据目的IP地址和路由表来转发数据包。此外,IP协议还支持广播、多播和分段重组功能,以适应不同网络环境和传输需求。当前广泛使用的是IPv4版本,而IPv6版本由于其更大的地址空间和增强的安全性正在逐步被采用。IP数据包的头部包含了控制信息,如版本、头部长度、服务类型、总长度等,这些信息对于数据包的正确传输至关重要。
⭕名词解释
- 主机: 配有IP地址, 但是不进行路由控制的设备;
- 路由器: 即配有IP地址, 又能进行路由控制;
- 节点: 主机和路由器的统称;
二、IP协议头格式
-
版本(4位):标识IP数据包使用的IP协议版本。对于IPv4,这个字段的值为4。
-
首部长度(4位):表示IP报头的长度(单位为32位字,即4字节)。由于报头长度可以是32位的倍数,这个值乘以4给出了报头的字节长度。
-
服务类型(8位):用于指定数据包的优先级和服务质量要求,如最小延迟、最大吞吐量等。
-
总长度(16位):表示整个IP数据包的长度,包括IP报头和数据负载,单位为字节。
-
标识(16位):用于唯一标识一个IP数据包,以便在数据包被分割后能够重新组装。
-
标志(3位):控制数据包的分割行为。包括:
- 0位:保留,未使用。
- 1位:DF(Don’t Fragment),指示数据包不允许被进一步分割。
- 2位:MF(More Fragments),如果为1,表示还有更多的片段。
-
分片偏移(13位):表示当前片段在原始数据包中的位置,单位为8字节。
-
生存时间(8位):每经过一个路由器,TTL减1,当TTL为0时,数据包被丢弃,以防止无限循环。
-
协议(8位):指定了IP数据包中封装的上层协议类型,如TCP、UDP、ICMP等。
-
头部校验和(16位):用于检测IP报头在传输过程中是否出现错误。
-
源IP地址(32位):发送数据包的设备的IP地址。
-
目的IP地址(32位):接收数据包的设备的IP地址。
-
选项(可变长度):可选字段,用于包含额外的指令或信息,如安全参数索引(SPI)、松散源路由等。选项字段的存在会影响IHL字段的值。
-
IP数据(可变长度):如果选项字段存在,填充字段确保整个IP报头的长度是32位字的整数倍。
三、网段划分
1. 网络号和主机号
🔴IP地址分为两个部分, 网络号和主机号
-
网络号(Network Part):
- 网络号是IP地址中用于标识特定网络的部分。它确保了在相互连接的网络中,每个网络都有一个唯一的标识。网络号的位数取决于子网掩码中网络部分的位数。网络号是IP地址中固定的部分,它决定了数据包应该被发送到哪个网络。
-
主机号(Host Part):
- 主机号是IP地址中用于标识特定网络内设备的那部分。在同一网络段内,所有主机的网络号是相同的,但是每个主机必须有一个唯一的主机号。这样,数据包在到达正确的网络之后,可以根据主机号被正确地交付给目标设备。
⭕过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 最初在1981年的RFC 791中定义,其设计初衷基于几个关键原因:首先,它为早期规模较小的互联网提供了一个简单的框架来分配和管理IP地址;其次,考虑到不同网络规模对地址数量的不同需求,分别用A、B、C类地址来满足大型、中型和小型网络的需求;第三,这种分类方法增加了地址分配的可预测性,简化了网络管理员的工作;此外,它还考虑了早期路由器和网络设备在处理IP地址时存在的技术限制;最后,通过为不同规模的网络分配不同长度的网络号,它优化了路由表的大小和网络的路由效率。
🚨🚨然而,这种分配方式存在一些问题:
- 地址浪费:每个网络类别都有一个固定的网络号长度,导致很多地址空间未被使用,尤其是在C类地址中。
- 灵活性不足:随着互联网的快速发展,固定长度的网络号无法满足多样化的网络规模需求。
- 地址耗尽:随着互联网的迅速扩张,有限的IPv4地址空间开始不足以满足需求。
因此,CIDR(无类别域间路由)被引入以解决这些问题。CIDR通过使用可变长度的子网掩码,允许更精确地分配IP地址空间,减少地址浪费,并提供更大的灵活性来适应不同规模的网络需求。CIDR的引入也促进了更有效的路由聚合,减少了全球路由表的大小。
2. 引入子网掩码
(1)基本概念
子网掩码是一个32位的二进制数字,用来将IP地址分为网络地址和主机地址两个部分。网络地址用于标识特定的网络,而主机地址用于标识网络中的特定设备。
子网掩码通常以二进制形式表示,其中网络部分由连续的1组成,主机部分由连续的0组成。例如,子网掩码255.255.255.0在二进制中表示为11111111.11111111.11111111.00000000。
子网掩码也常以点分十进制形式表示,即将每个8位二进制转换为对应的十进制数。例如,11111111(网络部分)转换为255,00000000(主机部分)转换为0。
(2)默认子网掩码
- A类网络的默认子网掩码是255.0.0.0,意味着前8位是网络部分,其余24位是主机部分。
- B类网络的默认子网掩码是255.255.0.0,意味着前16位是网络部分,其余16位是主机部分。
- C类网络的默认子网掩码是255.255.255.0,意味着前24位是网络部分,其余8位是主机部分。
(3)子网掩码的作用
- 路由决策:子网掩码用于确定数据包是否在同一网络内,以便路由器可以做出正确的路由决策。
- 广播控制:子网掩码帮助确定广播域的范围,确保广播消息只在同一网络内传播。
(4)子网掩码与IP地址的结合
使用子网掩码和IP地址进行逻辑AND运算(&
运算),可以确定数据包的目的地是否在同一网络内。如果结果与子网的网络地址匹配,则数据包在局域网内转发;如果不匹配,则发送到路由器。
✅下表是划分子网的例子:
属性 | 子网1 | 子网2 | 子网3 |
---|---|---|---|
IP地址 | 192.168.1.0 | 192.168.1.64 | 192.168.1.128 |
子网掩码 | 255.255.255.192 | 255.255.255.192 | 255.255.255.192 |
网络号 | 192.168.1.0/26 | 192.168.1.64/26 | 192.168.1.128/26 |
子网地址范围 | 192.168.1.1 - 192.168.1.62 | 192.168.1.65 - 192.168.1.126 | 192.168.1.129 - 192.168.1.190 |
广播地址 | 192.168.1.63 | 192.168.1.127 | 192.168.1.191 |
🚨说明:
-
网络号:网络号是子网掩码中所有位都设置为1的部分对应的IP地址范围。在这个例子中,由于子网掩码是255.255.255.192,网络号就是从192.168.1.0开始的一系列地址,后面跟一个斜杠和网络前缀长度(/26),表示网络部分是前26位。
-
子网地址范围:每个子网的可用IP地址范围,不包括网络地址(每个子网的第一个地址)和广播地址(每个子网的最后一个地址)。
-
广播地址:每个子网的广播地址,用于发送到该子网内所有主机的广播消息。
(5)网络地址和广播地址
⭕网络地址
网络地址是每个子网的第一个IP地址,用于标识特定的网络或子网。它确保了不同子网之间的区分,是数据包在网络中路由的基础。网络地址通常不分配给任何具体的网络设备,而是作为一个标识存在。例如,在一个子网掩码为255.255.255.0的C类网络中,如果网络地址是192.168.1.0,那么这个地址就标识了192.168.1.0/24这个网络。
⭕广播地址
广播地址是每个子网的最后一个IP地址,用于发送数据包到该子网内的所有主机。当数据包发送到广播地址时,子网内的所有主机都会接收到这个数据包,无论它们的具体IP地址是什么。广播地址用于实现子网内的广播通信,如发送ARP请求、网络配置或特定服务的发现。继续上述C类网络的例子,如果子网掩码是255.255.255.0,网络地址是192.168.1.0,那么这个子网的广播地址将是192.168.1.255。
四、私有IP地址和公网IP地址
1. 私有IP地址
私有IP地址是在局域网(LAN)内部使用的IP地址,它们不会在互联网上路由。这些地址由IANA(互联网号码分配机构)保留,专门用于内部网络使用。
- 地址范围:
类别 | 私有IP地址范围 |
---|---|
A类 | 10.0.0.0 - 10.255.255.255 |
B类 | 172.16.0.0 - 172.31.255.255 |
C类 | 192.168.0.0 - 192.168.255.255 |
-
用途:私有IP地址用于家庭、学校、企业等组织的内部网络,它们不需要全局唯一性。
-
特点:
- 由于私有IP地址在不同网络中可能会重复,因此它们不能直接在互联网上通信。
- 通常用于局域网内的设备,如计算机、打印机、路由器等。
-
转换:为了访问互联网,私有IP地址需要通过NAT(网络地址转换)技术转换为公网IP地址。
2. 公网IP地址
公网IP地址是在整个互联网上唯一的地址,它们可以用于互联网上的任何设备,使得设备能够直接与其他设备进行通信。
-
分配:公网IP地址由ICANN(互联网公司注册机构)授权的地区性互联网注册机构(RIRs)进行分配和管理。
-
用途:公网IP地址用于互联网上的服务器、网站、移动设备等,它们需要与外界进行通信的设备。
-
特点:
- 每个公网IP地址都是唯一的,可以在全球范围内进行路由和通信。
- 由于IPv4地址的有限性,公网IP地址可能需要通过ISP(互联网服务提供商)租赁或购买。
-
服务:公网IP地址使得设备能够提供网络服务,如Web服务器、邮件服务器等。
3. 私有IP地址与公网IP地址的区别
特点/类型 | 公网IP地址 | 私有IP地址 |
---|---|---|
唯一性 | 全球范围内唯一 | 只在局域网内部唯一 |
路由 | 可以在互联网上直接路由 | 不能在互联网上路由 |
用途 | 用于全球通信 | 用于局域网内部通信 |
管理 | 由全球机构管理 | 由网络管理员自行分配 |
五、路由
1. 引出路由
当主机A需要向主机B发送数据时,它将依赖路由机制来确保数据能够顺利地一步步到达目的地。这个过程可以类比于问路,其中IP数据包的传输遵循以下步骤:
-
起点:主机A生成一个IP数据包,准备发送给主机B。
-
目的IP检查:当IP数据包到达一个路由器时,路由器首先会检查数据包的目的IP地址。
-
路由决策:路由器根据目的IP地址和自己的路由表来决定如何处理这个数据包。它会判断数据包是否应该:
- 直接发送到目标主机,如果路由器和目标主机位于同一网络段;
- 或者转发到下一个路由器,如果目标网络不在本地。
-
转发过程:如果数据包需要转发,路由器会将其发送到路由表指定的下一跳地址。
-
重复路由:这个过程在每个经过的路由器上重复进行,每个路由器都使用自己的路由表来决定数据包的下一跳。
-
最终到达:数据包经过一系列路由器的转发,最终到达目标网络,并由目标网络的路由器或主机B接收。
-
路由成功:一旦数据包到达主机B,路由过程完成,主机B可以开始处理接收到的数据。
这个过程确保了即使在复杂的网络结构中,数据也能够找到正确的路径,从源头主机A传输到目的地主机B。路由器在这个过程中起着至关重要的作用,它们是数据传输路径上的导航者。
2. 路由的基本概念
路由是决定数据包在网络中传输路径的过程。在计算机网络中,路由发生在网络层,确保数据包能够从发送者到达接收者。
路由器是网络中的一种设备,它连接不同的网络段,并根据数据包的目的IP地址来转发数据包。路由器使用路由表来决定每个数据包的下一跳地址。
3. 路由表
路由表是路由器中存储的一组规则,用于指导数据包的转发。路由表包含目的网络、网关或下一跳地址、子网掩码、接口等信息。
4. 路由循环
路由循环发生在路由表配置错误时,导致数据包在路由器之间无限循环。现代路由协议通常有机制来防止路由循环。
温馨提示
感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!
再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!