IPv 4

news2024/11/26 12:50:49

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.coloradmin.cn/o/2207350.html

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

相关文章

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序,首先需要安装Python调试器插件,如图1所示。 图1 安装调试器插件 Python Debugge…

在当前网络环境中查看所有IPv4与Mac地址的方法

在powershell界面中: # 获取并显示所有网络接口的MAC地址和IPv4地址 Get-NetAdapter | Select-Object -Property Name, MacAddress, Status Get-NetAdapter | Get-NetIPAddress -AddressFamily IPv4 | Select-Object -Property InterfaceAlias, IPAddress, PrefixL…

【JavaScript】JavaScript开篇基础(1)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

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

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

SpringBoot3项目中Knife4j的配置与使用

引言 Knife4j 是基于 Swagger 的增强版API文档生成工具,提供美观且功能丰富的API文档界面。 官网:Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com) 配置 基于SpringBoot3进行配置,有以下注意点&#xff1…

Oracle云主机申请和使用教程:从注册到SSH连接的全过程

今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难(疑惑abc错误),可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验,或许你们也能成功申请到自己的…

opencv-rust 系列2: camera_calibration

opencv-rust 系列2: camera_calibration 前言: 这里只是opencv-rust自带示例的中文注解. 略微增加了一些代码也是我在调试时用到的. 说明: camera_calibration.rs是opencv-rust自带的示例, 在examples目录中可以找到,我增加了一些中文注释如下.如需运行可以在项目根目录执行命…

Qt第三课 ----------显示类的控件属性

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

从0开始深度学习(8)——softmax回归

1 分类问题 深度学习从大方向上来说,就是回归预测和分类问题。 假设输入一个 2 ∗ 2 2*2 2∗2的灰度图像,可能属于“鸡、猫、狗”三个类别中的一个,那如何在计算机中表示标签呢?最常见的想法是 y { 1 , 2 , 3 } y \{1,2,3\} y{…

现金1.8kw, 年入150w, 财务不自由...

他的生活状态无疑是许多人梦寐以求的。拥有两套无贷款的房产,家庭和睦,两台车价值约50万元。现金资产高达1800万元,家庭年收入约150万元,职业稳定,属于中层管理阶层。 重要的是,孩子们的成绩优异&#xff0…

ListView的Items绑定和comboBox和CheckBox组合使用实现复选框的功能

为 ListView 控件的内容指定视图模式的方法,参考官方文档。 ComboBox 样式和模板 案例说明:通过checkBox和ComboBox的组合方式实现下拉窗口的多选方式,同时说明了ListView中Items项目的两种绑定方式. 示例: 设计样式 Xaml代码…

机器学习 | 特征选择如何减少过拟合?

在快速发展的机器学习领域,精确模型的开发对于预测性能至关重要。过度拟合的可能性,即模型除了数据中的潜在模式外,还拾取训练集特有的噪声和振荡,这是一个固有的问题。特征选择作为一种有效的抗过拟合武器,为提高模型…

好用,易用,高效,稳定 基于opencv 的 图像模板匹配 - python 实现

在定位、搜索固定界面图块时,经常用到模板匹配,opencv自带的图像模板匹配好用,易用,高效,稳定,且有多种匹配计算方式。 具体示例如下: 模板图: 待搜索图: 具体实现代码…

苹果正式宣布:iPhone全面开放近场通信(Near Field Communication,简称NFC)【使用安全元件提供app内NFC数据交换功能】

文章目录 引言I iPhone的NFC功能开发者用户数据交换的体验革新安全与隐私II 知识扩展:近场通信(NFC)技术钱包NFC开关打开读取NFC标签(NFC tags )权限demo引言 2014年iPhone 6开始,苹果首次引入了NFC功能,但最初只允许自家的Apple Pay进行移动支付。慢慢地适配了交通卡,增…

基于go开发的终端版即时通信系统(c-s架构)

项目架构图 类似一个聊天室一样 整体是一个客户端和服务端之间的并发多线程网络通信,效果可以翻到最后面看。 为了巩固基础的项目练手所以分为9个阶段进行迭代开发 版本⼀:构建基础Server 新建一个文件夹就叫golang-IM_system 第一阶段先将server的大…

沈阳化工大学第十一届程序设计沈阳区竞赛:凿冰 Action(博弈论,思维)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 北极探险队有新收获了!!! 北极探险队发现了NNN条长度不一的冰柱,由于冰柱里封存有价值的生物,现在需要两名生物学家小A和小…

TON生态小游戏开发:推广、经济模型与UI设计的建设指南

随着区块链技术的快速发展,基于区块链的Web3游戏正引领行业变革。而TON生态小游戏,借助Telegram庞大的用户基础和TON(The Open Network)链上技术,已成为这一领域的明星之一。国内外开发者正迅速涌入,开发和…

如何在算家云搭建Kolors(图像生成)

一、模型介绍 Kolors 是快手 Kolors 团队基于潜在扩散的大规模文本转图片生成模型。经过数十亿个文本-图片对的训练,Kolors 在视觉质量、复杂语义准确性和中英文文本渲染方面均比开源和闭源模型具有显著优势。此外,Kolors 支持中英文输入,在…

C语言基础语法——类型转换

数据有不同的类型,不同类型数据之间进行混合运算时涉及到类型的转换问题。 转换的方法有两种: 自动类型转换(隐式转换):遵循一定的规则,由编译系统自动完成强制类型转换(显示转换)…

http协议概述与状态码

目录 1.HTTP概述 1.1请求报文起始行与开头 ​1.2响应报文起始行 ​ 1.3响应报文开头 ​ 2.http状态协议码 1.HTTP概述 默认端口 80 HTTP超文本传输与协议: 数据请求和响应 传输:将网站的数据传递给用户 超文本:图片 视频等 请求request:打开网站 访问网站 响应r…