网络层协议 --- IP

news2024/10/9 11:19:19

序言

 在这篇文章中我们将介绍 IP协议,经过这篇文章的学习,我们就会了解运营商到底是如何为我们提供服务的以及平时我们所说的内网,公网到底又是什么,区别是什么?

IP 地址的基本概念

1. IP 地址的定义

 每一个设备接入互联网时,都会被分配一个或多个唯一的 IP 地址,用于在网络上设别和定位该设备。这句话放在学习本章内容之前肯定是没问题的,但是在认识了 NAT 技术之后就要打个问号了。
IP 地址(IPv4 地址)由 32 位二进制数(8个字节)来表示:
在这里插入图片描述

但是这种表示方式非常不便于我们阅读比较,于是将每一个字节以十进制数表示:
在这里插入图片描述

现在看起来舒服多了,为了避免数字混淆在一起,最后加上 . 来分割:
在这里插入图片描述
这就变成了我们熟悉的表达方式了,便于我们查看以便于我们和其他的 IP 比较。

2. IP 地址的分类

 为了更好地适应不同网络规模、主机数量以及特殊应用需求,国际网络组织将 IP 分成了五类,分别是:
在这里插入图片描述

💡知识补充:网络号就像你的班级号,主机号就像你在你班级里面的序号一样。

D,E 类主机,前者多用于多播通信(比如直播,视频通信,在线游戏等场景),后者为将来使用保留的地址,两者都不属于今天的讨论范畴之内。

 不同类的网络所能容纳的主机数目也是大相径庭的,如下图:

类别所能容纳最大主机数
A16,777,214
B65,534
C254

是怎么计算的呢?我们所计算的结果是一个类型的网络在同一个网络下(网段相同)所能容纳最大主机数:2 ^ (主机号) - 2。咦,你在这里为什么要减 2 呀?

就拿 C 类网络举例吧,现在一个 C 类网络的网络号是:

他能表示的主机号的范围是:
在这里插入图片描述
但是请记住,这里存在两个十分特殊的主机号,主机号全为 1 和 全为 0 地址。

  • 主机号全为 1 指定某个网络下的所有主机,用于广播
  • 主机号全为 0 指定某个网络

 这样的分配在当初看来是没有什么大问题的,但是现在弊端慢慢显现出来了。为什么呢?特别是 A 这种划分方式在小型网络中显得过于浪费,因为即使一个网络只有几十台主机,也需要分配一个 A 类地址,导致大量的IP地址资源被闲置‌。现在本来就 IP 短缺


CIDR 技术

 为了解决 IP 分类中存在的利用率不高的问题,提出了 无分类地址 CIDR 的技术。但是请记住,这个技术只是 提高了 IP 的利用率,本质是 IP 还是存在缺乏的问题。
 这个技术的亮点我认为是将 定长的网络号 变得灵活起来,他引入了 子网掩码(subnet mask) 来区分网络号和主机号,具体的表示方式为:

  • 将子网掩码和 IP 地址按位计算 AND,就可得到网络号,比如:在这里插入图片描述
    网络号 = 10.201.111.197 & 255.255.0.0 = 10.201.0.0

  • 还有一种表达方式为:a.b.c.d/x。在这里的 a.b.c.d 代表 IPx 代表前 x 位是网络号

这样的网络号更灵活,我们可以在现有的 A,B 类网上进行更加精细的划分子网,使 IP 得到充分地使用。


私有 IP 地址和公网 IP 地址

 通常遇到不会的问题,我们一般都可以通过三联问:这是什么?为什么?怎么样?来解决问题。在这里我们也采取这样的方式。

1. 这是什么

 私有 IP 地址是指在私有网络中使用的 IP 地址,这些地址仅在私有网络内部使用,不能在公共网络(如互联网)上路由。
 使用私有 IP 地址可以节省并优化公共 IP 地址的分配和使用。不同的私有网络下 私有 IP 是可以重复的
 如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet 上, 并且规定了用于组建局域网的私有 IP 地址:

10.*,前 8 位是网络号,共 16,777,216 个地址
172.16.*到 172.31.*,前 12 位是网络号,共 1,048,576 个地址
192.168.*,前 16 位是网络号,共 65,536 个地址

包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP)。

2. 为什么需要私有 IP

 为什么需要私有 IP ,很显然是 IP 不够用了。我们简单计算一下,IPV4 所能最大容纳的 IP 数量是 42亿左右,但是大家可以通过下述的数据可以看到:
在这里插入图片描述
早就不够用了,CIDR 方式只是提高使用率,治标不治本。

3. 怎么样工作的

 现在知道了他产生的原因,现在我们需要知道他为什么可以做到?
在这里插入图片描述

 这是一个很简单的网络结构图,我们的家庭路由器直接就连上了运营商服务器。但是实际情况要复杂的多,比如你家的路由器会先接上小区的路由区,再连上区里的,市里的,省里的…最后再到运营商的服务器。

 你需要上网,也就是你需要一个 IP 地址,这才能向你发送数据。但是我们并没有去手动的配置一个呀。没关系,当你连上你家的路由器时,他自动的给你分配一个 IP 地址。路由器会对每个连上他的设备都执行该操作,这叫构建子网。这种技术叫做:DHCP,能够自动的给子网内新增主机节点分配 IP 地址,避免了手动管理IP的不便。

 一般家用的路由器都是采用第三种私有 IP,因为你家连接数很少嘛。好的,现在,你家有网,我家也有网,请问我们的网络号会相同吗?答案是我们都是家用的路由器,最终构建的子网网络号是一样的,甚至我们的 IP 都可能完全一样。因为家里使用的人很少,所以我们相同的概率就大了。

 好的,现在我的问题又来了,既然我们的 IP 都可能是一样的,并且 IP 不是在网络上唯一的标识符吗,那么我们的身份不会混淆出错吗?所以我们规定 私网 IP 不能出现在公网上就是这个原因,那我们怎么上网的呢?答案是:NAT(Network Address Translation,网络地址转换)是一种将私有网络地址(如局域网内部地址)转换成公共网络地址(如互联网地址)的技术。

 总结来说,就是你家的路由器会自动构建子网,不同私网下的 IP 是可以重复的,这节省了公共 IP 资源。最终通过 NAT 技术来保证你可以正常接发数据。


NAT 技术

1. NAT 技术原理

NAT 技术通过将私网 IP 转化为公网 IP 的方式,缓解了 IP 耗尽的问题,但是大家仔细想一下,会发现这有一个漏洞:
在这里插入图片描述
在这里假如主机 A 想要访问公网,当他的报文经过路由器时,会将他的源地址(内网地址)转化为一个公网 IP,并且记录在 NAT 表中(该表用于记录地址转换的映射关系)。当外部想要给内网中的设备发送消息时,就会根据该表的转换拿到目的内网中的设备。

 但是如果我这里有三个设备想要访问外网呢,也转化为三个外网地址吗?这也没节省公共 IP 地址呀。以这样的方式确实不能解决问题,肯定不能这样。大家想一下,我们一般都是采取 IP + 端口 的方式来进行通信,所以我们将该子网下的所有设备通用一个公共 IP,并且使用端口来区别每一次不同的通信:
在这里插入图片描述

2. NAT 技术的缺陷

  • 无法从外到内,很多的联网服务都是需要大家先登录才能正常使用,因为你登陆的过程也是你向该服务器发送数据的过程,才构建了一条从你的内网到外网的路径。
  • 通信过程中,如果 **NAT** 路由器重启了,所有的 **TCP** 连接都将被重置。为什么没有 UDP 呢,它不受影响吗?这是因为 UDP 是面向无连接的协议不依赖于连接状态。

网段划分

1. 什么是网段划分

 网段划分,简单来说,就是将一个大的 IP 地址空间分割成多个小的、独立的地址段。这通常通过子网划分(Subnetting)来实现,即利用子网掩码将 IP 地址分为网络部分和主机部分。 让我们网路细粒度更高,更好的被利用,避免出现闲置的情况。

2. 为什么需要网段划分

 除了提高 IP 的利用率之外,更重要的更好的进行管理,举个例子吧:大家在学校肯定都有学号吧,学号可不是随机生成的一串数字,他的每一个字段都包含着自己的含义。比如,哪个年级的,哪个学院的,哪个专业的,哪个班的,第几号。现在你在操场是捡到一个钱包,里面就有失主的学号信息,如果学号没有意义的,我们只能遍历整个学校的学生。但是该学号有着详细的信息,帮助我们快速的找到失主。
IP 不是也是如此吗,当发出信息时,计算机会首先检查目标 IP 地址是否在当前网段内。如果目标IP地址与本地网络地址在同一子网内,则数据包将直接在本地网络中传输。然而,如果目标 IP 地址不在当前网段内,计算机会将数据包发送到默认网关(通常是路由器)。路由器会查看其路由表,以确定如何将数据包转发到目标网络。路由表包含了不同网络之间的路径信息,路由器会根据这些信息将数据包发送到下一个路由器,直到数据包到达目标网络。


总结

 这篇文章快结束了,请问大家一个问题,运营商怎样给我们提供服务的:

  • 首先最基本的通信设备,没有光纤,路由器,服务器等基础设施,没有这些设备就没有最基本的通信环境
  • 数据传输,我们每天网络上传输的数据都是在人家的线路上传输

所以总结就是,此山是我开,此树是我栽,要想过此路,留下过路财😂。

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

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

相关文章

Java中String类的常见操作Api

目录 String类的常见操作 1).int indexOf (char 字符) 2).int lastIndexOf(char 字符) 3).int indexOf(String 字符串) 4).int lastIndexOf(String 字符串) 5).char charAt(int 索引) 6).Boolean endWith(String 字符串) 7).int length() 8).boolean equals(T 比较对象) 9).b…

【2024】作为前端开发,必须掌握的 Vue3 的 5 个组合式 API 方法

引言:2024 你还不知道 Vue3 的 defineProps、defineEmits、defineExpose、defineOptions 和 defineSlots 吗?这几个 Vue3 组合式 API 方法不仅开发常用(涉及组件通信、组件复用等),在面试中也是不可或缺的一部分&#…

SpringBoot实现电子文件签字+合同系统!

一、前言 二、项目源码及部署 1、项目结构及使用框架 2、项目下载及部署 三、功能展示 一、前言 今天公司领导提出一个功能,说实现一个文件的签字+盖章功能,然后自己进行了简单的学习,对文档进行数字签名与签署纸质文档的原因大致相同,数字签名通过使用计算机加密来验证 (…

LabVIEW提高开发效率技巧----阻塞时钟

在LabVIEW开发中,阻塞时钟(Blocking Timed Loops)是一种常见且强大的技术,尤其适用于时间关键的应用。在这些应用中,精确控制循环的执行频率是关键任务。阻塞时钟通过等待循环的执行完成后再进入下一次迭代&#xff0c…

鸿蒙 Next 实战: 烟花模拟器

前言 通过上一篇文章可以看出,要在鸿蒙应用中实现特别炫的特效还是比较复杂。动画固然重要,但如果在赶工期的情况下,大家都会优先业务,那有没有简单快速的方法呢? 有的,也用像 Android 和 iOS 里 WebView …

.Net Core 接口或网站发布到IIS

将.Net Core 接口或网站发布到IIS上,需要遵循一系列步骤来确保正确配置和部署。下面将以.NET Core 3.1的api接口发布示范: 一、环境准备 安装.NET Core 3.1 SDK和运行时: 在服务器上安装.NET Core 3.1 SDK(如果需要在服务器上编译…

宝兰德亮相2024国际信息通信展:数智创新,信创力量!

9月25日-27日,2024中国国际信息通信展览会在北京国家会议中心隆重召开。本届展会以“推动数实深度融合,共筑新质生产力”为主题,全面展示信息通信业发展最新成果。作为国内领先的基础软件供应商,宝兰德再度闪耀会场,在…

[ROS】rqt工具箱

作用: 可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验。 组成: rqt工具箱组成有三大部分 rqt 核心实现,开发人员无需关注 rqt_common_plugins rqt…

Gated Transformer Networks for Multivariate Time Series Classification

博客贡献人 徐宁 作者 Minghao Liu , Shengqi Ren , Siyuan Ma , Jiahui Jiao , Yizhou Chen , Zhiguang Wang(Facebook AI) and Wei Song∗ 标签 多元时间序列分类,Transformer,门控 摘要 用于时间序列分类的深度学习模型(主要是卷积网…

GO网络编程(七):海量用户通信系统5:分层架构

P323开始(尚硅谷GO教程)老韩又改目录结构了,没办法,和之前一样,先说下目录结构,再给代码,部分代码在之前讲过,还有知识的话由于本人近期很忙,所以这些就不多赘述了&#…

【源码+文档】基于SpringBoot+Vue的健康宝个人健康管理平台

一、项目技术架构: 本项目是一款基于SpringBootVue的个人健康信息管理系统。后端采用SpringBoot架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行数据。本系统分为两种角色,分别是系统管理员&a…

DS入门引言(0)

文章目录 前言一、什么是数据结构?二、什么是算法?三、数据结构与算法的重要性?四、如何学习它们?总结 前言 是的,我又开了一个专栏,数据结构(Data Structure),其实数据结…

【人工智能】AI人工智能的重要组成部分,深入解析CNN与RNN两种神经网络的异同与应用场景和区别

文章目录 一、卷积神经网络(CNN)详解1. 特征与结构CNN的基本结构 2. 应用场景3. 代码示例 二、循环神经网络(RNN)详解1. 网络结构与特点RNN的基本结构 2. 应用场景3. 代码示例 三、CNN与RNN的异同点1. 相同点2. 不同点 四、CNN与R…

javascript 阿里云,如何返回某个目录的文件

一、效果图 二、实际代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>阿里云 OSS 文件列表&…

合约测试用例详解

合约测试的综合案例 第一部分 压力测试(使用caliper工具测试) 1.环境要求 配置基本环境 部署Caliper的计算机需要有外网权限;操作系统版本需要满足以下要求:Ubuntu >= 16.04、CentOS >= 7或MacOS >= 10.14;部署Caliper的计算机需要安装有以下软件:python 2.7…

PMP--冲刺题--解题--91-100

文章目录 11.风险管理--4.实施定量风险分析--题干场景中提到了“专家”&#xff0c;同时即将开始“量化风险”&#xff0c;因此对应的就是“定量风险分析”中的“专家判断”技术。项目经理应先征求各位专家们的意见&#xff0c;以获取最佳的量化风险实施方案。谋定而后动91、 […

wordpress发邮件SMTP服务器配置步骤指南?

wordpress发邮件功能如何优化&#xff1f;怎么用wordpress发信&#xff1f; 由于WordPress默认的邮件发送功能可能不够稳定&#xff0c;配置SMTP服务器成为了许多网站管理员的选择。AokSend将详细介绍如何在WordPress中配置SMTP服务器&#xff0c;以确保邮件能够顺利发送。 w…

Linux-磁盘优化的几个思路

优化前先看看性能指标 I/O 基准测试 fio&#xff08;Flexible I/O Tester&#xff09;正是最常用的文件系统和磁盘 I/O 性能基准测试工具。这类工具非常用&#xff0c;了解即可 应用程序优化 应用程序处于整个 I/O 栈的最上端&#xff0c;它可以通过系统调用&#xff0c;来调…

可持续边缘计算:挑战与未来方向

论文标题&#xff1a;Sustainable edge computing: Challenges and future directions 中文标题&#xff1a;可持续边缘计算&#xff1a;挑战与未来方向 作者信息&#xff1a; Patricia Arroba, Department of Electronic Engineering, Universidad Politcnica de Madrid, Ma…