当前位置: 首页 > news >正文

计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解

关注:CodingTechWork

引言

  在计算机网络中,IP地址、子网掩码和网络地址是构建网络通信的基本元素。无论是企业网络架构、互联网连接,还是局域网(LAN)配置,它们都起着至关重要的作用。理解它们的工作原理,可以帮助我们更好地设计和管理网络。本文将对IP地址、子网掩码、网络地址和主机地址进行深入剖析,并结合具体示例加以说明。

IP地址

定义

  IP地址(Internet Protocol Address)是用于标识网络中每一台计算机或设备的唯一标识符。IP地址遵循网络层协议,通过数字形式(IPv4)或更长的字符形式(IPv6)表示。IP地址的作用是确保数据包能够从源设备准确地送达目标设备。

IPv4与IPv6

  • IPv4地址由32个二进制位组成,通常以四个十进制数字(每个数字为0-255)表示,每个数字之间用点分隔。比如:192.168.1.1
  • IPv6地址则由128个二进制位组成,通常以八组16位十六进制数表示,每组之间用冒号分隔。IPv6地址是由8个块组成,每个块由4个十六进制数字表示。例如,IPv6地址的一部分可能是00001234abcd 等。每个块的值从 0000ffff 都是有效的。比如:2001:0db8:85a3:0000:0000:8a2e:0370:7334

IP地址的结构

IPv4地址可以分为两部分:

  • 网络部分:用于标识网络的唯一性
  • 主机部分:用于标识网络中具体的设备(主机)

对于IPv6,结构更加复杂和灵活,IPv6地址通常分为三部分:

  • 前缀部分:与网络地址相关,标识网络
  • 子网部分:用于标识子网
  • 接口标识符:用于标识单个设备或主机

IP地址示例

  • IPv4示例:192.168.1.10:这是一个典型的私有IPv4地址,通常用于局域网(LAN)中的设备。
  • IPv6示例:2001:0db8:85a3:0000:0000:8a2e:0370:7334:这是一个典型的全球唯一IPv6地址,表示网络中一个设备。

子网掩码

定义

  子网掩码(Subnet Mask)是用于将IP地址分成网络部分主机部分的工具。它与IP地址相结合,用于确定网络地址和可用的主机地址。
  子网掩码也是由32位二进制数构成,其中“1”表示网络部分"0"表示主机部分。子网掩码通常和IP地址一起使用,以确定哪些IP地址属于同一网络。

作用

  • 分割网络:子网掩码允许将一个大的网络划分为多个小网络(子网),以提高网络的管理效率。
  • 决定网络范围:通过与IP地址按位进行“与”操作(AND运算),子网掩码可以帮助确定IP地址所在的网络范围。

示例(IPv4)

  • 子网掩码 255.255.255.0,即/24(表示前24位是网络部分)。
  • 子网掩码 255.255.255.128,即/25(表示前25位是网络部分)。

示例(IPv6)

  • IPv6网络2001:0db8:85a3::/48:前48位是网络部分,后80位可用于划分子网。
  • IPv6网络2001:0db8:85a3::/64:前64位是网络部分,后64位用于主机部分,通常用于标识单个主机。

网络地址

定义

  网络地址是由IP地址和子网掩码计算得出的结果,它表示网络本身而不是网络中的某个具体主机。网络地址是网络的标识符,通常不能分配给主机。

计算

  • 网络地址是通过将IP地址与子网掩码进行按位与运算得到的。
  • 对于IPv6,网络地址也是通过前缀来定义的。前缀可以表示一个完整的网络或子网,通过根据前缀长度来确定网络地址范围。

作用

  这个网络地址的作用是标识一个子网网络区域,通常用于路由选择和数据包的转发。

主机地址

定义

  主机地址是IP地址中的一部分,表示网络中某个特定设备(主机)的唯一标识符。它位于由子网掩码划分出的网络部分之外,通常是在网络地址之后的部分。主机地址是区分网络内不同设备的标识符。

计算

  • 主机地址是通过将IP地址和子网掩码进行按位与运算后得到的网络地址部分以外的剩余部分。简单来说,主机地址对应于IP地址中的主机部分,它位于子网掩码中标识为0的位置,即IP地址和子网掩码的反码进行与运算。
  • 在IPv6中,主机地址由网络地址的前缀长度决定,网络前缀后面部分即为主机地址的范围。

作用

  • 主机地址的作用是标识同一网络中的不同设备。每个设备在其网络内有一个唯一的主机地址,它在网络中用于确定通信的具体目标。例如,在局域网(LAN)中,每台计算机、打印机等设备都有一个主机地址,用于在该网络内进行数据传输。
  • 主机地址通常用于在本地网络内进行设备间的通信以及从路由器或其他设备中获取数据。

IP地址、子网掩码、网络地址和主机地址示例分析

示例 :典型家庭网络(IPv4)

配置

IP地址:192.168.1.10
子网掩码:255.255.255.0

将子网掩码转换为二进制

255.255.255.0 → 11111111.11111111.11111111.00000000

确定网络部分和主机部分

  • 网络部分:前24位(即11111111.11111111.11111111,即192.168.1)。
  • 主机部分:后8位(即00000000,即主机地址)。

网络地址计算:

将IP地址与子网掩码进行按位“与”运算:

IP地址:    192.168.1.10 → 11000000.10101000.00000001.00001010
子网掩码:  255.255.255.0 → 11111111.11111111.11111111.00000000
结果(网络部分):         11000000.10101000.00000001.00000000
  • 网络地址:192.168.1.0

广播地址计算

广播地址是通过将主机部分(即IP地址中与子网掩码为0的部分)置为全1,得到广播地址:

IP地址:    192.168.1.10 → 11000000.10101000.00000001.00001010
子网掩码反码:               00000000.00000000.00000000.11111111
结果(广播地址):            11000000.10101000.00000001.11111111
  • 广播地址: 192.168.1.255

可用主机地址范围

主机地址范围是从 192.168.1.1192.168.1.254

示例 :公司网络的子网划分(IPv4)

配置

IP地址:10.0.0.10
子网掩码:255.255.255.128(即 /25)

将子网掩码转换为二进制:

255.255.255.128 → 11111111.11111111.11111111.10000000

确定网络部分和主机部分

  • 网络部分:前25位(即11111111.11111111.11111111.10000000,即10.0.010地址段中的前25位)。
  • 主机部分:剩余7位。

网络地址计算

将IP地址与子网掩码进行按位“与”运算:

IP地址:    10.0.0.10   →    00001010.00000000.00000000.00001010
子网掩码:  255.255.255.128 → 11111111.11111111.11111111.10000000
结果(网络部分):              00001010.00000000.00000000.00000000
  • 网络地址: 10.0.0.0

广播地址计算

将IP地址中的主机部分设置为全1,得到广播地址:

IP地址:    10.0.0.10   →    00001010.00000000.00000000.00001010
子网掩码反码:                00000000.00000000.00000000.01111111
结果(广播地址):            00001010.00000000.00000000.01111111
  • 广播地址: 10.0.0.127

可用主机地址范围

主机地址范围是从10.0.0.110.0.0.126

示例 :多子网配置(IPv4)

配置

IP地址:192.168.2.25
子网掩码:255.255.255.192(即 /26)

将子网掩码转换为二进制

255.255.255.192 → 11111111.11111111.11111111.11000000

确定网络部分和主机部分

  • 网络部分:前26位(即11111111.11111111.11111111.11000000,即192.168.225地址段中的前26位)。
  • 主机部分:剩余6位。

网络地址计算

将IP地址与子网掩码进行按位“与”运算:

IP地址:    192.168.2.25    → 11000000.10101000.00000010.00011001
子网掩码:  255.255.255.192  → 11111111.11111111.11111111.11000000
结果(网络部分):               11000000.10101000.00000010.00000000
  • 网络地址:192.168.2.0

广播地址计算

将IP地址中的主机部分设置为全1,得到广播地址:

IP地址:    192.168.2.25    → 11000000.10101000.00000010.00011001
子网掩码反码:                  00000000.00000000.00000000.00111111
结果(网络部分):               11000000.10101000.00000010.00111111
  • 广播地址: 192.168.2.63

可用主机地址范围

主机地址范围是从192.168.2.1192.168.2.62

示例:前缀 2001:0db8:85a3::/64

配置

IPv6地址:2001:0db8:85a3::1
IPv6前缀:2001:0db8:85a3::/64

确定网络部分和主机部分

  • IPv6前缀/64表示网络的前64位是固定的,也就是说,地址的前64位用于表示网络部分,而剩下的64位用于表示主机地址部分。
  • 网络地址部分2001:0db8:85a3::: 表示一个网络地址,其中 :: 是连续的零段,意味着这一部分是:2001:0db8:85a3:0000:0000:0000:0000
  • 地址范围:由于前64位(2001:0db8:85a3)是固定的,因此剩下的后64位部分(0000:0000:0000:0000ffff:ffff:ffff:ffff)可以用来分配给不同的主机或设备。

网络地址计算

最小地址(网络地址):

2001:0db8:85a3:0000:0000:0000:0000

广播地址计算

最大地址(广播地址):

2001:0db8:85a3:ffff:ffff:ffff:ffff

其中,十六进制字符的含义:0 到 f 是十六进制数字的范围,表示:

0 = 十进制的 0
1 = 十进制的 1
2 = 十进制的 2
3 = 十进制的 3
4 = 十进制的 4
5 = 十进制的 5
6 = 十进制的 6
7 = 十进制的 7
8 = 十进制的 8
9 = 十进制的 9
a = 十进制的 10
b = 十进制的 11
c = 十进制的 12
d = 十进制的 13
e = 十进制的 14
f = 十进制的 15

这些地址是该网络(2001:0db8:85a3::/64)内可以分配的所有地址范围。这意味着该网络包含了从 2001:0db8:85a3:0000:0000:0000:00002001:0db8:85a3:ffff:ffff:ffff:ffff的所有IPv6地址。

可用主机地址范围

  • 最小主机地址:2001:0db8:85a3::1(这个地址是网络中的第一台设备)
  • 最大主机地址:2001:0db8:85a3:ffff:ffff:ffff:fffe(这个地址是网络中的最后一台设备)

即为:

  • IPv6地址2001:0db8:85a3::1
  • IPv6网络地址(前64位):2001:0db8:85a3:0000:0000:0000:0000
  • IPv6广播地址(最大地址):2001:0db8:85a3:ffff:ffff:ffff:ffff
  • IPv6可用主机地址范围:从2001:0db8:85a3::12001:0db8:85a3:ffff:ffff:ffff:fffe

总结

  • IP地址:是用于标识网络中设备的唯一地址。
  • 子网掩码:用于将IP地址划分为网络部分和主机部分,帮助区分同一网络内的设备和不同网络之间的设备。
  • 网络地址:通过IP地址和子网掩码按位与运算得到,标识了一个特定的子网或网络区域。
  • 主机地址:网络内某个设备的具体地址,通过网络地址和子网掩码的计算得到的主机部分。

相关文章:

计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解

关注:CodingTechWork 引言 在计算机网络中,IP地址、子网掩码和网络地址是构建网络通信的基本元素。无论是企业网络架构、互联网连接,还是局域网(LAN)配置,它们都起着至关重要的作用。理解它们的工作原理&a…...

C#如何调用执行命令行窗口(CMD)

一、引言 在 C# 的编程世界里,我们常常会遇到需要与操作系统底层进行交互的场景。这时,调用命令行窗口(CMD)就成为了一个强大的工具。无论是自动化日常任务,还是执行外部程序和批处理文件,通过 C# 调用 CM…...

vim练级攻略(精简版)

vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格&#xff0c;tab&am…...

一文速通Java的JDBC编程

目录 &#x1f43d;JDBC的引入 什么是API JDBC的概念及作用 &#x1f347;准备工作 数据库驱动包 下载第三方库 &#x1f43e;JDBC 使用 将jar包导入项目 通过代码使用JDBC的API (1)创建数据源对象并设置属性 (2)和数据库服务器建立网络连接 (3)程序构造SQL语句 (…...

laravel中请求失败重试的扩展--Guzzle

背景 开发过程中&#xff0c;跟外部接口对接时&#xff0c;很常见的要考虑到失败重新的情况&#xff0c;这里记录一下我用的失败重试的情况&#xff0c; 重试方法 1、使用 Laravel 的 HTTP 客户端和异常处理 结合异常处理和重试逻辑 use Illuminate\Support\Facades\Http;…...

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it&#xff1f;安装 markdown-it基本用法样式失效&#xff1f;解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中&#xff0c;Markdown 作为一种轻量级的标记语言&#xff0c;广泛用于文档编写、内容管理以及富文本编辑器中。markdown…...

Mysql MVCC

MVCC 什么是MVCC MVCC&#xff08;多版本并发控制&#xff0c;Multi-Version Concurrency Control&#xff09; 是一种用于数据库管理系统&#xff08;DBMS&#xff09;中的并发控制机制&#xff0c;它允许多个事务同时执行而不互相阻塞&#xff0c;并通过创建数据的多个版本…...

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理&#xff08;1&#xff09;为RestClient&#xff08;2&#xff09;为WebClient&#xff08;3&#xff09;为RestTemplate 注意 一、概述 官方文档…...

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

接下来编译 LED 驱动&#xff0c;该驱动用于在基于华为设备框架&#xff08;HDF&#xff09;的系统中控制 LED 灯的开关&#xff0c;完整代码如下所示&#xff1a; 更多内容可以关注&#xff1a;迅为RK3568开发板篇OpenHarmony...

[javaWeb]初识Web

将该图片在浏览器中打印出来 代码&#xff1a; <html> <head> <title>HTML初识</title> </head> <body> <h1>猫猫</h1> <img src "img/1.jpg"> </body> &l…...

复健第二天之[MoeCTF 2022]baby_file

打开题目在线环境可以看到&#xff1a; 感觉要用伪协议去求&#xff0c;但是我们并不知道flag的位置&#xff0c;这里我选择用dirsearch去扫一下&#xff1a; 最像的应该就是flag.php了 于是就构建payload&#xff1a; **?filephp://filter/convert.base64-encode/resource…...

uniapp 微信小程序 editor 富文本编辑器

<view class"inp boxsizing"><view class"contentBox"><!-- 富文本编辑器 --><view classwrapper><view classtoolbar tap"format"><view :class"formats.bold ? ql-active : " class"iconfon…...

SparkSQL函数

文章目录 1. SparkSQL函数概述2. SparkSQL内置函数2.1 常用内置函数分类2.2 常用数组函数2.2.1 array()函数1. 定义2. 语法3. 示例 2.3 常用日期与时间戳函数2.4 常见聚合函数2.5 常见窗口函数 3. SparkSQL自定义函数3.1 自定义函数分类3.2 自定义函数案例演示 1. SparkSQL函数…...

从零开始学数据库 day2 DML

从零开始学数据库&#xff1a;DML操作详解 在今天的数字化时代&#xff0c;数据库的使用已经成为了各行各业的必备技能。无论你是想开发一个简单的应用&#xff0c;还是想要管理复杂的数据&#xff0c;掌握数据库的基本操作都是至关重要的。在这篇博客中&#xff0c;我们将专注…...

电脑换固态硬盘

参考&#xff1a; https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种&#xff1a; 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜&#xff1a; M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…...

【大数据】机器学习------支持向量机(SVM)

支持向量机的基本概念和数学公式&#xff1a; 1. 线性可分的支持向量机 对于线性可分的数据集 &#xff0c;其中(x_i \in R^d) 是特征向量 是类别标签&#xff0c;目标是找到一个超平面 &#xff0c;使得对于所有 的样本 &#xff0c;对于所有(y_i -1) 的样本&#xff0c;…...

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言&#xff1a;音浪太强&#xff0c;我稳如老 HAL&#xff01; 如果有一天你的耳机里传来的不是《咱们屯里人》&#xff0c;而是金属碰撞般的杂音&#xff0c;那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果&#xff01;在 Android 音频架构中&#xff0c…...

Golang Gin系列-2:搭建Gin 框架环境

开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中&#xff0c;我们将引导你完成安装Go编程语言和Gin框架的过程&#xff0c;Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中&#xff0c;本指南是高效而强大的web开发路线图。 安装…...

FGC_grasp复现

复现FGC_grasp 环境配置数据集准备RuntimeError: CUDA error: invalid device ordinal 问题的解决方案raise BadZipFile("File is not a zip file") zipfile.BadZipFile: File is not a zip file问题的解决方案加载数据集时总是被kill然后服务器也卡住了动不了问题的…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...