网络原理之 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 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…

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

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

【力扣】409.最长回文串

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

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

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

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

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

软件漏洞印象

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

计算机网络 —— HTTPS 协议

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

定点数的乘除运算

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

数据挖掘:一、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证书 大佬们常用的证书证书申请管理方式,提…

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用,深入理解它们在网络通信中的重要性。通过实验,我将探讨端口号如何帮助区分不同的应用程序和服务,使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…

【Redis】Redis基础——Redis的安装及启动

一、初识Redis 1. 认识NoSQL 数据结构:对于SQL来说,表是有结构的,如字段约束、字段存储大小等。 关联性:SQL 的关联性体现在两张表之间可以通过外键,将两张表的数据关联查询出完整的数据。 查询方式: 2.…

ElK 8 收集 MySQL 慢查询日志并通过 ElastAlert2 告警至飞书

文章目录 1. 说明2. 启个 mysql3. 设置慢查询4. filebeat 设置5. 触发慢查询6. MySQL 告警至飞书 1. 说明 elk 版本:8.15.0 2. 启个 mysql docker-compose.yml 中 mysql: mysql:# restart: alwaysimage: mysql:8.0.27# ports:# - "3306:3306&q…

【服务器监控】grafana+Prometheus+node exporter详细部署文档

我们在进行测试时,不可能一直手动看着服务器的性能消耗,这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafanaPrometheusnodeExporter的组合用于监控服务器。 简单介绍: grafana:看板工具,所有采集的…

第十七章 使用 MariaDB 数据库管理系统

1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量…

计算机键盘的演变 | 键盘键名称及其功能 | 键盘指法

注:本篇为 “键盘的演变及其功能” 相关几篇文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变:从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humble mechanical…