Linux->初识计算机网络

目录

前言:

1 网络发展背景

2 协议

2.1 网络协议初识

2.2 协议分层

2.3 OSI、TCP/IP层状模型

2.4 协议和操作系统的关系

2.5 根据协议栈的通信

3 网络中的地址管理


前言:

        本篇当中没有任何关于网络编程的讲解,全部是对网络的宏观理解,毕竟只有理解了网络实际的走向,后续学习才会更加轻松。

1 网络发展背景

        首先,咱们还是简单的谈一下关于网络出现的原因。在以前,网络还没有被创造出来,但是计算机已经工作在了各个实验室里面了,也就表示了这些计算机都是独立于其它的计算机的,它们之间不能相互通信,也就是每一个计算机完成了工作之后,并不能将自己的信息直接传递给其它的计算机,所以在当时有一个叫做“软盘”的东西,用于读取数据,然后通过人为的方式,将软盘拆下来交给另外的一台计算机进行下一步的数据处理。

        通过上面的计算机数据交流方式,我们可以很清晰的感受到当时的计算机之间想要进行数据交互的速度是非常慢了,因为只要有了人的参与,整个工作就是会变得非常慢。所以基于这个原因,有的实验室就开始研究网络了,起初,它们只是将几台相近的计算机连接起来,也就是本地连接,举一个生动的例子那就是switch游戏机之间可以不联网,只要两台游戏机之间相隔不远那么它们就能够通信。就这样,这个实验室的工作效率变得非常快,其它实验室就不干了哇,它们有的我也得有,所以各个实验室的计算机在内部都被联系起来了。这个时候又有人认为实验室和实验室之间的通信好像也不方便,又开始研究,然后就出现了网络。之后随着网络的发展,网络的规模也逐渐的扩大,最后成为了现在这个覆盖全球的网络。

        相信大家也是听说过局域网还有广域网的,其实这两个并没有直接的划分界限,也就是说,广域网其实就是大一点的局域网,它们之间只不过是一个相对的概念罢了。

2 协议

2.1 网络协议初识

        看了上面的小故事,估计大家还是啥也不知道,正常,因为我啥也没讲,哈哈。言归正传,大家有没有觉得很奇怪呢?既然我们要进行计算机之间的交流与通信,那么它们又是怎么进行精确找到某一台计算机的呢?总不可能是把我的计算机的数据发送到网络当中,然后全球的计算机都进行读取,目标计算机读到了就成功,读不到就寄吧。我们平时用的网络除了没网的时候,基本上用起来数据都是能够成功发送和接收的欸?

        所以这个时候就有了协议的出现,这个协议是什么呢?博主之后讲解,但是我们可以理解协议其实就是一个约定。什么意思呢?两台计算机之间做好了约定,没有与其它的计算机约定,那么当我发送数据到网络当中,那么与我做好约定的计算机就会拿到这个数据,而其它的计算机就不会去拿我发送的数据,当然也不排除有人就是故意想要拿。

        但是呢,计算机作为一个机器设备,它的构造基本就是被制造出来就不会更改了,那么又有如此多的计算机厂商,如果它们各自发明一个计算机协议,那么势必就会导致一个问题,不是同样的协议的计算机就不能够通信,这很明显就不足以满足我们网络的通信需求,所以就有人创造出了OSI七层模型,或者修改结构出现了TCP/IP五层模型,但是这些博主都先不讲。因为这个协议模型的出现,并且他就是最好的,所以所有的计算机厂商都根据这个模型开始设计设计自己的计算机了。当然对应的操作系统,硬件驱动也是有相应的设计的。

2.2 协议分层

        基于上面的讲解,大家了解了,两台计算机之间要进行通信,那么必须要有协议,但是总感觉还是有一些问题,那就是非常长的距离的两台计算机之间通信不会导致数据丢失的问题吗?虽然我有了协议,但是又是如何做到精确定位一台主机的问题呢?我的数据在移动的时候又怎么选择路径呢?还有就是我的数据要怎么传输呢?

        其实上面的问题归根到底只有一个原因,那就是传输距离太远啦,但是单纯的理解为传输距离太远了又不方便我们解决问题,因为每一个小问题维护起来就已经是很头疼的一件事情了,所以最后的设计方案就决定将不同的问题通过不同的协议进行解决,也就出现了分层管理的模式,其中某一层出现了问题,我们也只需要修复那一层即可,实现了高内聚的需求。

        我们以打电话为例子:

        小明和小芳在打电话,他们说的都是中文,小明将话说给了他的电话,小芳将话说给了她的电话,然后这两个电话设备通过数据传输到对方的设备中,然后设备又将声音发出来,让他们听到对方说的什么,从而实现了通信。如图:

         通过上面的图片,不难发现,对于小明和小芳的电话交流,实际尚并不是小明和小芳在直接交流,但是由于小明和小芳处于同一层,所以说他们之间能够识别对方的信息,像是电话1就不能理解小芳的意思,但是虽然小明和小芳并不是直接通信,但是我们可以逻辑上认为他们两个就是在通信。

        并且这样做有一个好处,也就是我们分层的好处,是什么呢?小明和小芳不替换,但是电话被我们替换成为了手机、电脑等其他的通信设备,对于小明和小芳有什么影响吗?没有一点点,因为对于他们来说,他们并不关心通信设备的实现是什么,只要这个设备能够支持他们通信,那么一点问题没有。所以根据这个设计理念就出现了,我上面所谈论的OSI、和TCP/IP层状模型。

2.3 OSI、TCP/IP层状模型

         对于模型的每一层的实际作用博主现在也没有过于的了解,所以就为大家分享一篇别人关于这部分的文章。有兴趣的朋友可以去看一看。

TCP/IP四层模型和OSI七层模型的概念

        如果大家要是不看也没关系,对于刚接触网络的我们也没太大的作用,最多也就了解一下。

2.4 协议和操作系统的关系

        关于OSI来说,它本身设计的非常的完善,所以这个模型就作为了最先抢占市场的模型结构,不过在后期人们发现,应用层表示层会话层他们之间的界限比较模糊并且重叠,所以在之后就更改成为了TCP/IP模型,也就是现在我们使用的网络结构。之后的讲解我也是主要通过TCP/IP模型为大家讲解。

        既然大家已经看到了上面的TCP/IP模型,那么大家知道每一层在计算机体系结构当中分别对应了那几个位置吗?下图就为大家展示了:

        对于我们的Linux操作系统来说,他一共有4个管理功能,但是好像并没有看到我们的网络管理这一部分哇?为什么?其实如果有之前知识的小伙伴应该能猜出来,那就是在Linux下一切皆文件,我们的网络数据也被当成了文件管理,还记得我们的OS如何通过文件管理这些硬件设备的吗?我们在驱动中为硬件提供了两个通用的方法,分别是读和写,之后我们的OS只要看到这个文件的内容,就能根据这个内容做出下一步的判断,网络也是一样,所以在Linux当中,网络管理是文件管理的一个子集。并且可以看到上图,我在传输层和网络层旁加上了TCP和IP,这其实就是这两层的协议名称,因为这一部分非常的重要,所以我们的模型结构直接以这两层协议的名称作为名字。而且通过图示的方式,大伙也能看到,无论我们的数据链路层设计的驱动是怎么样的,还是物理层的网卡有何区别,对于我们上层的网络层、传输层、应用层,有什么区别吗?没有的。

2.5 根据协议栈的通信

        首先,处于同一个局域网里面的计算机是可以直接通信的,不需要通过路由器等,下图中,我模仿了QQ发送消息到接收消息的过程。

         从上图中我们可以看到,我们发送的消息是你好,在从上往下传输的过程当中,我们的消息不断地在添加前缀,每一层都添加了,然后到了接收消息的那一端,每一层都会拆解一部分的前缀,这个过程是在干嘛?

        其实这就是协议进行交流的过程,我们每一层添加/删除的前缀都是对应的协议,作用如下:

  1. 标识和识别:协议头部中包含了标识和识别信息,用于确定数据的发送方和接收方。例如,在IP协议头部中有源IP地址和目标IP地址,可以唯一地标识出数据的源和目的地。

  2. 控制和管理:协议头部中可能包含控制和管理信息,用于控制数据传输的方式和过程。例如,在TCP协议头部中有序列号和确认号等字段,用于实现可靠的数据传输和流量控制。

  3. 错误检测和纠正:协议头部中可能包含用于错误检测和纠正的校验码或冗余校验码。通过计算校验码,可以对接收到的数据进行验证,以确保传输过程中的数据完整性和准确性。

  4. 数据解析和处理:协议头部中的信息可以帮助接收方正确解析和处理数据。不同层级的协议头部提供了特定的解析规则和处理方式,以确保数据能够按照预期被接收方理解和处理。

        通过在每一层添加协议头部,网络通信中的数据可以按照一定的组织结构进行传输,并保证了不同层级之间的有效协作。接收方可以根据协议头部的信息,正确解析和处理数据,并将其传递给上一层或下一层进行进一步处理。这样整个协议栈中的各个层级就能够协同工作,实现网络通信的目标。

        对于每一层来说,他都把传给下层的数据分为两部分,分别是报头、以及有效载荷,当发送给下一层的时候,对于下一层的有效载荷就是上一层的所有数据。并且在不同层对于数据包的叫法也不相同,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)

         如下就是数据封装的过程:

         如果我们的数据需要通过路由器,也就是说当我们的两个计算机并没有在同一个局域网当中,那么如果直接发送数据,是找不到我们对应的目标计算机的,所以肯定是有特别的方式让它们两个联系起来的,这个博主之后再讲。我们可以看到,我们的数据已经到了驱动位置,但是由于没有找到目标计算机,所以就将数据丢给了路由器让他去找,巧的是,我们再路由器当中有对应目标计算机的位置,但是有一个问题,那就是我们的驱动并不是令牌环协议,而是以太网协议,所以,路由器会为我们重新添加报头。

        大伙可能有一些疑惑,那就是为什么路由器可以给我们添加报头呢?那我们之前的报头去哪里了?很简单,从驱动到路由器这一个过程当中就是一个解包的过程,他将链路层添加的报头拆了,然后添加上了一个新的报头用于另外的一个计算机。

3 网络中的地址管理

        IPv4(Internet Protocol version 4)是互联网上广泛使用的一种网络协议,用于在网络中唯一标识和定位设备。IPv4地址是一个32位的二进制数,通常以点分十进制表示,共有4个字节,每个字节的取值范围是0到255。

        IPv4地址用于标识网络中的主机或路由器,其中包含了两个重要的部分:网络地址和主机地址。网络地址指示了所属的网络,而主机地址则标识了该网络中的特定主机。

        举例来说,IPv4地址可以是如下形式:192.168.0.1。其中,192.168.0为网络地址,而1则是主机地址。

        另外,MAC地址(Media Access Control Address),也称为物理地址,是一个全球唯一的硬件地址,用于在局域网中唯一标识网络设备(如网卡)。MAC地址是由48个二进制位组成,通常表示成六组十六进制数,每组之间使用冒号或破折号进行分隔。

        MAC地址由厂商在生产设备时进行分配,它们存储在网络设备的网卡中,并且一般不会更改。MAC地址与IP地址不同,不涉及网络的划分和路由,只用于局域网内设备之间的通信。

        对于IP地址还有MAC地址其实我们可以简单的理解,每一个发送的数据当中都有IP地址,同时也有MAC地址,但是MAC地址有可能改变,什么意思呢?我举一个例子:

        假如我要从重庆到上海去,我要走的下一个站是湖北,到了湖北我就问,我到上海应该怎么走?别人也不知道怎么直接走,但是他知道江苏离上海更近,所以我的下一站就到了江苏,到了江苏我又问到上海怎么走?别人还是不知道,但是他知道走浙江更近,于是我又跑到了浙江,到了浙江之后,这里人告诉我,下一站就是上海了,最后我就找到了上海这个地方。

        这里面我从重庆到上海,上海就是IP地址,途径的重庆、湖北、江苏、浙江、上海这就是MAC地址,也就是可以理解这些省份就是路由器,不断地变化,最后就能找到目标位置。

        然后还有一点,那就是我们就算到了上海,也就是找到了目标计算机,但是这个数据又要发送到那个进程当中呢?这个时候就需要端口号了,它与我们的IP组合起来就形成了网络套接字,这部分内容博主下一篇文章在讲解。


        以上就是博主对于这部分内容的全部理解了,希望能够帮助到大家。

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

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

相关文章

【数学建模】 灰色预测模型

数学建模——预测模型简介 https://www.cnblogs.com/somedayLi/p/9542835.html 灰色预测模型 https://blog.csdn.net/qq_39798423/article/details/89283000?ops_request_misc&request_id&biz_id102&utm_term%E7%81%B0%E8%89%B2%E9%A2%84%E6%B5%8B%E6%A8%…

MySQL 进阶之王,MySql 性能实战源码 + 笔记 + 项目实战

随着互联网时代的兴起,MySQL 在数据库领域日益显现出举足轻重的地位,它不断扩大的用户群体就是很好的证明。在这样的背景下,需要越来越多的人在知识资源方面为之付出,将自己对 MySQL 数据库的学习过程、运维经验、个人理解等记录下…

scripy其他

持久化 # 爬回来,解析完了,想存储,有两种方案 ## 方案一:一般不用 parse必须有return值,必须是列表套字典形式--->使用命令,可以保存到json格式中,csv中scrapy crawl cnblogs -o cnbogs.j…

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链…

RocketMQ学习笔记(实操篇)

目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使用方式 命令介绍 集群监控平台搭…

基于深度学习的高精度刀具检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度刀具检测识别系统可用于日常生活中或野外来检测与定位刀具目标,利用深度学习算法可实现图片、视频、摄像头等方式的刀具目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

谈谈——互联网生活中的隐私保护

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

图形编辑器开发:参考线吸附功能,让图形自动对齐

最近我给图形编辑器增加了参照线吸附功能,讲讲我的实现思路。 我正在开发的图形设计工具: https://github.com/F-star/suika 线上体验: https://blog.fstars.wang/app/suika/ 效果是被移动的图形会参考周围图形,自动与它们进行吸附…

MySQl数据库第八课-------SQL命令查询-------主要命脉

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 目录 查询数据 条件 逻辑运算符 模糊查询 范围查询 in 判断空 UNION 排序 聚合 分组:group by —————————…

c++计算贝塞尔曲线(折线平滑为曲线)坐标方法

效果可查看上一篇博文&#xff1a;js手动画平滑曲线&#xff0c;贝塞尔曲线拟合【代码】js手动画平滑曲线&#xff0c;贝塞尔曲线拟合。https://blog.csdn.net/qiufeng_xinqing/article/details/131711963?spm1001.2014.3001.5502 代码如下&#xff1a; #include <cmath&…

FPGA实验三:状态机的设计

目录 一、实验目的 二、实验要求 三、实验代码 1.design source文件部分代码 2.测试文件代码 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 &#xff08;1&#xff09;设计好序列检测器 &#xff08;2&#xff09;仿真波形&#xff08;检测11010&#xff09; 3…

【网络系统集成】路由器实验

1.实验名称:路由器RIP协议配置 2.实验目的 在PacketTracer中进行模拟实验,配置RIP协议,验证RIP协议更新时间及路由状态变化,加深对路由器RIP协议相关知识的理解与掌握。 3.实验内容 (1)拓扑结构图 (2)ip地址分配与端口分配

linux - bc 命令安装

一.引言 迁移新机器后发现没有 bc 命令&#xff0c;之前 shell 脚本的一些计算逻辑会出错&#xff0c;下面快速安装一下。 二.安装 bc 请确保在 root 权限下执行该命令&#xff1a; sudo yum install bc 出现下述界面即安装成功&#xff1a; 三.测试 bc 测试下脚本里 % 的…

快速小巧的粘贴应用程序Hasty Paste

什么是 Hasty Paste? Hasty Paste 是一个快速粘贴文本并共享的地方&#xff0c;主要用于共享调试日志等&#xff0c;以帮助开发人员提供技术支持。该项目的目标是既快又小。 命令行安装 在群晖上以 Docker 方式安装。 官方的镜像没有发布在 docker hub&#xff0c;而是在 gh…

尚医通04:Axios Node Npm bable webpack+前端工程改造

目录 本日学习 内容介绍 Axios Node NPM包管理器 Babel 模块化 Webpack 搭建前端工程 前端框架介绍 前端开发过程介绍 登录改造成本地接口 本日学习 1. 了解Axios :他是异步请求用的&#xff0c;前后端。 用于在浏览器和 Node.js 中发送 HTTP 请求。它支持从服务器…

[桌面运维] 显示器 色准,色域,色深,分辨率,带宽,刷新率的基本概念,图像呈现的基本原理

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

华为数通智选交换机S5735S-L24T4S-QA2无法SSH远程访问

以前都是按照华为S5700交换机开启SSH远程访问方法配置不同网段通过静态路由实现互通,华为S5700交换机开启ssh远程登陆,现在新买的华为数通智选交换机S5735S-L24T4S-QA2,也是按照这步骤配置,令人不解的是,竟然无法ssh访问,仔细看了配置也没有发现问题,在华为eNSP模拟器上验…

初识mysql数据库之复合查询

目录 一、多表查询的概念 二、笛卡尔积 1. 笛卡尔积的概念 2. 笛卡尔积使用案例 2.1 显示雇员名、雇员工资以及所在部门的名字 2.2 显示部门号为10的部门名&#xff0c;员工名和工资 2.3 显示所有员工的姓名、工资和工资级别 3. 自连接 3.1 自连接的概念 3.2 自连接案…

微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明

微信小程序中的条件渲染和列表渲染 1. 条件渲染1.1. 语法格式 (wx:if, wx:elif ,wx:else)1.2. block标记1.3. hidden属性1.4. wx:if 与 hidden 的对比 2. 列表渲染2.1. wx:for 语法格式 及 wx:key的使用 1. 条件渲染 1.1. 语法格式 (wx:if, wx:elif ,wx:else) <view wx:if…