【网络协议栈】网络层(中)IP地址的网段划分、CIDR划分以及网络层概念(内附手画分析图 简单易懂)

绪论​
“坚持的意义是,以后回想起来的时候,你会庆幸“真好,我撑过来了”,而不是后悔“要是当初再……就好了”。本章主要写道网络层中非常重要的概念,了解了网络中ip地址的由来,以及ip地址不够的如何的处理方法,后面将继续写到网络层内容敬请期待。
请添加图片描述
话不多说安全带系好,发车啦(建议电脑观看)。


网段划分

IP地址分为两个部分, 网络号和主机号

  1. 网络号: 保证相互连接的两个网段具有不同的标识;
  2. 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
    在这里插入图片描述
    (谈论的都是公网)
    其中的相同的网段可以近似的理解成相同的子网(局域网)
  • 不同的子网其实就是把网络号相同的主机放到一起。
  • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复。

路由器

一个路由器至少要有两个主机,才能跨子网,路由器的主机标识往往是1

路由器一端一定链接着运营商的网络

路由器(在网络层):能构建子网(局域网内IP地址的管理 通过DHCP实现)

DHCP(应用层的概念)能够自动的给子网内新增主机节点分配IP地址,避免了手动管理IP的不便。

一般的路由器都带有DHCP功能。因此路由器也可以看做一个DHCP服务器。
支持http协议+(浏览器中输入路由器背面的ip 就能进入到一个路由器的网页界面中)

划分网络号和主机号

需要知道的是运营商才需进行划分网络号和主机号

过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示(该图出自TCP/IP)。
在这里插入图片描述

  1. A类 0.0.0.0到127.255.255.255

  2. B类 128.0.0.0到191.255.255.255

  3. C类 192.0.0.0到223.255.255.255

  4. D类 224.0.0.0到239.255.255.255

  5. E类 240.0.0.0到247.255.255.255

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织(运营商)都申请B类网络地址(A类申请不到,C类主机不够),导致B类地址很快就分配完了,而A类却浪费了大量地址(因为24位的主机位就代表着这个子网中能连接2 ^ 24台主机,这对于一个子网来说是根本用不完的)。针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing):

CIDR

引入一个额外的子网掩码(subnet mask),来区分网络号和主机号;

  • 网络号 = IP地址 & 子网掩码
  • 子网掩码和IP长度一样也是一个32位的正整数。
  • 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关;
  • 子网掩码的作用就是将划分出来的多的网络号找出来,确定多划分后的网络号和主机号。

具体如下图
在这里插入图片描述

在这里插入图片描述
解释第二个例子,具体如下:
在这里插入图片描述

子网划分的优点:

通过下图理解:
在这里插入图片描述
上图学号也就对应着 ip
其中每个学院有专门的编号(计算机学院:000)也就是目标网络

子网划分:提高定位和查找主机的效率
根据上面的例子,我们通过子网划分后得到的目标网络也就是对应着每一个系的编号,这样可以先通过目标网络就能排除掉很多的可能性,直接找到对应的院系,也就是在确定某个院之前都是直接通过院编号来进行查找的,这样就能大大的缩小查找的范围,返回来就是先根据目标网络进行路由。

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还没有普及。

常见特殊IP地址

  • 将IP地址中的主机地址全部设为0,就成为了网络号, 代表这个局域网 0.0.0.0。
  • 将IP地址中的 主机地址 全部设为1,就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包
    1. 例:设ip:192.168.1.0 它的子网掩码是255.255.255.0 :
    2. 那么它的主机号就是最后8位,所以广播地址就是:192.168.1.255
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量计算机网络细致内容,早关注不迷路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/475165.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web03】Css的引用方式,Css的其他属性,Css进阶布局(水平)

CSS回顾 选择器 基本:标签选择器、ID选择器 标签选择器: 标签{}ID选择器:标签中定义ID属性。 #ID值{}重点:类选择器 标签中定义ID属性。 .类名{}Div与Span div——任意大小的长方形,大小css:width,height控制。–会换…

OpenHands:开源AI编程工具的新贵,让编程更自然

🚀 AI技术在编程领域的应用正迅速发展,其中OpenHands作为一款新兴的开源AI编程工具,以其出色的性能和自然语言编程体验,成为了开发者的新宠。今天,让我们一起探索OpenHands的核心功能、架构设计,以及如何通…

【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读

文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么?3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 📌 汇编语言是很多相关课程(如数据结构…

Github客户端工具github-desktop使用教程

文章目录 1.客户端工具的介绍2.客户端工具使用感受3.仓库的创建4.初步尝试5.本地文件和仓库路径5.1原理说明5.2修改文件5.3版本号的说明5.4结合码云解释5.5版本号的查找 6.分支管理6.1分支的引入6.2分支合并6.3创建测试仓库6.4创建测试分支6.5合并分支6.6合并效果查看6.7分支冲…

最新智能AI问答运营系统(SparkAi)一站式AIGC系统,GPT-4.0/GPT-4o多模态模型+联网搜索提问+AI绘画+管理后台,用户会员套餐

目录 一、文章前言 系统介绍文档 二、功能模块介绍 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI大模型 多模态模型文档分析 多模态识图理解能力 联网搜索回复 3.2 AI智能体应用 3.2.1 AI智能体/GPTs商店 3.2.2 AI智能体/GPTs工作台 3.2.3 自定义…

初识Linux · 线程概念

目录 前言: 线程的背景 线程的概念和Linux中的线程实现 线程杂谈 前言: Linux的学习从开始到现在,我们已经经历了许多大boss,从一开始的熟悉指令,到第一次在gcc环境下编译C语言的代码,到理解文件系统&…

ROS VRRP软路由双线组网方式

虚拟路由冗余协议 Virtual Router Redundancy Protocol (VRRP),MikroTik RouteROS VRRP 协议遵循 RFC 2338。 VRRP 协议是保证访问一些资源不会中断,即通过多台路由器组成一个网关集合,如果其中一台路由器出现故障,会自动启用另外…

用 Python 与 Turtle 创作属于你的“冰墩墩”!

用 Python 与 Turtle 创作属于你的“冰墩墩”! 🦀 前言 🦀🐋 效果图 🐋🐉 代码 🐉 🦀 前言 🦀 冰墩墩是2022年北京冬季奥林匹克运动会的官方吉祥物。以熊猫为原型&#x…

React 中使用 Axios 进行 HTTP 请求

下面是一个案例,展示如何在 React 中使用 Axios 进行 HTTP 请求,包括 GET 和 POST 请求的使用。 1. 安装 Axios 确保项目中已安装 Axios,可以通过以下命令安装: npm install axios2. 创建一个简单的 React 应用 项目结构&…

【GoogleChrome】在开发者工具中修改js、css并生效

以下网站有个登录验证cookie的js 按f12打开开发者工具,看到验证规则很简单 添加替换js的本地文件夹 允许权限 删除js并按ctrls保存,然后刷新页面,新js生效

CentOS操作系统下安装Nacos

CentOS下安装Nacos 前言 这在Centos下安装配置Nacos 下载Linux版Nacos 首先到Nacos的 Github页面,找到所需要安装的版本 也可以右键复制到链接,然后通过wget命令进行下载 wget https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-ser…

数据结构--跳表

跳表 原理实现 原理 跳表(skiplist)是一种链表,而链表查询的时间复杂度为O(n),为了优化查询效率,我们可以让每相邻两个节点升高一层,增加一个指针,让指针指向下下个节点: 这样所有…

【学术论文投稿】JavaScript 前端开发:从入门到精通的奇幻之旅

【中文核刊&普刊投稿通道】2024年体育科技与运动表现分析国际学术会议(ICSTPA 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 目录 一、引言 二、JavaScript 基础 (一)变量与数据类型 &am…

云计算实训室建设的必要性

一、云计算发展的背景 云计算作为一种新型的信息技术服务模式,通过互联网提供动态易扩展且通常是虚拟化的资源,涵盖了从基础设施服务(IaaS)、平台服务(PaaS)到软件服务(SaaS)等多个…

鼠标绘制轮廓

需要对label进行提升&#xff0c;新建MyLabel类&#xff0c;并将其提升到label控件上&#xff0c;详见上篇控件提升 mylabelmouse.h #pragma once #include <QtWidgets/QMainWindow> #include "ui_mylabelmouse.h" #include <QMenu> #include "My…

LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models

ChatGPT 是基于大型语言模型&#xff08;LLM&#xff09;的人工智能应用。 GPT 全称是Generative Pre-trained Transformer。-- 生成式预训练变换模型&#xff1a; Generative&#xff08;生成式&#xff09;&#xff1a;可以根据输入生成新的文本内容&#xff0c;例如回答问题…

STM322完全学习——FSMC控制LCD显示屏

一、GPIO初始化 首先这个功能只有大容量的STM32系列有&#xff0c;C8T6是没有的。再就是FSMC这个使用的是GPIO的复用功能&#xff0c;下面先完成我们需要使用的GPIO的初始化 void TFTLCD_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_…

MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)

一、工具准备 对MongoDB进行导入导出、备份恢复等操作时需要用到命令工具&#xff0c;我们要先检查一下MongoDB安装目录下是否有这些工具&#xff0c;正常情况下是没有的:)&#xff0c;因为新版本的MongoDB安装时不包含这些工具&#xff0c;需要我们手动下载安装。下载成功之后…

【C语言】volatile 防止编译的时候被优化

volatile 易变的 volatile是 C 和 C 中的一个类型修饰符&#xff0c;用于指示编译器该变量可能在程序之外被更改&#xff0c;因此不应对其进行优化。这在涉及硬件寄存器、信号处理或多线程编程时非常有用。 如果你做过单片机开发&#xff0c;你肯定写过这样的代码&#xff1a;…

el-table实现最后一行合计功能并合并指定单元格

效果图如下&#xff1a; 表格代码如下&#xff1a; <el-table width"100%"ref"tableRef" style"margin-bottom: 15px;":data"jlData"class"tableHeader6"header-row-class-name"headerStyleTr6":row-class-n…