Linux:ip和ip协议的初步认识

文章目录

  • ip协议基本认识
  • ip协议的报头
  • 网段划分
  • ip的类型划分

ip协议基本认识

前面对于TCP的内容已经基本结束了,那么这也就意味着在传输层也已经结束了,那么下一步要进入的是的是网络层,网络层中也有很多种协议,这里主要进行解析的是ip协议

前面的TCP协议层把一大堆数据看起来是传输给了对方,那么实际上真的传输过去了吗?实际上只是把数据交给了网络层,而在网络层中也会对应的进行报头的封装等等内容

在对于网络层的认识前,要先明确一个概念,比如我们说有传递报文可靠的能力是代表确实一定能可靠传递吗?其实这两个概念并不等价,在网络协议栈中,TCP扮演的角色是提供可靠性的策略,比如说有对应的超时重传,快重传,流量控制,滑动窗口,阻塞控制等,但这些其实都是所谓的可靠性策略,对于真正进行传输的其实还是对应的网络层,ip协议,因此我们说ip的本质就是有能从主机a到主机b进行传输报文的能力,本质上来说它是一种能力,但是至于能不能传输过去也不敢保证,只是传输过去的概率比较大

那在当代网络的传输来说,ip协议能够保证以较大概率能够传递过去,而TCP又能提供可靠的策略,二者相结合,就能真正做到基本100%可靠的进行网络传输了

在这里插入图片描述
在进行传输的时候,数据包就会在路由器中进行传输,这是宏观上建立起的一个基本的认识

我们平时使用的设备,不管是任何设备,它一定是处于一个子网当中的,那这个子网和子网之间就会借助路由器来进行链接,在子网当中可能会存在很多个设备,例如有主机a和主机b,那主机a要发送数据给主机b,就意味着它一定是会借助路由器进行传输转发,说白了就是会跨越很多的子网,所以对于网络的理解,要首先理解到它是由一个一个的子网构成的,那么宏观上来讲,ip的报文就会在这个网络当中进行不断的转发,最后从源ip地址传递到了目标ip地址,凭借的就是这些很多的路由器进行转发的工作

ip协议的报头

在这里插入图片描述
对于ip协议的理解,必然要涉及到两个问题,这里先进行第一个问题:

1. 报头和有效载荷如何进行分离?

结论是固定长度和自描述字段,这个和TCP协议其实是一样的,这里就不过多进行说明了

2. 报文如何进行交付?

结论是使用8位协议,具体的使用如下所示

下面对于ip协议的协议字段进行理解

8位生存时间

这个字段是什么意思呢?下面我给出这样的一个场景:当一个ip的报文被发送出去之后,那么这个报文就会在网络当中进行转发,假如现在这个目标主机已经离线了,或者有其他原因,反正是处于不可应答的状态了,那么就会导致这个报文会被一直转发,在网络中自然是不会允许这样的情况出现的,所以就会提前设置好对应的8位生存时间这样的概念,使得最终这个报文在路由器的跳数是固定的,如果接受到一个跳数为0的报文,说明这个报文已经没用了,此时就把这个报文直接丢弃掉就可以,所以这个其实就是一个计数器

8位协议

那这个字段是做什么的呢?一句话来说,8位协议就是指的是要把报文交付给上层的哪一个协议,这个字段的作用就是用来表示要交付的协议,比如下面要发送给传输层,那么这个里面就要填写的是TCP协议,表示下一步要交付给传输层

32位源ip地址和32位目的ip地址

在进行TCP协议的学习中有源端口和目的端口,而在ip协议当中存放的是源ip地址和目标ip地址,在报文进行传输的时候是经过路由器进行传输的,而路由器的传输实际上是只会在ip层进行传输的

网段划分

下面要介绍的内容是对于网段划分的概念

在这里插入图片描述
对于路由器来说,它是工作在网络层的,所以这就意味着在原则上,路由器看不到主机上的端口号,它能看到的就是一个一个的ip地址,而在ip地址当中其实是可以分成两个部分的,一个叫做网络号,一个叫做主机号,所谓网络号就是在网络建设的过程当中,为了保证两个相互连接的网站具有不同的标识,而主机号则是在同一个网段中的主机之间具有相同的网络号,但是必须要有不同的主机号

原则上来说,路由器本质上也是一个子网的主机,所以它也是需要配置对应的ip地址的,而路由器是要进行网络传输的,这就意味着它必须要同时存在在至少两个子网当中,所以就意味着路由器起码有两个ip,那如何理解路由器有两个ip?这里可以简单理解为是路由器的内部是有多张网卡的

路由器的一般来说是子网当中的第一个设备,所以它的ip地址一般是网络号.1,而路由器的功能这里抛出一个概念,它不仅仅是用来进行报文的转发,同时它还可以进行构建子网,也就是局域网,换句话说就是子网当中的ip地址都是怎么来的?结论是由路由器进行分配的,在一个子网当中,如果出现了一个新的主机,就要构建一个新的ip地址,子网ip本质上是让路由器来帮你维护的,这样的ip一般就是我们所谓的内网ip,而之前所谈的主机a和主机b进行数据包转发的ip,这个叫做是公网ip,那至于这两个有什么区别,下面的内容会进行理解

所以至此就已经完成了对于路由器的认知,它是可以进行子网的划分的,路由器本身也是一个主机,这就意味着它的上面也有操作系统,那这个操作系统是要管理什么?在路由器上面会进行ip的分配,这就意味着它是能够进行网络的管理,如果让用户手动进行管理ip是非常马粪的一件事,所以就诞生了一种技术叫做DHCP,这种技术就是能够自动给新增的主机派生对应的ip地址,同时可以保证ip地址不重复,所以从某种意义来说,路由器也可以叫做是DHCP服务器,又能构建子网,还能进行ip地址的管理工作

ip的类型划分

下面要进行描述的是ip的划分,那这块要如何进行描述?先聊聊各种ip类型

在这里插入图片描述

ip地址是32位,换算下来最大有42亿多种方案,ip本质上来说是一个有限的资源,全世界只要需要入网的设备都是要有对应的ip资源的,所以换句话说这也可以看成是一份公共资源,每个国家都要对于这份资源进行抢占,才能有使用网络的权利

那这就意味着这块资源不能被随便的使用,要有合适的划分管理的方式,全球为了进行网络资源的管理,因此有了网络地址和主机地址进行划分的依据原则,如上图所示

但是这样的划分方法很快就出现了问题,大多数的组织都喜欢申请b类网络,因为这种网络的主机号和网络号都比较合适,用起来是最舒服的,但是问题是,即便是b类网络,也会面临主机号明显不会被使用的问题,可能申请的这个ip可以容纳很多的主机,但是实际的使用中只用了2个地址,那这就会造成大量的ip地址的浪费,那这必然是不合适的,所以就需要诞生一种新的划分方法:子网掩码

子网掩码

子网掩码可以理解为是一种新的方式来区分网络号和主机号,子网掩码就是一个32位的正整数,只不过是一串01,这个子网掩码的特点是通常把它写成二进制的话,通常是用一串0来结尾,将IP地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

在这里插入图片描述

可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高
24位是1,也就是255.255.255.0

那问题是,这个子网掩码在报文中也并没有体现,实际上这个内容是在路由器的内部进行配置的,所以说通常你的报文在经过路由器转发的时候,要先按照目的网络进行转发,为什么这么说,其原因就是因为路由器会拿着这个目标报文和和自己内部的子网掩码,按位与就形成了网络号,而路由器的内部是可以配置多个ip的,每个路由器连接哪个子网它内部是清楚的,所以就能够把这份报文经过网络进行转发,所以就形成了整个网络世界

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

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

相关文章

【yolov5小技巧(1)】---可视化并统计目标检测中的TP、FP、FN

文章目录 🚀🚀🚀前言一、1️⃣相关名词解释二、2️⃣论文中案例三、3️⃣新建相关文件夹四、4️⃣detect.py推理五、5️⃣开始可视化六、6️⃣可视化结果分析 👀🎉📜系列文章目录 嘻嘻 暂时还没有~~~~ &a…

OpenHarmony实战:小型系统平台驱动移植

在这一步,我们会在源码目录//device/vendor_name/soc_name/drivers目录下创建平台驱动。 建议的目录结构: device ├── vendor_name │ ├── drivers │ │ │ ├── common │ │ │ ├── Kconfig # 厂商驱动内核菜单入口 │ …

线上线下陪玩,APP小程序H5。源码交付,支持二开!

线下陪玩的风险与管理方式 1、陪玩者的身心健康风险 线下陪玩的模式决定了陪玩者需要与不同的需求方见面,并满足他们的陪伴和娱乐需求。这种工作方式可能会给陪玩者带来身心上的压力和负担。因为陪玩者需要面对各种需求方的要求,有时还需要虚拟出一种完…

mac/win使用pyinstaller打包app/exe文件,活着执行脚本,双击运行

🌸 踩坑记录 python环境最好使用虚拟环境,推荐使用conda管理,并且若本地有python环境,不要使用和 本地环境版本 相同的虚拟环境 这里踩坑较多,已经记不清楚注意点 虚拟环境python版本不要和本地环境一样 mac/win只能…

day03-Docker

1.初识 Docker 1.1.什么是 Docker 1.1.1.应用部署的环境问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异 例如一个项目中,部署时需要依…

Git的简单入门使用

文章目录 拷贝项目的步骤创建项目的步骤提交项目或项目文件的步骤恢复项目文件的步骤 拷贝项目的步骤 找到需要用来存放项目的文件夹;在文件夹页面空白处右键点击,然后再菜单中选择“Open Git Bash here”。在Github上找到需要进行拷贝的项目&#xff0…

算法复习:链表

链表定义 struct ListNode { int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {} }; 链表的遍历:ListNode phead; while(p!null) pp.next; 找到链表的尾结点:phead; while(p.next!null)pp.next; 链表节点的个数: phead…

基于SSM的网络视频播放器

目录 背景 技术简介 系统简介 界面预览 背景 互联网的迅猛发展彻底转变了全球各类组织的管理策略。自20世纪90年代起,中国政府和企业便开始探索利用网络系统进行信息管理。然而,早期的网络覆盖不广泛、用户接受度不高、相关法律法规不完善以及技术开…

备战蓝桥杯---DP刷题2

1.树形DP: 即问那几个点在树的直径上,类似ROAD那题,我们先求一下每一个子树根的子树的最大值与次大值用d1,d2表示,直径就是d1d2的最大值,那么我们如何判断是否在最大路径上,其实就是看一下从某一点出发的所…

YUNBEE云贝-技术分享:PostgreSQL分区表

引言 PostgreSQL作为一款高度可扩展的企业级关系型数据库管理系统,其内置的分区表功能在处理大规模数据场景中扮演着重要角色。本文将深入探讨PostgreSQL分区表的实现逻辑、详细实验过程,并辅以分区表相关的视图查询、分区表维护及优化案例,…

详解网络攻击的发生原因、类型及如何防范

网络攻击是访问计算机系统或者大小,修改或窃取数据的未经授权的企图。网络破坏分子可以使用多种攻击媒介,推出包括网络攻击的恶意软件,网络钓鱼,勒索,以及人在这方面的中间人攻击。固有风险和残余风险使这些攻击中的每…

LLM:检索增强生成(RAG)

1 Embedding技术 简单地说,嵌入(Embedding)思想可以视为一种尝试通过用向量来表示所有东西的“本质”的方法,其特性是“相近的事物”由相近的数表示。 1.1 文本向量(Text Embedding) 在GPT中,文本嵌入(Text Embedding)是通过将输入文本中的每…

Web Animations API 动画

Element.animate() dom.animate动画可以避免污染dom原有的css动画 参考资料 Element.animate() - Web API 接口参考 | MDN Element: getAnimations() method - Web APIs | MDN .tunnel{width:200px;height:200px;background-color:#38f;}<div class"tunnel" …

QT 实现无边框可伸缩变换有阴影的QDialog弹窗

实现无标题栏窗口的拖拽移动、调节窗口大小以及边框阴影效果。初始化时进行位或操作&#xff0c;将这些标志合并为一个值&#xff0c;并将其设置为窗口的标志。这些标志分别表示这是一个对话框、无边框窗口、有标题栏、有最小化按钮和最大化按钮。 setWindowFlags(Qt::Dialog |…

【微服务】——Nacos注册中心

这里写自定义目录标题 1.认识和安装Nacos2.服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 3.服务分级存储模型3.1.给user-service配置集群3.2.同集群优先的负载均衡 4.权重配置5.环境隔离5.1.创建namespace5.2.给微服务配置namespace 6.Na…

蓝桥杯真题:货物摆放

import java.util.ArrayList;public class Main {public static void main(String args[]) {//常规思路/*long num 2021041820210418l;int count 0;for ( long i 1 ; i < num ; i ){for ( long j 1 ; j < num ; j ){for ( long k 1 ; k < num ; k ){if ( i * j *…

《C Prime Plus》02

1. UNIX 系统 C语言因UNIX系统而生&#xff0c;也因此而流行&#xff0c;所以我们从UNIX系统开始&#xff08;注意&#xff1a;我们提到的UNIX还包含其他系统&#xff0c;如FreeBSD&#xff0c;它是UNIX的一个分支&#xff0c;但是由于法律原因不使用该名称&#xff09;。 UN…

蓝桥杯练习——拼出一个未来

选中 index.html 右键启动 Web Server 服务&#xff08;Open with Live Server&#xff09;&#xff0c;让项目运行起来。接着&#xff0c;打开环境右侧的【Web 服务】&#xff0c;就可以在浏览器中看到如下效果&#xff1a; 目标 完善 js/index.js 的 TODO 部分&#xff0c;实…

概率、似然、极大似然估计

概率、似然、极大似然估计 概率&#xff1a;特定情况下某事件发生的可能性&#xff08;参数已知&#xff0c;事件发生的可能性&#xff09;似然&#xff1a;根据已经确定的结果推测产生这个结果的可能的环境&#xff08;事件发生的可能性已知&#xff0c;参数未知&#xff0c;推…

生成式AI的情感实验——AI能否产生思想和情感?

机器人能感受到爱吗&#xff1f;这是一个很好的问题&#xff0c;也是困扰了科学家们很多年的科学未解之谜。虽然我们尚未准备好向智能机器赋予情感&#xff0c;但智能机器却已经可以借助生成式人工智能&#xff08;AI&#xff09;来帮助我们表达自己的情感。 自然情感表达 AI正…