IP的基础知识以及相关机制

 


IP地址

1.IP地址的概念

        IP地址是分配给连接到互联网或局域网中的每一个设备的唯一标识符

        也就是说IP地址是你设备在网络中的定位~

2.IP版本~

IP版本分为IPv4和IPv6,目前我们最常用的还是IPv4~~但是IPv4有个缺点就是地址到现在为止,已经接近枯竭~~,但是又由于引入NAT机制,从而减缓了IP地址的损耗,至于NAT机制的原理~~先不着急,下面还是先解释一下什么是IPv4和IPv6~

1).IPv4

IPv4是IP最常见的一种格式~

使用4组数字,每组0~255,期间用逗号隔开~例如:192.168.0.1(点分十进制)

那么为什么使用点分十进制表示~~

因为IP地址本质上是由32位二进制数构成的。由于这个数量偏大,人们不好进行观察~

每8位数字换算成十进制数,两个十进制数之间用.号来进行隔开~

IPv4地址的数量

又因为IPv4是由32位二进制构成~所以IP地址的数量为 2 ^ 32 =4,294, 967,296.也就是接近42.9亿个地址~

对于我们来说这个地址数量是非常大的~~,但是对于全球这些地址数量就太少了~全球的人数远超这个IP地址的数量~~~ (现在的全球人数估计约等于82亿) 

IP地址是上网的通行证~,没有IP地址你是上不了网的~~所以如果这样说的话,将近40亿人无法上网。为了解决这个问题,引入了NAT技术(治标不治本)和IPv6(直接治本)~。那我就说说什么是NAT技术~~


3.NAT机制

知识的引入:

局域网和广域网的概念

局域网:

        局域网是在相对较小的范围内连接的计算机网络

        例如:家庭,校园,公司等~

特点:1.使用私有IP地址

            2.网络速度较快

            3.范围小


广域网

        广域网是覆盖较大的网络,可以连接不同城市、国家、甚至全球的网络~~

        互联网就是广域网的一种~

特点:1.使用公有IP地址 

            2.相对于局域网,速度较慢

            3.范围大g

公有IP地址和私有IP地址

公有IP地址:

        在网络上唯一,由网络服务提供商来进行分配

私有IP地址:

        用于局域网内的,不能再互联网上直接使用~~

 

常见的私有IP地址:192.168.x.x 、10.x.x.x、172.16.0.0 ~ 172.31.255.255 ~

特殊的IP地址


 

除了私有的IP地址和特殊的IP地址,剩下的就都是公网IP地址了~~

那么什么是NAT机制?

NAT通常是让多台设备(局域网)共享一个IP地址。它通常工作在路由器上,把局域网每台设备的私有IP转换成一个公有IP地址,共同使用这个IP地址来进行上网

 

画了一张图来帮你理解下!

这张图是有问题的?

每台局域网的设备都被转换成了唯一的公网IP去访问服务器,那这个服务器返回的响应应该怎么返回回到局域网发送请求的客户端呢?

其实这时候路由器就发送了作用~~

路由器记录了被替换前的IP,替换后的IP、服务器IP 、源端口号、目的端口号等~~

注意:端口号既可以区分同一台主机中的不同进程,也可以区分不同主机的不同进程

 

正确的图,我只是举了一个简单的例子~~👇

 

那么如果局域网中的端口号相同,应该怎么办?

此时路由器也会对端口号来进行映射~

这就是基本的NAT机制~~

NAT只是改变了地址的利用率,并没有实际增加了地址数量,因此我门引入了IPv6.


2)IPv6

为什么说IPv6增加了地址的数量

IPv6是由128位二进制组成~~换算下来

IP地址数量:2^128 约等于340万亿亿亿亿个。可见这个地址数量是非常庞大~

IPv6的格式

用冒号分成 8 组,每组是 4 个十六进制数字

例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334


那你们是不是有个疑问?为什么IPv6没有被全面推广

推广IPv6,从简单地来说,就是增加了地址数量,而且推广IPv6,硬件也要进行相应得更新(支持IPv6),这样下来成本就会很高,但不会带来实际得经济效益~~~所以目前IPv6没被全面推广~~

我的观点就是:未来IPv6会逐渐走向霸主地位哈哈哈哈哈~~

 


码字不易,如果对你由帮助,点个咱再走把😍😍😍😍~谢谢大家

                                                                                                     本文有任何错误,欢迎大佬指正!


 

 

 

 

 

 

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

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

相关文章

本地使用Ollama部署DeepSeek

以下是在本地使用Ollama部署DeepSeek的详细教程,涵盖安装、修改安装目录、安装大模型以及删除大模型的操作步骤。 安装Ollama 1. 系统要求 确保你的系统满足以下条件: 操作系统:macOS、Linux或者Windows。足够的磁盘空间和内存。 2. 安装…

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…

23种设计模式-行为型模式之策略模式(Java版本)

Java 策略模式(Strategy Pattern)详解 🧠 什么是策略模式? 策略模式是一种行为型设计模式,它定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。策略模式让算法独立于使用它的客…

使用 AI Agent 改善师生互动的设计文档

使用 AI Agent 改善师生互动的设计文档 一、引言 1.1 研究背景 当前教育领域的师生互动存在诸多挑战,如教师负担过重、学生个体差异大导致难以满足所有人的需求,以及信息传递延迟等问题。引入AI-Agent能够有效缓解这些问题,通过自动化手段协…

2、Ubuntu 环境下安装RabbitMQ

⼀. 安装Erlang RabbitMqRabbitMq需要Erlang语⾔的⽀持,在安装rabbitMq之前需要安装erlang需要Erlang语⾔的⽀持,在安装rabitMq之前需要安装erlang。 安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看er…

Node.js 操作 ElasticSearch 完整指南:从安装到实战

本文将手把手教你如何搭建 ElasticSearch 环境,并通过 Node.js 实现高效数据检索。包含 10 个可直接复用的代码片段,助你快速掌握搜索、聚合等核心功能! 环境搭建篇 1. ElasticSearch 安装要点 下载 es下载连接 下载下来后,进…

硬核科普丨2025年安全、高效网络准入控制系统深度解析

阳途网络准入控制系统(Network Access Control,简称NAC)是当代网络安全领域的重要工具,有效防止未经授权的访问和数据泄露,保障网络资源的安全性和完整性。本文将深入探讨阳途网络准入控制系统的的重要性和作用。 一、…

搜索二叉树-key的搜索模型

二叉搜索树(Binary Search Tree, BST)是一种重要的数据结构,它有两种基本模型:Key模型和Key/Value模型。 一、Key模型 1.基本概念 Key模型是二叉搜索树中最简单的形式,每个节点只存储一个键值(key),没有额外的数据值(value)。这…

安卓四大组件之ContentProvider

目录 实现步骤 代码分析 onCreate insert query ContextHolder Cursor 作用与用法 基本步骤: 可能的面试题:为什么使用Cursor? 为什么使用Cursor 使用Cursor的好处 静态内部类实现单例模式 AnndroidManifest.xml配置信息 注释的…

【HTML】【Web开发】滑动条挑战

最近在思考如何开发一些入门级的迷你游戏,于是抽空写了个HTML的滑动条小游戏。 游戏规则如下: 在[0, 100]区间内随机生成一个目标值,显示为:X% 倒计时 3 秒过后,出现 10 秒的挑战倒计时和【停止】按钮 挑战倒计时结…

面试踩过的坑

1、 “”和equals 的区别 “”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重…

专业软件开发全流程实践指南

作为一家拥有十余年行业积淀的专业软件开发服务提供商,我们见证了太多项目从无到有的全过程。今天,我们就用最朴实的语言,跟大家聊聊一个软件产品从构思到上线的完整历程。这些经验不仅适用于自建技术团队的企业,对正在寻找软件外…

聊透多线程编程-线程互斥与同步-12. C# Monitor类实现线程互斥

目录 一、什么是临界区? 二、Monitor类的用途 三、Monitor的基本用法 四、Monitor的工作原理 五、使用示例1-保护共享变量 解释: 六、使用示例2-线程间信号传递 解释: 七、注意事项 八、总结 在多线程编程中,线程之间的…

第R4周:LSTM-火灾温度预测

文章目录 一、前期准备工作1.导入数据2. 数据集可视化 二、构建数据集1. 数据集预处理2. 设置X, y3. 划分数据集 三、模型训练1. 构建模型2. 定义训练函数3. 定义测试函数4. 正式训练模型 四、模型评估1. Loss图片2. 调用模型进行预测3. R2值评估 总结: &#x1f36…

toCharArray作用

toCharArray() 是 Java 中 String 类的一个方法,其作用是将字符串对象转换为一个字符数组。下面为你详细介绍其用法、原理和示例。 方法定义 toCharArray() 方法在 java.lang.String 类里被定义,方法签名如下 public char[] toCharArray() 此方法没有…

STM32八股【6】-----CortexM3的双堆栈(MSP、PSP)设计

STM32的线程模式(Thread Mode)和内核模式(Handler Mode)以及其对应的权级和堆栈指针 线程模式: 正常代码执行时的模式(如 main 函数、FreeRTOS任务) 可以是特权级(使用MSP&#xff…

驱动支持的最高CUDA版本与实际安装的Runtime版本

查看电脑上安装的CUDA版本的多种方法,适用于不同系统和场景。 方法一:通过命令行工具 1. 查看CUDA Driver API版本(显卡驱动支持的CUDA版本) 命令:nvidia-smi操作: 打开终端(Windows为CMD/Pow…

Python CT图像预处理——基于ITK-SNAP

Python CT图像预处理——nii格式读取、重采样、窗宽窗位设置_python读取nii-CSDN博客 基于原文指出以下几个问题:文件路径设置模糊;nilabel里面使用的get_data() 方法已经过时;需要导入scikit-image,还要导入一个matplotlib。 一…

【MQ篇】RabbitMQ之消息持久化!

目录 一、 交换机持久化 (Exchange Persistence)二、 队列持久化 (Queue Persistence)三、 消息持久化 (Message Persistence)四、 持久化的“黄金三角” 🔱:三者缺一不可!五、 来,完整的代码示例(整合持久化和确认机制…

[AI技术(二)]JSONRPC协议MCPRAGAgent

Agent概述(一) AI技术基础(一) JSON-RPC 2.0 协议详解 JSON-RPC 2.0 是一种基于 JSON 的轻量级远程过程调用(RPC)协议,旨在简化跨语言、跨平台的远程通信。以下从协议特性、核心结构、错误处理、批量请求等角度进行详细解析: 一、协议概述 1. 设计原则 • 简单性:…