为什么有 IP 地址才能上网?聊聊 IP 协议

📅 2026/8/20 13:55:52
为什么有 IP 地址才能上网?聊聊 IP 协议
目录1.基本概念及IP报文格式1.1 概念1.2 IP报文格式2.地址划分管理2.1 网段划分2.1.1 传统五类IP地址划分2.1.2 CIDR无类域间路由2.2 特殊IP地址2.3 私有IP 和 公网IP2.4 如何解决IP地址不够用?我们每天上网刷网页、发消息不同城市、不同局域网的设备能互相传输数据背后全靠 IP 协议在支撑。那么IP协议到底是怎样工作的本片文章带大家了解。1.基本概念及IP报文格式1.1 概念IP协议是网络层的核心协议主要功能是实现逻辑寻址分组转发实现不同局域网/网段间的数据互通是整个互联网通信的基础协议。简单来说就是IP协议帮助数据进行跨网段传输。1.2 IP报文格式各字段的含义如下▶4位版本表示IP协议类型IPv4就是4▶4位首部长度表示IP数据报的首部占多少个32位比特位4个字节4个bit位最大能表示位15故IP数据报首部的最大长度为4*1560位。首部最想长度固定为20故选项最大为40位。▶8位服务类型3位表示优先权字段已经弃用不用在意4位TOS字段每位分别表示最小延时最大吞吐量最高可靠性最低成本。四者相互冲突只能选择其一。还有1位保留字段必须置为0▶16位总长度表示整个IP数据报的长度字节数▶16位标识用于唯一标识发送端主机发送的报文如果该报文后续被分片了那么每一个分片都有这个标识ID来表示他们是属于一个IP报文的▶3位标识第1位是保留位第2位表示是否进行分片0表示分片1表示不分片如果报文长度超过数据链路的MTU也不分片的话该报文会被直接丢弃第3位表示后续是否还有分片0表示还有分片1表示没有分片只有最后一个分片该标志位1其他都为0。▶13位片偏移片偏移实际上就是值该分片在原始报文中的位置方便上层后续组包。▶8位生存时间TTLTTL表示报文到达目的主机所经过路由器的最大跳数报文每经过一个路由器TTL都会-1当TTL减到0还没有到达就直接丢弃。这个字段主要是用来避免出现路由循环。▶ 8位协议表示上层协议。▶16位首部校验和表示报文首部有无损坏。▶ 32位源IP地址和32位目的IP地址表示发送端和接收端。▶ 选项不定长特殊场景指定不同的参数2.地址划分管理首先我们我们需要明白为什么IP地址要进行划分?总体来说划分IP地址的原因是为了避免大量广播消息造成网络瘫痪。在同一个局域网(网段)下发送广播消息后除目标主机该局域网内的其余所有主机的CPU都会接收并处理无用的广播消息大量广播消息占满带宽进而就造成了网络卡顿、瘫痪。因此将一个大的局域网划分成多个小的局域网通过路由器隔离广播域就可以减轻各个主机接收处理广播消息的压力进而大幅减少网络资源的浪费。2.1 网段划分IP地址是由网络号和主机号所组成的32位(4字节)地址 :网络号用来标识具体网段如果两台主机处于同一网段中那么他们的网络号一定相同。主机号用来标识同一网段中具体主机的节点同一网段中的两台设备的主机号一定不能相同而不同网段中的设备主机号可以相同。通过合理地设置网络号和主机号,就可以保证在同一网段中的ip地址一定是不同的。那么就出现一个问题手动管理子网内的IP地址的压力会很大这是一个很麻烦的问题。有一种技术叫做CHDR能够自动为子网内新增的主机节点分配IP地址减轻了手动管理IP地址的烦扰。一般的路由器都具有CHDR的功能所以路由器也可以看作是CHDR的服务器。2.1.1 传统五类IP地址划分过去提出一种划分网络号和主机号的方式分为以下五类每个IP类别的网络号的前几位固定例如A类IP的网络号范围为00000000 ~ 01111111故有IP范围为0.0.0.0 ~ 127.255.255.255各类别IP范围总结如下A类0.0.0.0 ~ 127.255.255.255B类128.0.0.0 ~ 191.255.255.255C类192.0.0.0 ~ 223.225.225.255D类224.0.0.0 ~ 239.225.255.255E类240.0.0.0 ~ 247.255.255.255随着Internet的飞速发展这种划分方案的局限性很快就体现出来大多数组织都申请B类网络地址导致B类地址很快就分配完了而A类却浪费了大量地址。例如申请了一个B类地址理论上一个子网内能允许6万5千多个主机。A类地址的子网内的主机数更多。然而实际网络假设中不会存在一个子网内有这么多的情况。因此大量的IP地址都被浪费了。2.1.2 CIDR无类域间路由针对这种情况提出了新的规划方案称为CIDRClassless Interdomain Routing:CIDR取消了传统的5五类IP地址提出子网掩码来划分网络号和主机号子网掩码也是由32位整数组成的将子网掩码和IP地址做 “ 按位与 ” 运算就可以得到该子网的网络地址网络地址网络号固定主机号全为0广播地址网络号固定主机号权威1举个栗子假设一个IP地址为 140.252.20.68/242.2 特殊IP地址☑️ 将Ip地址中的主机地址全部设为0就成为了网络号代表局域网。☑️ 将IP地址中的主机地址为1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据包☑️ 127.*的地址用于本机环回loop back测似通常是127.0.0.1。2.3 私有IP 和 公网IP私有IP✅ 10*前八位是网络号共16777216个地址。✅ 172.16.* ~ 172.31.*前12位是网络号共1048576个地址。✅ 192.168.*前16位是网络号共65536个地址。包含在这个范围中的都成为私有IP其余的则称为全局IP或公网IP。2.4 如何解决IP地址不够用?我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.这意味着, 一共只有43亿台主机能接入网络么?实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;NAT技术(后面会重点介绍);IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;觉得有帮助的小伙伴不妨给个关注下期为大家分享JVM相关的知识~