Linux学习记录——이십팔 网络基础(1)

news2024/10/6 0:13:14

文章目录

  • 1、了解
  • 2、网络协议栈
  • 3、TCP/IP模型
  • 4、网络传输
    • 1、同一局域网(子网)
    • 2、局域网通信原理
    • 3、跨一个路由器的两个子网
    • 4、其它


详细的网络发展历史就不写了

1、了解

为什么会出现网络?一开始多个计算机之间想要共享文件,就得一点点存起来,然后给另一个计算机读取,久而久之,这样就是个麻烦事,所以出现了网络,将几台机器都处于一个网络环境下,就可以更好地通信了。当这个范围不断扩大,越来越大的区域都可以用网络了,之后网络开始往民间发展,各个地区之间,各个国家之间也就都能通过网络联系了。

几台机器通过网络形成通信,这也就组成了一个局域网,两个局域网通过交换机,路由器等相互连接,就形成了一个广域网,也可以说成一个更大的局域网。网络能连接如此多的个体,必然要有规则来约束其沟通,也就出现了协议。网络间的协议为什么存在?这就像两个人之间形成某种约定一样,本质上是为了更高效地沟通效率。一个协议通常由行业中的顶级组织来决定,提出规则后,并不一定要由提出者来完成整个协议的实现,而是由行业内顶级的团队来做。

如果要发信息到欧洲,传输距离变得很长,只有两台机器之间发送是很难保证成功的,所以会通过很多中间机器来传输信息,这也就保证信息的不丢失,但即使这样,如何保证就一定能不丢失,并且还能准确地发送到对应的主机上呢?这个问题之后会写。出现上述事实的原因就是传输距离变长了,所以问题是有前后上下关系的,所以在设计网络功能时,不同的功能设计成不同的模块,这就是低耦合;有了问题,就有了需求,就需要解决,网络通信还有很多不同性质的问题,要高效地解决它们,需要把相关的问题放在一起,做出解决方案,不相关的不要放在一起,这就是高内聚。通过高内聚,低耦合,可以设计出很多模块,这些模块被设计成层状结构,体现了前后关系。

传输距离的变长,衍生出新的问题,需要制定网络协议来约束信息的传输
协议被设计成层状结构,各种问题按照高内聚,低耦合的方式组织成层状结构,方便维护代码和方案的设计

分层设计,这种设计在学习C++时学到过,就是继承体系,一个基类可以有多个派生类,用基类指针指向不同派生类对象,就可以使用对应派生类对象的方法,在外部看来,只有基类,但内部却有很多派生类,这就是一切皆基类;C语言库中,用FILE结构体来封装了各种文件的系统接口,用户只需要使用FILE就可以调用系统接口,通过这个结构体来屏蔽了各种接口之间的差异,这也是种分层思想;每个进程都有虚拟地址空间,它们以同样的视角来看待自己要使用的空间,地址空间里屏蔽了硬盘,内存等硬件,而是通过页表,地址空间来访问它们,这也是分层结构,硬件在下面,地址空间在上面,进程在更上面;所以分层可以屏蔽软件,也可以屏蔽硬件,任何计算机问题都可以添加软件层来解决。

协议分层有什么好处?层与层之间通过接口进行交互,比如打电话,人和人之间属于一层,通信设备属于一层,还有电话的协议,语言等层,拨电话就像是给电话传参,通信时就是使用设备来输入输出。上层不关心下层的实现,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本,各层解决各层的功能,就是高内聚,不同层只通过接口交互,没有其它操作,就是低耦合。

分层有好处,但也可以不分层。分层是一种选择。

2、网络协议栈

OSI定义了网络协议层,这是一个七层结构。从低到高,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。这个协议层是很完美的一个设计,不过实际应用中,因为很多细节不能在OSI的这个模型中实现出来,它的很多模块功能不能由网络协议层来实现,它的协议层不是全由操作系统来实现,会话、表示、应用没有实现,这三层会被压缩成应用层,因为会话表示应用要自己实现出来,而在我们使用中,不考虑物理层,所以总体就是四层。我们实际使用的就是TCP/IP五层模型,包括应用层,传输层,网络层,链路层,物理层。

OSI定制了标准,但不是OSI实现出来的。

像TCP/IP五层模型,OSI七层模型就是协议栈。

对于计算机来说,它也有分层,最下面是硬件层,往上走,驱动层,系统层,系统层里的最上方有系统调用层,应用层/用户层。使用计算机的时候就是在通过操作系统给的系统调用来操作硬件,网络也是一样,它也有系统给到它的系统调用,用户通过系统调用来操作网络。

网络的分层和计算机分层相对应,物理层对物理层,比如有网卡硬件,链路层对驱动层,网络层和传输层对系统层,应用层对用户层。传输层和网络层属于操作系统,网络的应用层对应计算机的用户层,由用户来实现,用户也包括开发人员,程序员这些,传输层最具有代表性的是TCP协议,网络层最具有代表性的是IP协议。系统层里的系统调用层有网络的系统调用,还有很多其他东西的系统调用。网络本质就是系统的一部分,网络的核心部分属于操作系统,所以网络协议栈会被叫做TCP/IP协议栈,取核心来起名的。对于系统来说,一切皆文件,网卡也是文件,而协议栈就属于文件系统的一部分,系统也会用管理文件的方式来管理他们,所以很多网络接口,和文件也有关系。操作系统的种类非常多,但网络只有一种,不管系统如何,网络协议栈的实现都一样。

3、TCP/IP模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

在这里插入图片描述

数据链路层是负责传送数据帧和检查的,物理层发出来的信息,要通过数据链路层来识别出来,才可以被使用。链路层有很多局域网通信标准,比如以太网,无线LAN,但网络不是只有一种吗?链路层的标准不只有一个,链路层的实现是在网卡驱动内部实现的,所以链路层会有不同的标准,而网络只有一种指的是操作系统层的,那里只有TCP/IP,但链路层可以有不同,由驱动程序内部实现,但这些标准也遵守TCP/IP协议。

网络层就有IP地址,win + R,输入cmd,然后输入ipconfig就可以查看到自己电脑的IP地址,无线局域网中IPv4地址。而Linux中,输入命令ifconfig,在第二行inet后面的地址是云服务器的内网地址/私有IP。网络层可以指定某一个主机。路由器工作在网络层。

网络层让主机之间有能力传送过去数据,但不一定做得到,而传输层就是保证传输成功的。

应用层解决数据如何使用的问题,也就诞生了很多软件。

在这里插入图片描述

工作在哪一层,就一定拥有下面的所有层,通常不会使用在上面的层,比如路由器不会使用传输层,不过现在的硬件来讲,很多都集成了上层的东西,比如有的路由器也有应用层的方法。

4、网络传输

1、同一局域网(子网)

同一局域网的两台机器,可以直接通信。两个主机通信的本质,是两个主机的OS与网络协议栈在通信。

在这里插入图片描述

每一层都有自己的协议,协议的表现形式是协议报头,也就是每一层都有自己的协议报头,这个报头相当于一个说明书。聊天发送信息,信息在应用层,信息前加上应用层的报头,传给传输层,应用层报头+信息整体,再加上传输层报头,传给网络层,直到最后的物理层,信息前面就有四个报头。根据冯诺依曼体系,用户发送的信息会先给硬件,然后由硬件,再交给收信息的人的链路层,网络层,一层层向上传,每一层都识别自己的报头。每一层都把上一层交付给自己的数据当作自己的有效载荷,当前层给有效载荷添加报头就是在做封装。而且可以发现,发送者和接收者的每一层得到的数据都是一样的,所以在逻辑上,同层协议都认为自己在和对方的同层协议在通信。并且同层协议都能够互相认识对方的报头,就能够将报头和有效载荷分离,将有效载荷交付给上层的哪一个具体协议。==每一层的协议都得能分离报头和有效载荷以及交付给上层有效载荷。==有效载荷交付给上层的功能叫做数据报分用;用户发的信息,通过每一层加报头传给硬件,这是封装;硬件逐一给到上面的层,每一层都会解包,以及数据分用,就会成功发出信息。这也就是数据如何在两台主机之间流通。

2、局域网通信原理

数据在主机中的运作已经了解了,那么在局域网中,还没到主机前数据是如何被运作的?

发送的信息每一个主机都会接收,然后封装交给自己的网卡,网卡会去解包,如果发现不是和自己有关的数据,就会丢弃,是自己的就继续传给上一层。不过网卡可以设置成混杂模式,这个模式什么数据都接收,都向上传,这也就是抓包工作的做法。

任何时刻,局域网中只允许一个人向局域网中发送消息,如果有很多人发,就有可能导致数据碰撞问题,比如很多人都去一个网站抢考试位置,这个网站就有可能崩掉。但局域网是怎么让很多人发信息的?不是只让一个人吗?这个问题后续再写。

任何人要通信,需要有唯一的一个标识符,比如自己的名字。机器也是一样,每台计算机都有网卡,网卡在出厂时就在网卡内部写入了网卡的sn号,也就是MAC地址,这个号是全球唯一的标识符。

3、跨一个路由器的两个子网

首先认识路由器。路由器有3层功能,第一层是网络层,第二层是链路层,第三层是物理层。路由器也是一台主机(节点),路由器至少连接两个子网,至少有两个网络接口。

在这里插入图片描述

以太网和令牌环是局域网通信的两个标准,对应着不同的链路层实现方案,链路层处于驱动程序中,也就是两者的驱动就不一样。路由器有两个子网,一个连接以太网,一个连接令牌环。

用户发送信息后,添加报头,一直传到最下面一层,但以太网,令牌环都不是只有路由器这一个主机,它们可能还有其它主机,那么为什么就可以指定给到路由器?每一个主机都会被标识,通过主机的IP地址来标识,也就是IPv4地址,这是一个4字节的整数,我们电脑上的IP地址是从0.0.0.0到255.255.255.255的,每个位置能表示0~255(2^8),总共8个比特位,总共32个比特位,4个字节。这种字符串风格的点分十进制方案的地址是给人看的,但机器不认它,机器要把它转成4字节,每一个字节8个比特位,就能取出这个字符串IP地址。网络协议栈的核心TCP/IP协议是在网络层和传输层,这两个层在操作系统中,所以TCP/IP是内核中的,内核是C语言实现的,TCP/IP也是C语言实现的。这个转换是用位段来实现的。

struct ip
{
    int patr1: 8;
    int part2: 8;
    int part3: 8;
    int part4: 8;
}

int srcIp = xxx;
struct ip *p = (struct ip*)&srcIp;
p->part1;//这样就能找到每一部分的数字
p->part2;
...

IP地址能够唯一标识公网环境下的主机。网络层有一个路由表,也就是IP协议所在的那一层。用户在发消息时,也会被加上要发给谁的信息,传到了网络层时,会根据接收者IP地址和路由表来判断发给谁。发送者只知道自己在哪个网络中以及接收者的IP地址,路由表也不知道发给谁,但它知道数据不是发给自己所在网络的其他主机的,比如它知道不是发给以太网中其他主机的。数据到了网络层,网络层会添加一个目的报头,是接收者的IP地址,然后给到路由器,路由器通过路由表知道了要发给谁,路由器再把这些信息给自己的链路层,链路层会添加一个目的报头,是接收者的MAC地址,到了这里这个数据就有了目的地的IP和MAC地址。

目的IP地址是为报文定制的最终目标,根据该地址来进行路径选择,目的MAC地址会变化,根据路径选择的结果,来选择下一个主机。不只有两个子网,可能要跨多个子网才能找到接收信息的一方。

当在以太网的某个主机发的信息,来到路由器,又往下传,来到以太网,以太网的所有主机都收到了这个信息,但只有路由器发现这是属于它的信息,所以其他主机抛弃掉,让路由器来处理。报头中发送者的主机的网卡的MAC地址,把这个分离后,来到网络层,路由器查看信息的目的IP地址,查看路由表,知道要选择哪条路径,比如如果就是发给令牌环网某个主机的,那么路由器就会往下传给自己的链路层,加上接收者主机的令牌环网的MAC地址,向下传给令牌环网,令牌环网的所有主机都收到后,发现这个MAC地址不是自己就弃掉,只有一个主机接收了这个地址,交给链路层,去掉MAC地址报头,交给网络层,网络层查看目的IP地址发现是自己的信息,然后就分离IP地址,逐渐上传,最终给到接收者。这个过程中,同层的都认为是和对方同层的在交流,只是链路层的信息不一样。

IP协议往上,也就是网络层往上,是没有信息变化的,发什么收什么,差别发生在链路层。IP地址屏蔽了底层子网机制的差异,这是路由器+IP地址共同作用的结果。正是因为如此,IP地址是全球网络的底层基础。所以任何一个软硬件问题,都可以通过添加一层软件层来解决,比如网络里,这个软件层就是IP地址所在的网络层。

4、其它

发送的数据包,在传输层叫做数据段,在网络层叫做数据报,在链路层叫做数据帧。每一层的信息交给每一层来处理,就是分用。

Linux中用ifconfig命令

在这里插入图片描述

第一个inet后面的地址是内网的IP地址,不是公网的。ether则是基于以太网的MAC地址,它有48位,每一位都用16进制表示,用冒号分隔。

结束。

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

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

相关文章

clickhouse union all之后数据量不一致

环境: clickhouse版本:22.8.16.32 问题:clickhouse使用union all查询结果与每一段sql查询结果只和不一致 原因:因为clickhouse版本问题,官方给出不同的解释 解决方案:将union all的每一段sql用括号括起来…

kafka知识点汇总

kafka是什么? Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布…

Frp实现外网访问内网服务

一、需求背景 博主在本地电脑(Windows)上安装了一款BS架构的软件,现在想要其他人通过域名直接访问本地电脑的web服务。 二、准备事项 (一)前置条件 公网IP(可以购买阿里云轻量服务器)域名&a…

【藏经阁一起读】(68)__《ECS技术实战指南》

【藏经阁一起读】(68)__《ECS技术实战指南》 目录 一、知识收获 (1)、CIPU (2)、RDMA 二、个人建议 一、知识收获 (1)、CIPU 1、多模态、海量数据、超大模型成为发展方向&#…

基于Face++网络爬虫+人脸融合算法智能发型推荐程序——深度学习算法应用(含Python及打包exe工程源码)+爬虫数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境 模块实现1. Face.APl调用1)Face.APl介绍2)调用API 2. 数据爬取1)网络数据爬取步骤2)爬虫实现 3. 模型构建4. 用户界面设计1)需要调用的库文…

肖sir__mysql之多表练习题__006

已知2张基本表:部门表:dept (部门号,部门名称);员工表 emp(员工号,员工姓名,年龄,入职时间,收入,部门号) 1:dept表中有4条…

论文解读 | 基于视觉的水果采摘机器人识别与定位方法研究进展

原创 | 文 BFT机器人 01 背景 在复杂的农业环境中,利用机器视觉及其相关算法可以提高收割机器人的效率、功能性、智能化和远程互动性。对于水果采摘机器人系统来说,主要的挑战包括免提导航和水果定位,以及大多数果园中常见的崎岖地形和大型…

Direct3D纹理映射

借助纹理映射技术,我们可将图像数据映射到三角形单元中,这种功能可以显著地增加所绘制场景的细节和真实感,例如创建一个立方体然后为其每个面映射一个板条纹理,从而将该立方体变为一个板条箱,在Direct3D中纹理用接口ID…

武汉凯迪正大—高压信号发生器

一、产品介绍 本产品是我公司在长期从事电缆故障测试研究方面新开发的创新型换代产品,采用大屏幕彩色液晶显示器、指示高压侧真实电压值、具有过压、过流保护。该产品满足《中华人民共和国电力行业标准,高压试验装置通用技术条件》,主要用于对…

数学建模——差分方程结论介绍

适用对象:事物发展具有明显阶段性 一、差分方程介绍 差分方程是一种描述离散系统演化的数学工具。与微分方程不同,差分方程使用差分代替微分来描述变量之间的关系。 差分方程通常由递归关系定义。假设有一个序列 {y₀, y₁, y₂, y₃, ...},…

两个单链表相交的问题

两链表相交及其第一个节点 判断有环无环 判断有无环,如果有环返回第一个入环节点,如果无环返回null 使用额外空间:Set结构 沿着指针将a、b、c、d、e、c放入set结构中,每次放入前查看在set集合中是否存在; 若遍历到…

供应商整合对企业有哪些好处?

企业采购总是希望降低成本,赢得更多的利润。实现这目标的其中一种方法就是供应商整合。 究竟什么是供应商整合?整合供应商有哪些好处?本文为你详细解答。 什么是供应商整合? 供应商整合是减少特定产品或服务的供应商数量的过程。…

JTS:06 九交模型讲解

版本 org.locationtech.jts:jts-core:1.19.0 链接: github 九交模型讲解:Dimensionally Extended 9 Intersection Matrix 九交模型 九交模型,是通过矩阵来判断俩个物体的关系的,请看上面九交模型讲解 九交模型测试 测试环境 www.geogebra…

Unity中 UI Shader的基本功能

文章目录 前言一、实现思路1、暴露一个 2D 类型的属性来接受UI的纹理2、设置shader的层级为TransParent半透明渲染层级,一般UI都是在这个渲染层级3、更改混合模式,是 UI 使用的纹理,该透明的地方透明 二、代码实现 前言 Unity中 UI Shader的…

SpringBoot-线程池ThreadPoolExecutor异步处理(包含拆分集合工具类)

ThreadPoolExecutor VS ThreadPoolTaskExecutor ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理。 配置文件application.yml # 异步线程配置 自定义使用参数 async:executor:thread:core_pool_size: 10max_pool_size: 100 # 配置最大线程数queue_capacity: …

gif动态图片如何做?两个方法教你在线制作gif

制作gif动画的方法有哪些?gif动图作为当下流行的一种图片格式,是由一帧一帧的图像,循环播放而产生的动画效果。那么,制作gif动画的方法有哪些呢?给大家分享一款专业的gif动画制作(https://www.gif.cn/&…

【JVM】Java的内存模型(JMM)!

一、运行时数据区域划分 JVM虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 JDK 1.8之前分为:线程共享(Heap堆区、Method Area方法区)、线程私有(虚拟机栈、本地方法栈、程序计数器) …

“一种三元前驱体废水螯合树脂回收钴的装置”实用新型专利

“一种三元前驱体废水螯合树脂回收钴的装置”实用新型专利 (证书号:第19681862号;专利号:ZL 2022 2 1042752.0) 三元前驱体通常由三元液(硫酸镍、钴、锰的混合溶液)、液碱与氨水在一定条件下液相合成,再经陈化、固液分离、流水洗涤、干燥、过…

PMP考试注意事项有哪些?

1. PMI明确规定:不允许考生使用自带文具,包括自带的笔、削笔刀、橡皮、笔袋、计算器和草稿纸等。 2. 本次考试考场内为每位考生配备2B铅笔、橡皮、计算器(若有需要)和草稿纸。如文具有缺损或考试过程中如需更换铅芯等,请向监考老师举手示意。…

【实战】H5 页面同时适配 PC 移动端 —— 旋转横屏

文章目录 一、场景二、方案三、书单推荐01 《深入实践Kotlin元编程》02 《Spring Boot学习指南》03 《Kotlin编程实战》 一、场景 一个做数据监控的单页面,页面主要内容是一个整体必须是宽屏才能正常展示,这时就不能用传统的适配方案了,需要…