重新认识 IP地址

2023-05-16

目录

一、什么是网段划分

二、如何分配子网中的IP?

三、IP地址的分类

1、早期划分方式

(1) 早期分类方式

(2) 早期分类的局限性

2、CIDR划分(子网掩码划分)

(1) 基本思路

(2) 实现方式

四、IP地址的数量限制

五、私有IP地址和公网IP地址


IP地址能够唯一标识全网中的某一台主机,实际上,我们平时所看到的IP地址其实是由网络号主机号组成。假设我们要通过学号查找学校里的某个学生,可以通过学号的前半部分确定学生所属院系专业,然后跟据后半部分确定学生所在班级学号。

  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;

一、什么是网段划分

从上面的例子可以知道,网络号就相当于 院系专业,主机号就相当于班级序号。网段划分就是将整个网络划分为多个区域,这些区域我们称为“子网”。每一个子网中的主机有相同的网络号,以及不能重复的主机号。主机号标识了在该网段内的唯一性,就好比一个专业里,不会出现两个9班3号的学生,但是不同专业的班级序号是可以相同的。

二、如何分配子网中的IP?

当一个子网中新增一台主机的时候,分配IP地址的时候必须要保证主机号不同,但是手动分配过于麻烦,为了解决这个问题,我们提出了技术叫做DHCP,这种技术可以自动给子网内新增主机节点分配IP地址,避免了手动管理的不便。

以我们使用手机连接WiFi为例,我们输入Wifi密码验证合法性,其实就是在访问一个网段里的路由器,当验证通过的时候,此时路由器会未被使用的IP地址中挑出一个分配给你的手机,充当一个临时IP,路由器分配IP的过程就是DHCP技术的作用过程。

补充:我们要发送消息给别人,其实是先传递给路由器,然后由路由器传递到其他网段;除此之外,路由器会给验证通过的主机分配一个临时IP地址用于通信。

三、IP地址的分类

1、早期划分方式

(1) 早期分类方式

最早是将IP地址划分为五类。为了划清每一类的界限,每一类的最开始的一个或者几个比特位是固定的。

  • 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

(2) 早期分类的局限性

但是这种划分方式也存在局限性,很多组织都申请 B类地址,因为B类的主机号是16位,理论上一个子网内可以容纳的主机数是65536,相对于A类和C类比较中规中矩。这就导致B类地址很快就被申请完了。

除此之外,实际上一个子网内不会存在6万多台主机,这就导致一个子网内有大量的IP地址被浪费了。

2、CIDR划分(子网掩码划分)

(1) 基本思路

为了减少一个子网中被浪费的IP地址数,我们后来引入了子网掩码来区分网络号和主机号。区分A类和B类的主要特点是最开始固定的几个比特位,而并非网络号和主机号的位数,因此网络号分配多少位,主机号分配多少位是由我们自己决定的。

以B类为例,假设一个子网内实际没有 65536 台主机,可以将主机号的一个比特位分给网络号,网络号多了一位就相当于新增了两个子网,这新增的两个子网可以用到其他地方。

(2) 实现方式

仍然以上述为例,我们要将B类IP地址的主机号分一位给网络号,其实我们可以将IP地址和 一个32位二进制数 “按位与”,保留部分就是 网络号,此时新网络号所在网段可以有的主机数就是 32768。其中用到的某个二进制数就是“子网掩码”。

再比对一下前后的子网IP的取值范围:

补充: 关于子网掩码的实际使用,可以参考:基于现有路由表进行路由转发的过程

四、IP地址的数量限制

IP地址是一个32位的正整数,转换成十进制大概是43亿左右,如果每一个设备都分配一个IP地址,很显然现有的IP地址是无法满足需求的,尽管子网掩码的划分方式一定程度上缓解了IP地址不够用的问题(提升利用率,减少浪费),但IP地址枯竭问题依然存在。

下面介绍其他三种方式来缓解IP地址不够用的问题。

  • 动态分配IP地址:只给接入网络的设备分配IP地址,断开连接以后将IP地址回收
  • NAT技术
  • IPv6:IPv6并不是IPv4的简单升级版。这是互不相干的两个协议,彼此并不兼容;IPv6用16字节128位来表 示一个IP地址,但是目前IPv6 比特科技 还没有普及。

五、私有IP地址和公网IP地址

如果一个企业内部要组件一个局域网用于内部通信,但是不接入网络,这样的话,该局域网内部使用任意的IP地址都可以。关键在于不能接入网络。RFC 1918规定了用于组建局域网的私有IP地址:

  • 10.*,前8位是网络号,共16777216个地址
  • 172.16.* 到 172.31.*,前12位是网络号,共1048576个地址
  • 192.168.*,前16位是网络号,共65,536个地址

该范围内的都是私有IP,其余的则称为公网IP(全局IP)

关于公网IP和私有IP的详细内容可以参考:公网IP和私有IP 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新认识 IP地址 的相关文章

  • RISC-V MCU 导盲手套

    RISC V MCU 导盲手套 关于本文队伍名称第一部分 设计概述1 1 设计目的1 2 应用领域1 3 主要技术特点1 4 关键性能指标1 5 主要创新点 第二部分 系统组成及功能说明2 1 整体介绍2 2 各模块介绍 第三部分 完成情况
  • 告别VMWARE!开源,免费,高效率,跨平台的

    与所有Linux爱好者一样 xff0c 对Windows的感情都是虽然不喜欢 xff0c 但是有些时候还真离不开这个玩意 那怎么办呢 xff1f 虚拟机 xff01 最早接触的虚拟机是virtualpc xff0c 这个软件自从被微软收购之
  • 保护机制

    一 SSP Stack Smashing Protection SSP属于编译器层面的防护 具体实现 1 xff0c 在栈中 xff0c ebp与变量之间插入随机值canary xff0c 用于监视是否栈溢出 xff1b 2 xff0c 在
  • Linux系统溢出漏洞学习

    系统环境 xff1a Linux 3 0 0 12 generic athlon DISTRIB DESCRIPTION 61 34 Ubuntu 11 10 34 gcc Ubuntu Linaro 4 6 3 1ubuntu5 4 6
  • db dw dd 与equ的区别

    此前在写汇编的过程中 xff0c 一直不理解两者间的区别 xff0c 例如 xff1a address1 dw 1000h address2 equ 2000h mov ax address1 mov bx address2 db dw d
  • c++/cmake/cmakelists/cmakelists子目录的添加

    cmake minimum required VERSION 3 10 project learning to create project set CMAKE CXX STANDARD 11 set LIBRARY OUTPUT PATH
  • RoboMaster怎么设计新步兵悬挂

    流程 xff1a 明确需求 gt 提出可量化目标 gt 方案提出与评估 gt 细化方案 gt 任务分配 gt 画图设计 gt 图纸提交与验收 gt 加工 gt 装配 gt 机械调试 需求 xff1a 性能优越的悬挂 目标 xff1a 1 任
  • windows7资源管理器无响应的解决方案

    windows7使用过程中常常会出现资源管理器无响应 xff0c 分多种情况 xff1a 1 xff0c 由于第三方程序大量占用内存 xff0c 系统响应速度变慢 xff0c 选择等待程序响应 xff0c 过一段时间即可恢复正常 xff1b
  • 黑客技巧:Google hacking实现以及应用

    前言 google hacking其实并算不上什么新东西 在早几年我在一些国外站点上就看见过相关的介绍 但是由于当时并没有重视这种技术 认为最多就只是用来找找未改名的mdb或者别人留下的webshell什么的 并无太大实际用途 但是前段时间
  • C语言string库函数介绍(附模拟实现)

    目录 strlen 模拟实现 strcpy 模拟实现 strcat 模拟实现 strcmp 模拟实现 strncpy strncat strncmp strstr 模拟实现 strlen size t strlen const char s
  • Realsense D435i Yolov5目标检测实时获得目标三维位置信息

    文章目录 一 效果演示二 环境配置三 模型配置四 相机配置五 部分代码 六 仓库链接 一 效果演示 Colorimage Colorimage and depthimage 二 环境配置 1 一个可以运行YOLOv5的python环境 pi
  • C语言中return的各种用法

    转自 xff1a https www pinlue com article 2021 06 2614 1611638969328 html
  • 从零开始搭二维激光SLAM --- 激光雷达数据效果对比

    我们知道 xff0c 不同品牌的激光雷达产生的数据是不一样的 xff0c 那这些不同点是如何影响建图效果的呢 xff1f 这篇文章就是来分析这个问题 xff0c 将从不同光强下的点云效果 xff0c 不同夹角下的点云效果 xff0c 以及
  • 海上垂直无人机垂直起降平台

    无人机的降落要实现对飞行轨迹和飞行状态的精确控制 xff0c 对目标地点的精确定位与识别 xff0c 而海上无人机降落具有更多不确定因素 xff0c 现提出一些有效方案 xff0c 以使得无人机海上起降成为可能 无人机起降条件 xff1a
  • 开源自制6通道航模遥控器,Arduino Pro Mini NRF24L01模块

    前言 前段时间跟着LOLI大神的教程制作了LOLI三代控 xff0c 效果很好 但是 xff0c 由于LOLI三代控的接收机带有数据回传功能 xff0c 也就是接收机的无线模块也承担了发射数据功能 xff0c 所以接收机也要使用带有功率放大
  • linux下TCP/IP通讯实例

    下面是server端源码 xff1a include lt stdio h gt include lt stdlib h gt include lt string h gt include lt unistd h gt include lt
  • STM32 USART 一些问题

    SECTION 1 1 2 3 4 5 6 7 8 9 10 11 12 13
  • 数据缓冲策略 —— 无缓冲、行缓冲、全缓冲(缓冲区大小测试)

    printf打印数据时 xff0c 一般会先把数据放入C缓冲区 xff0c 然后再刷新到内核缓冲区 xff0c 最后再写入硬件 这个过程中 xff0c 数据从C缓冲区迁移到内核缓冲区的操作我们称为缓冲 xff08 也可以理解为刷新 xff0

随机推荐

  • K210 FreeRTOS多任务多核系统调度

    一 目的 众所周知 xff0c K210这款AI新品是一款64bit 双核芯片 xff0c 其支持裸机编程 xff0c 并且官方也提供freertos sdk xff0c 方便开发者在其上进行多任务应用开发 那么如何进行任务创建和多核开发呢
  • keil如何添加h文件_KEIL 那些编辑技巧与方法

    当然了 xff0c 很多人现在更多的是使用 VSCode 或者 SI 等软件进行编辑 xff0c 但不可否认的是 xff0c 还有很多道友还是选择 KEIL 作为编辑软件的 xff0c 本篇笔记作为一个编辑技巧的总结 关于 KEIL 软件的
  • 关于keil C51 案例 加入头文件

    1 先在工程下面建立一个 h文件 xff0c 例如delay h 在其中写入要加入的函数声明 xff0c 或者其他的一些预定义 xff1a ifndef DELAY H define DELAY H include lt reg52 h g
  • "extern C", 你真的懂了吗?

    在c 43 43 prime书中看到过 xff0c 在DLL和lib中看到过 xff0c 但是每次看过就不求甚解地一扫而过 心里知道有extern c这个语句 xff0c 却不知道该用在哪里 xff0c 又能起到什么作用 唉 xff0c 想
  • 内存或寄存器定义和赋值

    在嵌入式中 xff0c 会经常遇到寄存器 内存的数据传输 xff0c 如何向寄存器中写入数据呢 xff1f 现举例说明 xff1a define rDISRC0 volatile unsigned 0x4b000000 DMA 0 Init
  • Makefile的文件格式,详解规则

    构建规则都写在Makefile文件里面 xff0c 要学会如何Make命令 xff0c 就必须学会如何编写Makefile文件 1 概述 Makefile文件由一系列规则 xff08 rules xff09 构成 每条规则的形式如下 xff
  • 只声明而不定义变量

    如果想声明一个变量而不定义它 xff0c 就在变量前面添加关键字extern xff0c 而且不要显式地初始化变量 extern int i 声明i而非定义i extern int j 61 0 定义 int k 声明并且定义 注意 xff
  • vector 与 智能指针使用注意事项

    看以下代码 xff0c 执行时会有什么问题 xff1f include lt vector gt include lt stdio h gt include lt stdlib h gt include lt memory gt class
  • SystemV 共享内存(一)—— 共享内存的创建与释放(shmget / shmctl)

    匿名管道和命名管道都是基于文件 的进程间通信 xff0c SystemV方案是在OS内核层面 专门为进程间通信设计的一个方案 xff0c 然后通过系统调用 xff08 system call xff09 给用户提供通信接口 SystemV方
  • TTL 485 232 全双工 半双工 单工---精简总结

    全双工 xff1a 双向2车道 半双工 xff1a 双向1车道 单工 xff1a 单向车道 1 从单片机软件编程角度来说 xff0c RS232 RS485都是转换为TTL电平方式与单片机通信 xff08 CAN收发器把差分信号转化为TTL
  • STM32F4-ADC-常规通道-转换模式配置-总结

    STM32F4 ADC常规通道转换的模式配置 模式选择 此寄存器定义 xff1a 是否自动循环 这两个寄存器定义 xff1a Scan mode xff08 是否轮询序列 xff09 和Discontinuous mode xff08 是否
  • 单片机 裸机 架构

    以前是 while xff08 1 xff09 43 软件定时器 43 中断标志 的框架 xff0c 现在的项目我想尝试一下新的框架 xff0c 简单来说是 主状态机 43 大量子状态机 43 软件定时器 的方式 xff0c 这其中状态机和
  • USART---串口发送数据

    xfeff xfeff while USART1 gt SR amp 0X40 61 61 0 等待发送结束 解析 xff1a USART1 gt SR xff1a 串口 状态 寄存器 USART1 gt SR amp 0X40 即串口状态
  • STM32---串口初始化

    u8 USART RX BUF USART REC LEN 接收缓冲 最大USART REC LEN个字节 bit15 xff0c 接收完成标志 bit14 xff0c 接收到0x0d bit13 0 xff0c 接收到的有效字节数目 u1
  • stm32---RS485初始化

    u8 RS485 RX BUF 64 接收缓冲 最大64个字节 u8 RS485 RX CNT 61 0 接收到的数据长度 函数 xff1a RS485 Init 功能 xff1a 串口初始化配置 参数 xff1a Baud 波特率 备注
  • 定时器0,中断,控制LED闪烁(1s亮,1s灭)---2018-11-07

    include lt reg52 h gt include lt stdio h gt define uchar unsigned char define uint unsigned int sbit LED 61 P2 2 void ti
  • AM2322温湿度传感器(地址0XB8)---I2C总结(I2C_ModBus协议)

  • 数码管---共阳---共阴---段选码---位选码---总结

    共阴极 xff1a 位选为低电平 xff08 即0 xff09 选中数码管 各段选为高电平 xff08 即1接 43 5V时 xff09 选中各数码段 0 f 共阴数码管段选 表 xff0c 无小数点 xff1a unsigned char
  • ubuntu怎样通过终端打开firefox?

    1 直接输入firefox 按回车 2 首先打开火狐浏览器 xff0c 鼠标移到屏幕最顶端 xff0c 出现菜单栏 工具栏 xff0d xff0d 附加组件选项 如下图所示 也可以在火狐浏览器界面 使用快捷键 shift 43 Ctrl 4
  • 重新认识 IP地址

    目录 一 什么是网段划分 二 如何分配子网中的IP xff1f 三 IP地址的分类 1 早期划分方式 1 早期分类方式 2 早期分类的局限性 2 CIDR划分 xff08 子网掩码划分 xff09 1 基本思路 2 实现方式 四 IP地址的