IPv 4

IP协议

网络层主要由IP(网际协议)和ICMP(控制报文协议)构成,对应OSI中的网络层,网络层以实现逻辑层面点对点通信为目的。目前应用最广泛的IP协议为IPv4

基本概念给出
主机:配有IP地址但不具有路由控制能力的设备(广义上有IP就可以称为主机)
路由器:配有IP地址且具有路由控制能力,也叫做网关
节点:主机和路由器的统称

网络层与数据链路层

在已经有MAC地址的情况下为什么还要给出IP地址?原因在于数据包在网络中传输过程中需要经过很多个中间节点,从一个节点到另一个节点的行为称作‘’,必须通过mac地址来判断下一跳的节点,而IP地址为跳转提供了一个全局方向。
总的来说,源IP地址和目标IP地址在整个数据包转发的过程中是保持不变的,为数据传输提供一个全局方向,而源mac地址和目标mac地址在数据包转发过程是时刻变化的,为数据传输提供一个局部方向。
在这里插入图片描述

IPv4

IP地址

IP地址用于网络层中各个主机能够与其他主机相互通信的目标地址,在一个网段中每个主机的IP地址都是全局唯一的,即以IP地址作为域中唯一标识。
对于设有网卡的主机来说,其至少需要配置一个IP地址;
对于路由器来说,其至少需要配置两个IP地址。

路由控制

路由控制旨在将数据包成功地发送到目标地址,由于网络结构复杂,数据包在传输的过程中需要进行多次跳转动作,甚至是跨网段传输,往什么方向跳转,哪个网段跳转,全靠路由控制,没有路由控制会导致数据包在网络中随意跳转造成数据丢包和网络拥塞。
路由器就是负责路由控制的硬件
在这里插入图片描述
由于数据包在传输的过程中往往会经历多次跳转,因此IP路由也被称为多跳路由,多条路由的特点是路由器在转发数据包时仅告知下一跳地址,下一跳路由器仅告知下下一跳地址,直至到达目标主机。
可以参考原书给出的火车旅游例子来类比多跳路由:
在这里插入图片描述

路由控制表

为了将数据包发送给目标主机,路由器内部维护者一张路由控制表,存储其他路由器与IP地址的映射关系,此处的IP地址不是特定的一台主机,而是一个网段,具体之后会讲。
在这里插入图片描述

封装数据帧

网络中不同的数据链路实现相异,如果不进行任何封装就直接交给上层(传输层),那么传输层所要做的工作可就太多了,因此网络层需要对数据链路层的数据帧进行封装后向上统一交付。
不同数据链路最大的区别在于其最大传输单位(MTU)的不同,以太网帧最大正文长度为1500字节,当上层传输的数据大于MTU时,就需要网络层对数据进行分片处理,这个过程称为IP分片,将一个大数据包拆分成多个小于MTU的小数据包进行发送;必要的,网络层也需要有将多个小数据包合并为一个大数据包的能力,这个过程称为IP重组

虽然网络层提供了分片和重组的能力来满足不同的数据链路,但是在实际过程应该尽可能的避免传输数据大于MTU,本质原因在于IP属于面向无连接型,即不提供可靠传输,数据包越多意味着丢包的概率也大。

IPv4格式

IPv4地址在计算机内部以32位正整数表示,人所看到的IPv4地址以点分十进制的格式展示(0.0.0.0~255.255.255.255)
IPv4地址由网络(段)标识主机标识两部分构成,前者用于标识一个网段,后者标识网段中的一个主机
网段和主机位数分配是决定着IP地址的利用率
在这里插入图片描述

IPv4分类

以固定位数进行IP分类可以将IPv4地址划分为A\B\C\D四大类(有些书上是ABCDE五大类,不过E类从未被使用)
A类地址首位为0,前8位代表网段,后24位代表主机 0.0.0.0~127.0.0.0
B类地址前2位为10,前16位代表网段,后16位代表主机 128.0.0.1~191.255.0.0
C类地址前3位为110,前24位代表网段,后8位代表主机 192.168.0.0~239.255.255.0
D类地址前4位为1110,32位均代表网段(由于没有主机标识常用于多播) 224.0.0.0~239.255.255.255

每一类IP地址一个网段中能容纳的最大主机数N=2^主机位数-2
减2的原因在于规定每一个网段中主机位为0活255作保留,0为任意地址,255为广播地址

广播地址

广播地址用于在一个数据链路中相互连接的主机之间发送数据包,将目标IP地址主机标识设置为255,(目标mac地址设置为FF:FF:FF:FF:FF:FF)
广播分为直接广播本地广播
本地广播是一台主机向当前数据链路中的所有节点发送数据包(路由器也会收到,但不会对其进行转发)
直接广播是一台主机向另一个数据链中的所有节点发送数据包
在这里插入图片描述

IP多播

多播是对于广播的优化,频繁的广播会造成网络拥堵,可能会产生大量的垃圾数据包(并不是所有的主机都希望收到广播数据的),因此衍生出了多播技术,多播旨在向多个特定主机发送数据包,而非整个数据链路中的主机,也就不存在垃圾数据包的问题。多播适用D类IPv4地址。
多播可以跨数据链路发送。
单播、广播、多播对比图
在这里插入图片描述

子网掩码

直接只用定长分类的IP地址会造成极大的IP地址资源浪费,例如B类IP地址的一个网段可以容纳6w多台主机,但这一般不可能,A类IP地址的一个网段所浪费的IP地址更是夸张,因此不得不引入新的手段对原有的4大类IP地址进行细粒度的划分,目前普遍采用子网掩码

子网掩码也是一个32位数,比特位为1代表网段标识,为0代表主机标识,1和0必须是连续的,不可能出现101…这种情况,将子网掩码与IP地址本身进行按位或的结果就是一个新的IP类(按位或之后的结果一定是一个前半部分全1后半部分全0的32位数),有了子网掩码就可以更加灵活的动态调整网络标识长度了。
在这里插入图片描述

公网、私网

公网私网的划分也是对IPv4资源不足的一种治标手段

规定给出
10.0.0.0~10.255.255.255(10/8) A类私网
172.16.0.0~172.31.255.255(172.16/12)B类私网
192.168.0.0~195.168.255.255(192.168/16)C类私网

除此之外的所有IPv4称为公网IP,
公网IP是全球唯一的,绝不允许重复,私网IP是在不同网段中可以重复的,现代个人计算机普遍采用私网IP,而路由器和大型服务器采用公网IP,通过NAT技术可以实现私网与公网交互(NAT在后续章节给出解释)

路由控制

上面已经点过路由控制就是路由器通过自身所管理的路由控制表对数据包进行有方向的转发。IP协议始终认为路由控制表是正确的,路由控制表中的数据如何定义由独立的路由协议制作

路由控制表中的数据为网段和下一跳路由器的IP映射,当一个数据包到达路由器时,通过查询路由控制表可以确定下一网段,再将数据包转发给下一网段的路由器即可,直至数据包到达目标主机。如果找不到则会转发给默认路由
在这里插入图片描述

默认路由

任何网段都可以匹配的网段所对应的路由器IP称为默认路由,一般标记为default或0.0.0.0/0

主机路由

如果IP地址的32位全部充当网络标识(没有主机标识,IP/32)参与路由,则称为主机路由,使用主机路由可以精确定位,但是会造成路由表膨大,一般不推荐使用。

本地环回

环回地址用于在同一主机上的进程之间模拟网络通信,这个地址表示为127.0.0.1或localhost,这个IP地址不会流向网络。环回地址常用于调试网络程序以判断是否出现网络问题。

路由控制表的聚合

路由控制表不能太太,否则会影响查询效率。通过网络地址长度的动态调整可以对一些网段进行整合,再通过子网掩码可以对整合后的网段进行拆分
具体可参考原著给出的参考图
在这里插入图片描述
结合图示可以看到聚合前的路由器C表完全没有必要存放多个下一跳地址是路由器A或B的网段,可以把这些网段整合(减少网络标识比特位),更具体的网段划分交给下一跳路由器处理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【原创】java+springboot+mysql劳动教育网系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【数据结构-栈】【贪心】力扣2434. 使用机器人打印字典序最小的字符串

给你一个字符串 s 和一个机器人,机器人当前有一个空字符串 t 。执行以下操作之一,直到 s 和 t 都变成空字符串: 删除字符串 s 的 第一个 字符,并将该字符给机器人。机器人把这个字符添加到 t 的尾部。 删除字符串 t 的 最后一个 …

让AI像人一样思考和使用工具,reAct机制详解

reAct机制详解 reAct是什么reAct的关键要素reAct的思维过程reAct的代码实现查看效果引入依赖,定义模型定义相关工具集合工具创建代理启动测试完整代码 思考 reAct是什么 reAct的核心思想是将**推理(Reasoning)和行动(Acting&…

SDH8303直插DIP8,7W-12W非隔离升压降压转换器

SDH8303是用于开关电源的内置高压 MOSFET 的电流模式 PWM 控制器,采用DIP-8封装,全电压下典型功率7W-12W。 SDH8303芯片内置高压启动电路,在轻载下会进入打嗝模式,具有降频、抖频、软启动、VDD 打嗝功能,还集成了 VDD …

猿人学 — 第1届第17题(解题思路附源码)

猿人学 — 第1届第17题 根据题目“天杀的Http2.0”大概知道,请求的协议应该遵照的是Http2.0协议,并且目标网站专门对此进行了检测,在Network面板中右键表头,勾选Protocol 果不其然,一堆请求都是遵照Http2.0协议。而u…

论文阅读 BLIP-2

Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 使用冻结的图像编码器和大型语言模型进行语言-图像预训练的引导 BLIP-2 通过一个轻量级的查询变换器弥合了模态之间的差距。 Querying Transformer 第一阶段通过冻结的图像编…

Word排版 | 如何文字部分固定行距、图片(嵌入型)单倍行距

问题描述 在写一个要求比较高的项目报告,总共有109页 89张图片,而且必须用word写 因此: 文字部分需要固定行距23磅图片部分需要单倍行距(不然无法使用嵌入式) 难点 文字和图片难以有效分离,无法分别设…

3D渲图软件推荐:打造高质量渲染效果

在现代设计领域,3D渲图已经成为展示设计方案和产品外观的重要手段。无论是建筑设计、产品设计还是影视动画,都需要借助专业的3D渲染图软件来实现逼真的视觉效果。 本文将为您介绍几款备受好评的3D渲染图软件,帮助您在项目中选择合适的工具。…

筛选因数快速法+map

前言:老是忘记怎么快速筛选因数,我们只需要枚举小于sqrt( num ) 的数,这样可以降低很多复杂度,而且我们的因数一定是成对出现的,所以我们遇到一个因数的时候x,判断 x 2 x^2 x2 是否…

【华为】配置RIP协议

RIP(Routing Information Protocol)是一种内部网关协议(IGP),主要用于小型网络中的动态路由。RIP有两个主要版本:‌RIPv1和‌RIPv2,它们之间存在一些关键区别: ‌分类支持‌&#xf…

STM32之CAN外设

相信大家在学习STM32系列的单片机时,在翻阅芯片的数据手册时,都会看到这么一个寄存器外设——CAN外设寄存器。那么,大家知道这个外设的工作原理以及该如何使用吗?这节的内容将会详细介绍STM32上的CAN外设,文章结尾附有…

树的中心——dfs

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510, M N*2; int h[N], e[M], ne[M], idx; int n; int ans 2e9; bool st[N]; void add(int a, int b) // 添加一条边a->b {e[idx] b, ne[idx] h[a], h[a] idx ; } int dfs(int u) {int…

系统移植一

使用设备是fs4412开发板 一、系统移植 系统移植是将一个操作系统或软件从一个硬件平台或处理器架构转移到另一个平台的过程。系统移植的主要目标是使软件在新的硬件环境下能够正常运行。在系统移植过程中&#xff0c;主要的改动集中在硬件相关的底层部分以及操作系统的核心模…

低代码工单管理app评测,功能与效率解析

预计到2030年&#xff0c;低代码平台市场将达1870亿美元。ZohoCreator助力企业构建定制化软件应用&#xff0c;以建筑行业工作订单管理app为例&#xff0c;简化流程&#xff0c;提升管理效率&#xff0c;降低成本。其用户友好界面、自动化管理、跨平台使用及全面报告功能受企业…

【高频SQL基础50题】31-35

又到SQL。 目录 1.查询结果的质量和占比 2.求关注者的数量 3.指定日期的产品价格 4.好友申请 II &#xff1a;谁有最多的好友 5.按日期分组销售产品 1.查询结果的质量和占比 聚合题。 # Write your MySQL query statement below SELECT t1.query_name,ROUND((SUM(t1.r…

【Linux探索学习】第四弹——Linux权限管理详解:理解用户、组和权限之间的关系

前言&#xff1a; 在前面我们已经学习了Linux的基础指令&#xff0c;相信大家对Linux已经有了一定的认识&#xff0c;今天我们来学习Linux权限的相关知识点&#xff0c;Linux权限是Linux初学者必须要掌握的内容 目录 一、Linux下用户类型 二、权限基本概念 三、权限的表示 四…

WebGoat JAVA反序列化漏洞源码分析

目录 InsecureDeserializationTask.java 代码分析 反序列化漏洞知识补充 VulnerableTaskHolder类分析 poc 编写 WebGoat 靶场地址&#xff1a;GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application 这里就不介绍怎么搭建了&#xff0c;可以参考其他…

数据结构修炼——树?二叉树?堆?从入门到代码实现,第一弹!!!

目录 一、树的概念与结构1.1 树的概念1.2 树的相关概念1.3 树的表示及实际应用 二、二叉树概念及结构2.1 二叉树的概念2.2 特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树 2.3 二叉树的存储结构 三、二叉树的顺序结构与实现3.1 堆的概念及结构3.2 堆的实现3.2.1 堆的创建与销毁3.…

安卓13禁止用户打开开发者选项 android13禁止用户打开开发者选项

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号,一般的话,在这里连续点击就可以打开我们的开发者选项了。但是有些系统要进行保密,因此要禁止用户进入。 2.问题分析 这里我们是通过点…

Android Framework AMS(02)AMS启动及相关初始化5-8

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多&#xff0c;因此拆成2个章节&#xff0c;本章节是第二章节&…