网络原理之 IP 协议

目录

1. IP 协议报文格式

2. 网段划分

3. 地址管理

1) 动态分配

2) NAT 机制 (网络地址转换)

3) IPv6

4. 路由选择


1. IP 协议报文格式

IP 协议是网络层的重点协议。

网络层要做的事情,主要就是两方面:

1) 地址管理

制定一系列的规则,通过地址,描述出网络上一个设备的位置。

2) 路由选择

网络环境是比较复杂的,从一个节点到另一个节点之间,存在很多条不同的路径,就需要通过路由选择这种方式,筛选/规划出更合适的路径进行传输。

我们先来看看 IP 协议长什么样。

2. 网段划分

一个 IP 地址,分为两个部分:网络号(标识了一个局域网) + 主机号(标识了局域网中的一个设备)

比如:

一个 IP 地址,哪个部分是网络号,哪个部分是主机号,通过子网掩码就能知道。

子网掩码是一个 32 位的整数,左侧都是 1,右侧都是 0 ,不会  1  0  交替出现。

带有子网掩码的网段划分,是当下的网络环境的现状。

很久之前也有过下面这种方式划分:

但是在现在,这种方式已经看不到了,只会在教材上出现这种划分方式。

如果一个 IP 地址,主机号全为 0,当前这个 IP 就表示网络号,一个具体的主机是不能分配这个 IP 的。

192.168.17.0

255.255.255.0

如果一个 IP 地址,主机号全为 1,当前这个 IP 就表示广播地址,一个具体的主机是不能分配这个 IP 的。

192.168.17.255

255.255.255.0

如果一个 IP 地址是以 127 开头的,那么这个 IP 地址就是 "环回 IP ",表示的是设备自身,最常用的是 127.0.0.1,操作系统提供了一个特殊的虚拟网卡,关联到了这个 IP 上,环回 IP 主要是测试用的,它能够排除网络不通干扰因素,更好的排查代码中的问题。

IP 协议的两个核心功能:地址管理和路由选择。

3. 地址管理

IP 地址是一个 32 位的整数,2^32 => 42亿9千万

地址,理论上来说,是不应该重复的。

在以前看来,可能会觉得这个数字很大,绰绰有余,但是到了今天,能上网的设备早就超过了 42亿9千万 这个数字。

那么如何解决 IP 地址不够用的问题呢?

1) 动态分配

你要上网才给你分配 ip,不上网就不分配 ip。但是这个方案,指标不治本,提高了 ip 地址的利用率,并没有增加 ip 的数量。

2) NAT 机制 (网络地址转换)

本质上是让一个 ip 地址,代表一批设备。

把 IP 地址分为两个大类:

1. 内网 IP (局域网 IP)

如果一个地址,是以 10.* 或者 172.16.*  -  172.31.* 或者 192.168.* 开头的,那么这个 ip 就是内网 ip。

同一个局域网内部,内网 IP 不能重复。不同的局域网之间,内网 IP 之间,可以重复。

2. 外网 IP (广域网 IP)

剩下的 ip 就是外网 ip。

外网 ip 则始终都不允许重复,只能唯一。

当前情况下,通常都是一个小区/一个学校/一个公司,构成一个大的局域网,这个局域网中可能就有几千个,上万个设备,这样的局域网,就使用一个外网 ip 即可。

那么 NAT 机制具体是怎么工作的呢?

如图:

如果当前局域网内,有多个主机,都访问同一个网站服务器,此时服务器返回的响应经过路由器之后,要交还给哪个主机呢?

如图:

如果同一时间,同一局域网,并且是相同的端口的主机同时请求同一服务器的话:

当前的网络环境,就是以 NAT + 动态分配的方式来解决 IP 地址不够用的问题的。

NAT 机制,最大的优势是:"纯软件的方案"。

也正是因为这个机制,局域网内部的设备,能够主动访问外网的设备,外网的设备无法主动访问局域网内部的设备,这个局限性也不是坏事,能够很好保护我们的设备。

3) IPv6

IPv6 使用 16 个字节来表示 IP 地址,这个就从根本上解决了 IP 地址不够用的问题。

2^8^16 = 2^128 = 2^32 * 2^32 * 2^32 * 2^32 = 42 亿的四次方,最终的结果是个天文数字。

这个数字大到可以给地球上的每一粒沙子都分配一个不同的 ip 地址,还绰绰有余。

但是,IPv6 的普及程度,是比较低的。

IPv6 最大的问题是和 IPv4 不兼容,想要支持 IPv6 就得换设备,要花钱,可是花了钱,网速上也不会有提升,所以就没人乐意主动升级 IPv6,但是我国是 IPv6 普及程度最高的国家,因为国家大力推进支持升级 IPv6,现在近几年装的宽带,都是主动送你支持 IPv6 的路由器的。

4. 路由选择

路由选择,就是描述了 IP 协议(IP 数据报) 的转发过程。

从 A 到 B,中间有很多条路径可以走。

进行数据包转发的时候,每个路由器都是无法知道网络的 "全貌" 的,只知道一些局部信息(一个路由器能知道哪些设备和它自己是相连的),这就意味着,IP 数据在转发过程中,是一个 "探索式", "启发式" 的过程,这个过程很难给出最优解,只能是较优解。

一个网络层的数据报,每次到达一个路由器,都会进行 "问路"。

每个路由器都有一个数据结构 "路由表"(路由表内容可以手动配置,也可以自动获取),根据数据报中的目的 IP,来查询路由表,如果查到了(相当于问路人,路人知道怎么走),就直接按照路由表给定的方向(从哪个网络接口进行转发),继续转发就行了,如果没查到(问路人,路人也不知道怎么走),路由表里面有一个 "默认的表项" (下一个地址),按照默认的表项转发即可。

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

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

相关文章

HyperMesh CFD功能详解:后处理功能Part 2

Clips Clips 按钮包含两个工具。Box Clip用于空间上的裁剪,Scalar Clip可以根据物理量的范围裁剪。 示例:Box Clips 裁剪 示例:Scalar Clips 裁剪 通过裁剪,仅显示density范围是10~20的等值面 示例:显示效果控制 部分透…

Java项目实战II基于微信小程序的跑腿系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的现代生活中&…

【机器学习与数据挖掘实战案例01】基于支持向量回归的市财政收入分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…

windows下nacos启动报错:java.lang.unsatisfiedLinkError: C:\USers\乱码AppData\xxx.dll

问题 看了许多别的帖子,大家都是因为缺少dll包,下载安装 Microsoft Visual C 2015 Redistributable 就可以。但我试过了不行。思来想去,之前正常的时候用的JDK版本是17,后面别的项目用1.8给切换回来了。然后尝试配置环境变量将JD…

JavaEE 【知识改变命运】03 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因:1.线程是抢占式的2. 多线程修改同一个变量(程序的要求)3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…

并发在前端中的应用?

‌并发在前端中的应用主要体现在处理多个请求和优化页面加载速度方面‌。前端并发处理通常涉及在极短时间内发送多个数据请求,例如在页面渲染时同时请求多个数据。通过并发处理,可以显著减少页面加载时间,提升用户体验。 前端并发处理的具体…

【力扣】409.最长回文串

问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…

计算机视觉在科学研究(数字化)中的实际应用

计算机视觉是一种利用计算机技术来解析和理解图像和视频的方法。.随着计算机技术的不断发展,计算机视觉被广泛应用于科学研究领域,为科学家提供了无限的可能。 一、生命科学领域 在生命科学领域,计算机视觉被广泛用于图像识别、分类和测量等…

springboot381银行客户管理系统(论文+源码)_kaic

摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…

JMX 组件架构即详解

JMX架构由三个主要组件构成: ‌MBeans(Managed Beans)‌:代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。‌MBeanServer‌&#x…

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻译与解读

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻译与解读 导读:这篇论文的核心议题是理解和建模大型语言模型(LLM)的上下文学习(ICL)能力。文章从贝叶斯学习的角度出发,提出了一…

基于单片机和测频法的频率计设计及proteus仿真

摘要: 传感器广泛应用在自动化测量中,该文利用 51 单片机 2 个 16 位定时器和测量频率中的测频法设计了测量方波的频率计,并用LCD1602 液晶显示频率、 proteus 仿真,测试结果表明设计思路正确、误差小。 关键词: 单片机;测频法;频率计; proteus 1 概述 传感器能感受到…

软件漏洞印象

软件漏洞印象 软件安全性检测 软件安全静态分析:学术界一度十分热衷的偏理论性方法软件漏洞动态挖掘,工程界普遍采用动态漏洞挖掘方式,即Fuzz技术,也称为模糊测试 漏洞利用 vs. 漏洞修复 对于已发现的软件漏洞 黑客会基于Meta…

计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…

定点数的乘除运算

原码一位乘法 乘积的符号由两个数的符号位异或而成。(不参与运算)被乘数和乘数均取绝对值参与运算,看作无符号数。乘数的最低位为Yn: 若Yn1,则部分积加上被乘数|x|,然后逻辑右移一位;若Yn0&…

如何设置ChromeDriver路径?

设置ChromeDriver路径是为了让Selenium能够正确地调用Chrome浏览器进行自动化操作。以下是几种设置ChromeDriver路径的方法: 1. 系统环境变量 将ChromeDriver的路径添加到系统的环境变量中,这样在任何地方都可以直接调用ChromeDriver。 Windows系统&a…

数据挖掘:一、Weka软件的基本操作

实验目的和要求 了解Weka软件的使用 实验环境 Windows11 Weka3.8.6 实验内容与过程 实验内容 1、了解Weka使用的一般步骤 2、利用Weka,对数据集进行关联规则挖掘及数据分类 3、记录操作步骤、使用的数据、最终的结果 实验过程 首先打开weka下载官网,选择合适

【从零开始的LeetCode-算法】383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…

【第二十四周】从大语言模型到多模态大模型的发展

摘要 大语言模型(Large Language Model, LLM)是指一类基于深度学习的人工智能系统,它们被设计用来理解和生成自然语言。这些模型通常是在大量的文本数据上进行训练的,通过学习文本中的模式和结构,它们能够执行各种各样…

https ssl免费证书申请,自动续期,acme、certd

本文为个人笔记,方便自己需要时查阅,同时提供出来给大家作为免费ssl证书自动续签需求的一种参考 大部分免费证书的有效期仅有3个月,所以证书管理会涉及到自动续期管理的问题 一、acme证书 大佬们常用的证书证书申请管理方式,提…