网络原理之 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,来查询路由表,如果查到了(相当于问路人,路人知道怎么走),就直接按照路由表给定的方向(从哪个网络接口进行转发),继续转发就行了,如果没查到(问路人,路人也不知道怎么走),路由表里面有一个 "默认的表项" (下一个地址),按照默认的表项转发即可。
相关文章:

网络原理之 IP 协议
目录 1. IP 协议报文格式 2. 网段划分 3. 地址管理 1) 动态分配 2) NAT 机制 (网络地址转换) 3) IPv6 4. 路由选择 1. IP 协议报文格式 IP 协议是网络层的重点协议。 网络层要做的事情,主要就是两方面: 1) 地址管理 制定一系列的规则ÿ…...

在 Spring Boot 项目中使用 Thymeleaf 时,通常情况下,你需要配置热加载(Hot Reload)来在开发过程中更快速地看到页面的变化。
配置步骤: 1. 添加 DevTools 依赖 在 pom.xml 中添加 spring-boot-devtools 依赖。DevTools 提供了自动重启、LiveReload、模板热加载等功能。 <dependencies><!-- Spring Boot DevTools (用于热加载) --><dependency><groupId>org.spri…...

arm-linux GPIO控制-脚本及shell格式
以下是针对BCM编号27, 28, 29, 30, 31的shell命令 shell方式 导出GPIO引脚 echo 27 > /sys/class/gpio/export echo 28 > /sys/class/gpio/export echo 29 > /sys/class/gpio/export echo 30 > /sys/class/gpio/export echo 31 > /sys/class/gpio/export 设…...

Go 语言基础知识语法
很早听人说过一句话:“每年学习(接触)一门新的编程语言”,这听起来可能有点不太现实,但是其实很多种语言都是相通的。掌握新的编程语言不仅仅是增加职业工具箱中的工具,更是一种扩展我们思维方式、解决问题…...

贪心算法part05
文章参考来源代码随想录 (programmercarl.com) 56. 合并区间 本题和前几题类似,都是判断上一个元素的右边界与当前元素的左边界大小关系 但是需要注意是:本题需要更新结果数组元素的右边界,因此比较的是数组最后一个元素右边界与当前元素左…...

02、SpringMVC核心(上)
一、RequestMapping注解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping @Reflective({ControllerMappingReflectiveProcessor.class}) public @interface RequestMapping {String name() default "";…...

EasyPlayerPro的同一个组件实例根据url不同展示视频流
效果 学习 url的组成 webrtc://192.168.1.225:8101/index/api/webrtc?applive&stream001&typeplay 协议部分 webrtc://: 这表示使用 WebRTC 协议来进行实时通信。WebRTC 允许浏览器之间直接交换音频、视频和其他数据,而不需要通过中间服务器 主机和端口部分…...

哈希表介绍、实现与封装
哈希表介绍、实现与封装 一、哈希概念二、哈希表实现直接定址法其他映射方法介绍1. 哈希冲突2. 负载因子3. 将关键字转为整数4. 设计哈希函数除法散列法 / 除留余数法乘法散列法全域散列法其他方法 将关键字转为整数处理哈希冲突开放定址法线性探测二次探测双重散列 开放定址法…...

使用vm配置网络
查看本地ip 配置vm网络 配置固定ip vi /etc/sysconfig/network-script/ifcfg-ens33参考 vm使用nat模式,导致vm中docker部署的服务,无法通过局域网中其他机器连接 https://www.cnblogs.com/junwind/p/14345385.html 三张图看懂vm中,三种网…...

OpenStack介绍
OpenStack概述 OpenStack是一个开源的云计算管理平台软件,主要用于构建和管理云计算环境。它允许企业或组织通过数据中心的物理服务器创建和管理虚拟机、存储资源和网络等云计算服务。其核心组件包括计算(Nova)、网络(Neutron)、存储(Cinder、Swift)等。这些组件相互协作…...

力扣93题:复原 IP 地址
力扣93题:复原 IP 地址(C语言实现详解) 题目描述 给定一个只包含数字的字符串 s,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址需满足以下条件: IP 地址由四个整数(每个整数位于 0 到 255 之间…...

mock.js介绍
mock.js http://mockjs.com/ 1、mock的介绍 *** 生成随机数据,拦截 Ajax 请求。** 通过随机数据,模拟各种场景;不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据;支持生成随机的文本、数字…...

React开发 - 技术细节汇总一
React简介 React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”。 ui render (data) -> 单向数据流 MVC // model var myapp {}; // …...

【论文复现】分割万物-SAM
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 分割万物-SAM 介绍原理分割任务任务预训练zero-shot transfer相关任务 模型Image EncoderPrompt EncoderMask Eecoder消除歧义高效Loss 和训…...

实现RAGFlow-0.14.1的输入框多行输入和消息框的多行显示
一、Chat页面输入框的修改 1. macOS配置 我使用MacBook Pro,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。 2. 修改chat输入框代码 目前RAGFlow前端的chat功能,输入的内容是单行的,不能主动使用Shift…...

Pointnet++改进71:添加LFE模块|高效长距离注意力网络
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入LFE模块,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…...

C++STL容器vector容器大小相关函数
目录 前言 主要参考 vector::size vector::max_size vector::resize vector::capacity vector::empty vector::reserve vector::shrink_to_fit 共勉 前言 本文将讨论STL容器vector中与迭代器相关的函数,模板参数T为int类型。 主要参考 cpluscplus.com 侯…...

阿里云CPU超载解决记录
现象:阿里云CPU使用率超90%连续5分钟告警,项目日志error.log中存在heap/gc/limit等内存耗尽等信息,阿里云慢查询日志每日有查询时间很长的参数一直不变的慢sql,linux服务器使用top命令并按c可以看到cpu过大是哪个命令行造成的 分…...

【工具变量】上市公司企业商业信用融资数据(2003-2022年)
一、测算方式:参考《会计研究》张新民老师的做法 净商业信用NTC(应付账款应付票据预收账款)-(应收账款应收票据预付账款),用总资产标准化; 应付账款AP应付账款应付票据预收账款,用总资产标准化 一年以上应付账款比例LAP是企业一年以上(包括一…...

2024数字科技生态大会 | 紫光展锐携手中国电信助力数字科技高质量发展
2024年12月3日至5日,中国电信2024数字科技生态大会在广州举行,通过主题峰会、多场分论坛、重要签约及合作发布等环节,与合作伙伴共绘数字科技发展新愿景。紫光展锐作为中国电信的战略合作伙伴受邀参会,全面呈现了技术、产品创新进…...

ES语法(一)概括
一、语法 1、请求方式 Elasticsearch(ES)使用基于 JSON 的查询 DSL(领域特定语言)来与数据交互。 一个 ElasticSearch 请求和任何 HTTP 请求一样由若干相同的部件组成: curl -X<VERB> <PROTOCOL>://&l…...

(vue)el-cascader多选级联选择器,值取最后一级的数据
(vue)el-cascader多选级联选择器,取值取最后一级的数据 获取到:[“养殖区”,“鸡棚”,“E5001”] 期望:[“E5001”] 问题: 解决方法 增加change事件方法,处理选中的value值 1.单选 <el-cascaderv-model"tags2":o…...

友思特方案 | 精密制程的光影贴合:半导体制造中的高功率紫外光源
导读 为新能源锂电行业赋能第四站:半导体制造中的高功率紫外光源!稳定输出、灵活控制的曝光设备是新能源/半导体行业高端生产中减少误差、提高效率的核心技术,友思特 ALE 系列 UV LED 紫外光源集合6大优势,为精密制造的健康发展提…...

README写作技巧
做一个项目,首先第一眼看上去要美观,这样才有看下去的动力。做项目亦是如此,如果每一步应付做的话,我想动力也不会太大,最终很大概率会放弃或者进度缓慢。 1.README组成 README是对项目的一个说明,它对观看…...

【密码学】分组密码的工作模式
1.电码本模式(ECB) 优点: 每个数据块独立加密,可并行加密,实现简单。 缺点: 相同明文会产生相同密文,不具备数据完整保护性。 适用于短消息的加密传输 (如一个加密密钥)。 工作流程:用相同的密钥分别对…...

SQL 和 NoSQL 有什么区别?
SQL(Structured Query Language,结构化查询语言)和NoSQL数据库是两种不同类型的数据库管理系统,它们在多个方面存在显著的区别。以下是对SQL和NoSQL主要区别的详细分析: 一、数据存储与模型 SQL数据库 使用关系模型来…...

提升网站流量的关键:AI在SEO关键词优化中的应用
内容概要 在当今数字时代,提升网站流量已成为每个网站管理员的首要任务。而人工智能的技术进步,为搜索引擎优化(SEO)提供了强有力的支持,尤其是在关键词优化方面。关键词是连接用户需求与网站内容的桥梁,其…...

Harnessing Large Language Models for Training-free Video Anomaly Detection
标题:利用大型语言模型实现无训练的视频异常检测 原文链接:https://openaccess.thecvf.com/content/CVPR2024/papers/Zanella_Harnessing_Large_Language_Models_for_Training-free_Video_Anomaly_Detection_CVPR_2024_paper.pdf 源码链接:ht…...

如何通过自学成长为一名后端开发工程师?
大家好,我是袁庭新。最近,有星友向我提出了一个很好的问题:如何通过自学成为一名后端开发工程师? 为了解答这个疑问,我特意制作了一个视频来详细分享我的看法和建议。 戳链接:如何通过自学成长为一名后端开…...

HDR视频技术之六:色调映射
图像显示技术的最终目的就是使得显示的图像效果尽量接近人们在自然界中观察到的对应的场景。 HDR 图像与视频有着更高的亮度、更深的位深、更广的色域,因此它无法在常见的普通显示器上显示。 入门级的显示器与播放设备(例如普通人家使用的电视࿰…...