广播地址、组播地址、网关和子网掩码

2023-05-16

一、IP地址分类

IP地址一共32位,由两部分组成,网络号主机号。网络号标识当前设备处于Internet的哪一个网络,主机号标识当前设备属于该网络中的那一台主机。

IP地址一共分为5类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vR7UHfed-1605236465286)(CAE04C995D264910B730BE7300B29319)]

地址分类地址范围最大网络数量最大主机数量
A类地址0.0.0.0-127.255.255.2552^7=1282^24=16777216
B类地址128.0.0.0-191.255.255.2552^14=163842^16=65536
C类地址192.0.0.0-223.255.255.2552^21=20971522^8
D类地址224.0.0.0-239.255.255.255
E类地址240.0.0.0-255.255.255.255

我们常用的IP地址是A类、B类、C类地址,如我们的家庭路由器通常是192.168.x.x,公司级别的网络通常是10.x.x.x。D类地址是多播地址,用于多路广播。

二、私有ip地址和公有ip地址

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:

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

私有地址主要用于在局域网中进行分配,在 Internet上是无效的。这样可以很好地隔离局域网和 Internet。私有地址在公网上是不能被识别的,必须通过NAT将内部IP地址转换成公网上可用的IP地址,从而实现内部IP地址与外部公网的通信。

举个简单的例子,比如我们使用的云服务器,都会有私有ip和公有ip。当我们需要远程访问云服务器时,必须使用公有ip,而不能使用私有ip,就是因为私有ip的数据不会被Internet转发。如果我们希望自己的电脑或者其他存储设备接入互联网,就需要申请公有Ip才可以。

除了私有地址以外的地址都是公有地址,公有地址(Public Address)由Inter NIC(Internet Network Information Center,国际互联网络信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问互联网。

三、广播地址和多播(组播)地址

3.1、多播地址

多播地址,也叫组播地址,组播报文的目的地址使用D类IP地址, D类地址不能出现在IP报文的源IP地址字段。组播地址可以分为四类:

224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;

224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;

224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;

239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。

3.2、组播mac地址和组播IP地址的对应关系

组播MAC地址的高24bit为0x01005e,第25bit为0,即高25bit为固定值。MAC地址的低23bit为组播IP地址的低23bit。由于组播IP的前四位固定为1110,组播IP的24-28位实际上是没有和组播mac建立对应关系的。

我们在某个局域网的主机下向IP地址为239.168.3.255的组播地址发送任意数据,在本地使用wireshark抓取到的数据报文如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0s6hU56-1605236465288)(3C133B703F5F4B76B976E2BFE34F7615)]

将168.3.255转换成二进制为:

10101000.00000011.11111111

取最后23位转换成十六进制得到:

0101000.00000011.11111111

即28.03.255,对应组播mac地址的最后3个byte。

我在做组播测试的时候发现,使用局域网内的某台主机A发送组播数据,局域网内通过网线连接的台式机均可以使用wireshark抓包得到主机A发送的组播数据,而使用笔记本却无法抓到主机A发送的组播数据(主机A可以是电脑和台式机)。不知道为什么,欢迎懂的朋友在评论区留言解答。

3.3、广播地址

在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址。

计算方法(假设ip地址为:172.17.2.118,子网掩码为:255.255.254.0);

  1. 将IP和子网掩码相与计算出网络号;

    10101100 00010001 00000010 01110110 (172.17.2.118)

    11111111 11111111 11111110 00000000 (255.255.254.0)

    10101100 00010001 00000010 00000000 (172.17.2.0为网络号)

  2. 子网掩码取反后与网络号或运算,即为广播地址

    00000000 00000000 00000001 11111111 (子网掩码取反)

    10101100 00010001 00000010 00000000 (网络号)

    10101100 00010001 00000011 11111111 (172.17.3.255即为广播地址)

广播数据有如下特点:

  • TCP/IP协议栈中, 传输层只有UDP可以广播,TCP没有广播的概念.
  • udp广播不需要经过路由器转发,因为路由器不会转发广播数据;

四、子网掩码和网关

4.1、子网掩码的作用

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分

4.2、根据子网掩码计算主机号和网络号

子网掩码是一个32位地址,其对应位为1的位置表示示网络号,对应位为0的位表示主机号。

我们可以将子网掩码和ip地址都转换成二进制,将两者相与就得到了该ip所在的网络号。如IP地址为192.168.3.122,子网掩码为255.255.255.0。

两者转换成二进制得到:

11000000.10101000.00000011.01111010

11111111.11111111.11111111.00000000

相与之后可以得到该Ip地址的网络号是192.168.3,主机号是122。

4.3、网关和网关地址

网关的作用之一是使不同网络号之间的设备能够互联互通。比如设备A的IP地址是192.168.3.1,子网掩码是255.255.255.0,设备B的IP地址是192.168.4.1,子网掩码是255.255.255.0。通过计算可以知道这两台设备处在不同的两个网络中,因此是不能互相通信的,如果想要能够互相通信,就需要网关来处理。

网关其实也是一个网络设备,也有自己的IP地址,这个就是网关地址。比如我们的路由器就是一个典型的网关,路由器的IP就是网关IP,这个IP和子网掩码相与得到的就是这个路由器所在的网络号。

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

广播地址、组播地址、网关和子网掩码 的相关文章

  • gtest中字符串比较是否相等

    1 EXPECT EQ val1 xff0c val2 xff09 class StringCmpTest span class token punctuation span public testing span class token
  • 白盒测试——逻辑覆盖

    白盒测试中的逻辑覆盖有以下六种方法 xff1a 1 语句覆盖 xff1a 每个可执行语句至少被执行一次 2 判定覆盖 xff1a 每个判定的每个分支都至少执行一次 3 条件覆盖 xff1a 判定式中每个条件的每个分支至少执行一次 4 判定条
  • 计算机网络面试题整理

    面试很多时候被问到的问题 xff0c 感觉都没答好 xff0c 统一整理一下 更新 8 23 GET和POST的区别 xff1f GET和POST方法没有实质上区别 xff0c 只是报文格式不同 GET和POST是HTTP协议中的两种请求方
  • 【C语言】c/c++中常用的预定义宏:__LINE__, __func__, __FILE__, __DATE__, __TIME__

    ANSI C标准中的预定义宏 xff08 也是常用的 xff09 xff1a LINE xff1a 在代码中插入当前行号 func xff1a 在代码中插入当前行所在的函数的函数名 FILE xff1a 在代码中插入当前文件的文件名 DAT
  • 无人机入门知识

    无人机入门知识 无人机的定义 现在提到的 无人机 xff0c 通常是说 无人飞行载具 xff08 Unmanned Aerial Vehicle xff0c 简称UAV xff09 xff0c 或称无人飞机 无人飞机系统 xff08 Unm
  • http协议

    一 认识url url被称为统一资源定位符 xff0c 用来表示从互联网上得到的资源位置和访问这些资源的方法 他的表示方法一般为 xff1a span class token operator lt span 协议 span class t
  • 大小端区别和判断

    在代码中看到往寄存器写数据的时候 xff0c 使用到 volatile uint32 t address 61 cpu to le32 value xff0c 进一步追踪 xff0c if BYTE ORDER 61 61 LITTLE E
  • 结构体对齐详解

    1 结构体数据成员对齐的意义 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制 xff0c 它们会要求这些数据的起始地址的值是某个数k的倍数 xff0c 这就是所谓的内存对齐 xff0c 而这个k则被称为该数据类型的对齐模数 al
  • C语言基础之格式化占位符

    在 printf 系列函数中 xff0c 下列哪个格式化占位符有可能导致内存任意写风险 A A n B d C p D s 使用printf修改变量的值 VS2008中使用 n输出遇到的问题及解决方法 include lt stdio h
  • 不常用的访问控制方式——http auth

    今天遇到一个http auth方式的访问控制 xff0c 访问页面时出现输入用户名与密码的验证 xff1a 使用ncrack爆破登陆后 xff0c 当想要爆破目录时 xff0c 必须每次请求都带着authorication头 xff0c 使
  • 数据库中字符串匹配函数like、rlike、instr、regexp_extract

    instr 简介 MySQL hive中函数 xff0c instr str substr position occurrence 其中str代表从哪个字符串中搜索 xff0c substr代表搜索哪个子字符串 xff0c 返回值为子字符串
  • 【C语言】实现linux下的基于C语言的一个简单的TCP客/服 端的通信

    对于基础的好的朋友可以直接取代码 xff0c 如果想要看详细解析的朋友可以详看下方的解析 TCP服务端代码 xff1a include lt stdio h gt include lt string h gt include lt stdl
  • 实验二 OpenGL的简单动画

    ZZU的学弟学妹们不要抄作业哦 一 实验目的 1 掌握OpenGL的闲置函数 2 掌握OpenGL的时间函数 3 掌握OpenGL的简单动画功能 4 了解OpengGL裁剪窗口 视区 显示窗口的概念和它们之间的关系 5 进一步掌握OpenG
  • 使用脚本(命令行)编译KEIL工程

    参考KEIL官网 http www keil com support man docs uv4 uv4 commandline htm Keil Build bat脚本 64 echo off set UV 61 D Keil v5 UV4
  • (二)五次多项式轨迹规划

    一 三次多项式轨迹规划的缺陷 上一篇文章说道 xff0c 三次多项式轨迹规划只能够保证速度和位移连续 xff0c 并不能保证加速度连续 加速度不连续将会对使电机抖动 甚至冲击 二 轨迹规划中的五次多项式 我们对加速度数值进行指定 xff0c
  • (三)抛物线过渡的线性函数规划

    前面说到 xff0c 无论是三次还是五次多项式进行规划存在以下缺点 xff1a 位移往返没有匀速段 这一节中 xff0c 我们的研究对象是初速度和末速度都为0关节运动 一 无过渡线性函数 假设时刻 t t t 和角度
  • GCC的学习(二)头文件及其库制作

    当前目录 43 相对路径 61 绝对路径大写i xff0c I头文件包含路径大写l xff0c L库文件路径小写l xff0c l库名字 xff08 去头去尾没有lib xff0c 也没有so ldd 查看动态库连接库存在性及其路径nm 查
  • VSCODE(八)launch 调试与运行

    前面讲了如何配置任务文件tasks json xff0c 调试功能在程序程序经常会用上 xff0c 那么VSCODE是完成调试功能的呢 xff1f 答 xff1a vscode文件夹内的launch json文件配置 xff0c 一些调试器
  • C++11线程库 (七) 线程的停止

    在这篇文章里 xff0c 我们将会讨论如何在C 43 43 11下停止和终止一个线程 为什么C 43 43 11不直接提供一个停止线程的方法 xff1f 这是因为线程在停止之前可能有一些资源需要被释放 关闭 xff0c 比如说 xff1a
  • QCustomplot(五)QCPAxisRect进行子绘图

    子绘图是比较复杂的 xff0c 你几乎需要掌握QCustomPlot所有类及其含义 那么需要掌握的类有 xff1a QCPAxis 描述轴行为 xff0c 轴需要依赖QCPAxisRectQCPAxisRect 描述矩形区域 xff0c 区

随机推荐

  • 关于C/C++的换行

    可以分为两种情况 xff1a 代码换行长字符串换行 一 C C 43 43 代码换行直接用enter键换行 xff0c 同时注意关键字不要切割 xff1a span class token keyword bool span a span
  • 31线性变换及其矩阵

    一 线性变换的概念 线性变换是数学中一种特殊的映射 xff0c 它具有将向量空间中的元素转换到另一向量空间元素的功能 xff0c 同时也保持了变换前后向量的线性不变的性质 线性变换的数学表达式如下 xff1a T c
  • 30奇异值分解

    在讲SVD之前 xff0c 我们先来看看计算是如何存储一个灰度图的 灰度图会被分割成一块块的小灰度像素 xff0c 然后进行存储 xff0c 数值的大小表示灰度的程度 一个灰度像素用8位进行存储 xff0c 也就是256种状态 xff0c
  • (二)PID控制的Anti-windup

    比例环节 xff1a 快速接近目标积分环节 xff1a 防止稳态误差微分环节 xff1a 减少振荡 被控对象可以分为两个部分 xff0c 分别是执行器 xff0c 用于产生力或者能量从而改变系统 xff0c 和处理 xff0c 比如说温控的
  • Socket的学习(一)什么是Socket?

    本文参考的是 Socket通信原理 https www cnblogs com wangcq p 3520400 html 一 TCP IP UDP是什么 xff1f TCP IP xff08 Transmission Control Pr
  • Socket的学习(二)AF_UNIX实现本地通信

    参考文章 xff1a 1 Unix Domain Socket IPC通信机制 2 How fast are Unix domain sockets 3 read 函数参数理解 一 Unix域的Socket通信及其优点 基于socket的框
  • 工程师笔记|在CMD窗口运行C语言

    cmd窗口大家可能都比较熟悉 xff0c 那如何在cmd窗口编译运行C语言程序呢 xff1f 其实很简单的 xff0c 只需要下载一个C C 43 43 编译器 xff0c 添加一下环境变量 xff0c 之后就能在cmd窗口中编译运行C语言
  • 推挽输出与开漏输出

    推挽输出 要理解推挽输出 xff0c 首先要理解好三极管 xff08 晶体管 xff09 的原理 下面这种三极管有三个端口 xff0c 分别是基极 xff08 Base xff09 集电极 xff08 Collector xff09 和发射
  • 固件、驱动、软件的区别

    不管我们使用什么操作系统 xff0c 无论是 Windows macOS xff0c 还是 Linux xff0c 里面都安装了许多软件 驱动程序和固件 但是 xff0c 这三者概念有什么区别 xff1f 转载微信公众号 xff1a 良许L
  • 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)

    1 51单片机的特性 51单片机之所以成为经典 xff0c 成为易上手的单片机主要有以下特点 xff1a 从内部的硬件到软件有一套完整的按位操作系统 xff0c 称作位处理器 xff0c 处理对象不是字或字节而是位 不但能对片内某些特殊功能
  • I2C—读写EEPROM

    1 I2C协议简介 I2C通讯协议 Inter xff0d IntegratedCircuit 是由Phiilps公司开发的 xff0c 由于它引脚少 xff0c 硬件实现简单 xff0c 可扩展性强 xff0c 不需要USART CAN等
  • SPI—读写串行FLASH

    1 SPI协议简介 SPI协议是由摩托罗拉公司提出的通讯协议 SerialPeripheralInterface xff0c 即串行外围设备接口 xff0c 是一种高速全双工的通信总线 它被广泛地使用在ADC LCD等设备与MCU间 xff
  • C语言中的关键字应用技巧(volatile、const、struct/union、_ _预定义_ _、#/##、void/void*、weak)

    嵌入式C开发关键字的应用技巧 1 volatile volatile修饰表示变量是易变的 xff0c 编译器中的优化器在用到这个变量时必须每次都小心地从内存中重新读取这个变量的值 xff0c 而不是使用保存在寄存器里的备份 xff0c 有效
  • 一文弄懂GPIO不同模式之间的区别与实现原理

    GPIO全称General Purpose Input Output xff0c 即通用输入 输出 其实GPIO的本质就是芯片的一个引脚 xff0c 通常在ARM中所有的I O都是通用的 不过 xff0c 由于每个开发板上都会设计不同的外围
  • printf()是如何与UART外设驱动函数“勾搭”起来的?

    今天给大家分享的是IAR下调试信息输出机制之硬件UART外设 在嵌入式世界里 xff0c 输出打印信息是一种非常常用的辅助调试手段 xff0c 借助打印信息 xff0c 我们可以比较容易地定位和分析程序问题 在嵌入式应用设计里实现打印信息输
  • 卡塔尔世界杯:带“芯片”的智能足球亮相!背后藏着哪些技术原理?

    2022年卡塔尔世界杯正式开幕 xff01 揭幕战上 xff0c 厄瓜多尔队以2 0的比分击败东道主卡塔尔队 xff0c 取得本届世界杯的首场胜利 本场比赛后 xff0c 世界杯东道主首战不败的纪录就此作古 xff0c 这一消息也引发足球圈
  • 串口通信详解

    一 串口通讯简介 串口通信 Serial Communications 的概念非常简单 xff0c 串口按位 bit 发送和接收字节 尽管比按字节 byte 的并行通信慢 xff0c 但是串口可以在使用一根线发送数据的同时用另一根线接收数据
  • C++类详解(public、private、protected)

    二 C 43 43 类的声明 类使用class关键字声明 xff0c 声明方法如下 xff1a class 类名 xff1a public 公有成员 int num private 私有成员 int age protected 保护成员 i
  • linux下网络通信(udp通信协议详解)

    一 udp通信简介 udp是User Datagram Protocol的简称 xff0c 中文名是用户数据报协议 udp协议位于osi模型中的传输层 xff0c 它是一种面向无连接的协议 udp协议并不保证数据一定能够到达对端 xff0c
  • 广播地址、组播地址、网关和子网掩码

    一 IP地址分类 IP地址一共32位 xff0c 由两部分组成 xff0c 网络号和主机号 网络号标识当前设备处于Internet的哪一个网络 xff0c 主机号标识当前设备属于该网络中的那一台主机 IP地址一共分为5类 xff1a 地址分