【Linux进阶之路】网络——“?“(上)

文章目录

  • 一、历史发展
    • 1. 独立形态
    • 2. 互联形态
    • 3. 局域网
  • 二、网络协议
    • 1.OSI七层协议
    • 2.TCP/IP四(五)层模型
  • 三、网络通信
    • 1.封装与解包
    • 2.数据的传输
      • 1.局域网
      • 2.广域网
  • 总结
  • 尾序

  • 本篇文章的目的是带大家初步认识网络,为后面的网络编程打下基础,

一、历史发展

1. 独立形态

在这里插入图片描述

  • 说明:数据的传递人来完成,效率是较低的,且中间可能会出现错误。

2. 互联形态

在这里插入图片描述

  • 说明:数据的传输由人变为了机器,更加的高效。
  • 拓展:
  1. 服务器的存储、计算和服务支持,为客户端设备提供各种网络相关的服务和资源。
    在这里插入图片描述
  2. 光纤:光电信号的传输介质,广泛的用于长距离(百公里)、高速(最大100Gbps)、抗干扰和安全性要求高的场合。
    在这里插入图片描述
  3. 网线: 电信号的传输介质,适用于需要长距离传输(百米内)、高速传输(最大40Gbps)、安全性要求高以及网络负载大的场合。成本综合来看比光纤较低。
    在这里插入图片描述
    这是双绞线属于网线的一种。

3. 局域网

随着设备的增多,使用路由器与交换机来保证网络连接的稳定与高效。
在这里插入图片描述

说明:

  1. 交换机:主要用于在局域网内转发数据包和避免数据包的碰撞,提高网络的安全和稳定。
    在这里插入图片描述
  2. 路由器:主要功能是连接不同的网络,并提供数据包转发等功能,使得计算机可以通过路由器实现跨网络的通信和互联网访问。
    在这里插入图片描述
  3. 集线器:一种传统的网络设备,主要功能是将多台计算机或网络设备连接在一起形成局域网,还有信号放大的功能。与交换机相比,集线器的性能较低,无法提供交换机那样的灵活性、安全性和高效性能。因此,在现代网络环境中,交换机已经取代了集线器成为更常见的局域网连接设备。
    在这里插入图片描述
  • 广域网,简而言之就是由多个局域网组成的。

在这里插入图片描述

二、网络协议

  • 简而言之,协议其实就是一种" 约定 "。
  • 举个例子:再回学校前,父亲叮嘱你隔一段时间就要给他打电话报一次平安,而你又想省一笔电话费,于是就跟父亲说,我打电话的时候知道是我就先不用接,听电话响几声即可,我们之间定一个规定,电话响一声就挂了意思是放心好了,我没事。电话响两声就挂了的意思是我缺生活费了,赶紧打钱。响三声以及以上就接电话,这是其它事,可以接电话了。因为一般不会有响三声及以上的情况,所以能省一笔电话费。
  • 说明:在抗战期间发电报,以及摩斯密码其实本质上也是一种约定。

 回过头来看,网络传输其实就是光电信号的传输,其实跟发电报一个样,计算机之间需要定一个"约定",需要知道如何将传来的光电信号转换为数字信号,然后再呈现给用户,或者将数字信号转化为光电信号发送给另一个用户。

涉及三点:

  1. 网络完成传输数据。
  2. 传输的数据的接受。
  3. 待发送数据的处理。
  • 说明:协议完成就是后两点。

1.OSI七层协议

  • 纯理论的协议,是协议指定规范,但在实际的协议进行制定中反而过于复杂。
  • 从下到上:
  1. 物理层:例如网卡只负责将数字信号和电信号之间的转换。(数据单位为比特)
  2. 数据链路层:例如交换机负责互联设备之间传送和识别数据帧(特指这一层的数据单位)
  3. 网络层:例如路由器负责地址管理和路由选择,将数据准确的发送到目的地。数据单位为数据报
  4. 传输层:例如通信协议,也就是"约定",负责检测数据是否可靠,通常被嵌入到操作系统中。数据单位为报文段
  5. 会话层:例如会话层协议,负责建立和维护应用程序之间的会话连接,以实现数据传输的可靠性和完整性。数据单位为数据包
  6. 表示层:例如数据转换器,负责将固有形式的信号(比如文本,声音,视频)转换为网络标准数据格式。数据单位为数据单元
  7. 应用层:例如HTTP等协议,负责支持不同应用之间的网络服务。每个协议都有特定的功能和用途,以满足特定的通信需求。数据单位为消息,请求,响应等。

图解:
在这里插入图片描述

  • 其实这七层协议是贯穿于整个操作系统的,我们可以画一张图来表示之间的关系。

在这里插入图片描述

2.TCP/IP四(五)层模型

  1. 物理层: 负责光/电信号的传递方式。
  2. 数据链路层: 负责设备之间的数据帧的传送和识别。
  3. 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。
  4. 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  5. 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
  • 说明:
  1. 四层协议是将物理层和数据链路层合并为链路层。
  2. 应用层包含OSI七层协议的应用层,表示层,会话层。
  3. 因为传输层的TCP协议和网络层的IP协议较为重要因此名字叫做TCP/IP协议,实际上是一系列协议的统称。

图解:
在这里插入图片描述

  • 说明:从上到下叫数据的封装,从下到上叫数据的解包。网络通信的本质就是不断的封装和解包的过程。
  • 拓展:在进行向上解包的过程中,目标层可能不止一种协议,因此计算机还要能够正确的识别报文的协议,从而正确的分发数据。

三、网络通信

1.封装与解包

  •  有了上面的铺垫,我们可以先开始数据的封装和解包的具体流程,数据的传输我们放下文讲解。

图解:
在这里插入图片描述

  • 说明:
  1. 报头:通常位于数据的开头部分,用于描述和控制数据的传输以及提供必要的信息。
  2. 有效载荷:指的是报文除了报头的部分,是用户数据核心的一部分。
  3. 报文 = 报头 + 有效载荷。
  • 每一层都得必须有把报头与有效载荷封装与分离的能力,只有这样才能将这一层有用的数据封装/解析出来,而且通常是通过报头的长度,即数据的字节数

概念铺垫:

  1. 端口号:位于应用层,指的是用于标记进程或者服务的逻辑地址。既然是地址那么一个可执行程序或者服务一般只能拥有一个端口号。
  2. IP地址:
  1. 位于网络层。
  2. 通常分为内网IP和公网IP,分别对应的是局域网和广域网,即内网一般是在私有网络或局域网通信使用,公网IP指的是在全球范围的网络中进行使用。
  3. 会随着位置的变化而变化。
  4. 表示形式一般有两种。
  1. IPv4地址,由四个十进制数字组成,每个数字的取值范围为0到255,以点分隔。例如,192.168.0.1是一个IPv4地址。大小为4个字节。
  2. IPv6地址,由八组四位十六进制数(共32位)组成,每组之间使用冒号分隔。IPv6地址的长度更长,提供了更大的地址空间,以满足互联网上设备的增长需求。大小为32个字节。
  1. MAC地址: 位于数据链路层,是一个由48位二进制数组成的物理地址,通常以十六进制表示,并被用于在局域网内唯一标识网络设备不会随着位置的变化而变化。可以用于准确的定位设备
  2. 使用ifconfig 指令可查看内网地址与以太网的地址:
    在这里插入图片描述

那么在网络层与数据链路层数据的封装的大致过程即为:

  1. 将源IP地址和目的IP地址等信息作为报头封装起来。
  2. 将当前设备的Mac地址等信息作为报头封装起来。

2.数据的传输

1.局域网

  • 引入:
  • 假设我们在教室里面上课,大概有几十个学生,一个老师讲课。
  • 这个班每个学生的名字唯一。
  • 这时老师要对一名叫张三的学生进行提问,于是在讲台上说:“张三,请你站起来回答一个问题”。
  • 于是这名张三的学生就站起来了……

把老师看做局域网内的一台A主机,张三看做一台B主机,剩余的几十名学生也看做其它主机。

  1. 我们可以明显的看出是老师对张三发消息,即A主机向B主机发送消息。
  2. 其它学生听到了消息的内容,但是不对消息进行处理,因为不是张三,所以没有站起来。即其它主机在不是本主机的数据传输中,有获取信息的能力,但是不对信息进行处理和反应,选择了沉默。

图解:
在这里插入图片描述

  • 简而言之,向网络中发一条消息和老师在课堂上点一位同学的名的本质其实是相同的,只不过一个是向网络里发,一个是向空气里面发,一份数据都能够各个主机(同学)被"听到",对应的主机会对发来的数据进行接受和处理。

  1. 那么如果老师在课堂上点张三名的同时,其它人也在说话,这时可能会导致张三听不到,可能就得需要老师反复的给张三发消息,也可以让全班人闭嘴,然后再发消息。
  2. 在网络里面这叫做数据之间发生了碰撞,如果对面没收到可以重复再发,或者没有设备在网络里面发送信息时再发,从而避免大部分的碰撞。与此也产生了相应的碰撞避免算法,有兴趣可以了解一下。
  • 拓展:在网络中如果局域网过大,则发生数据碰撞的可能性也就越大,可采取使用交换机的方式将局域网进行分割(原理),进而降低局域网之间发生数据碰撞的可能性。而且交换机也可以完成定向传输的功能。

2.广域网

  • 所谓广域网,其实就是由多种局域网组成的大型互联网,这个局域网可能是无线网(WIFI),以太网,令牌环网等网络的联合,那么我们是如何将不同的局域网联合呢?

  • 答案很简单,使用路由器,将不同数据在不同网络里面进行转发。但是如何转发确保能够发送到目标主机呢?下面我们娓娓道来。

  • 科普小知识:以太网,其中的以太曾被认为是光传播的介质,但实际被证明并不存在,只是科学家假想的一种物质。而Robert Metcalfe即罗伯特·梅特卡夫,以太网的发明者,比较喜欢希腊神话,觉得其中的以太是一种神秘的物质,并且查阅了大量的资料,于是便觉得这符合他的观点,便将发明的网络取名为以太网。

假设要从郑州到云南进行旅游,交通工具使用高铁,采用走一路玩一路的形式进行旅游。

  1. 我们可以先到陕西去看一看兵马俑,然后再考虑往哪一个省份游玩。
  2. 然后我们可以去临近的四川吃一顿火锅,也可以到湖北去看一看黄鹤楼,因为迫切想要去云南,此时我们选择靠近云南的四川。
  3. 吃完火锅之后,我们直奔云南昆明去度假,看看美景,吃一吃美食,顺便静一下心。

在这里插入图片描述

走进网络:

  1. 首先数据在进行传输的过程前,肯定得知道自己的出发地点和目的地点是哪,即网络层封装进报头的源IP信息和目的IP。也就是从郑州到云南。
  2. 其次在数据传输过程中,得知道自己当前的位置在哪和下一次该去哪。比如我们到了陕西看兵马俑,就得知道往云南可以走四川然后直接到,也可以湖北再转一下再到。其中的路径规划和选择交由路由器,所谓的路径规划其实就是根据网络层的目的IP,在数据链路层进行完成Mac地址的解包和选择新Mac地址封装的过程。
  3. 最终,数据经过路由器不断转发,到源IP所在的局域网,将数据发送到目标主机进行接收。
  • 总结大致图解:
    在这里插入图片描述
  • 最后,网络的本质其实是在传输数据,而计算机实际上是处理发来的数据,然后再呈现给上层的应用程序,于是就有了各种各样的APP,而一个一个的运行的应用程序不就是操作系统的进程么,那么所谓的网络之间的通信,其实就是进程之间在进行通信。

总结

  1. 认识网络发展的三种基本形态。
  2. 认识网络协议的基本原理与相关概念。
  3. 认识网络传输的基本流程。
  4. 理解网络传输的本质。

尾序

我是舜华,期待与你的下一次相遇!

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

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

相关文章

原神4.0.1单机版【开局满级】纯单机,无限原石材料

版本介绍 版本4.0.1稳定版【过分追新并不稳,合理才完美】 独家原神,游戏内自带剧情任务,完美仿官,一比一完美复制! 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 修改注意 如果要进行不…

Swift Combine 有序的异步操作 从入门到精通十二

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

C++:类的继承和派生

2.1继承 继承是面向对象的主要特征(此外还要封装和多态)之一,它使得一个类从现有类中派生,而不必重新定义一个新类。继承的实质就是用已有的数据类型创建新的数据类型,并保存已有数据类型的特点,以旧类为基…

Python爬虫之Ajax数据爬取基本原理

前言 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档,而浏览器中…

编译安装mysql指定版本 shell脚本

要使用Shell脚本编译安装指定版本的MySQL,你需要下载源代码并按照官方文档的指引进行编译和安装。以下是一个简化的示例,用于下载、解压、编译和安装指定版本的MySQL: #!/bin/bash yum install -y wget cmake gcc yum install -y bzip2 bzi…

春节过半,预定的计划还没有开始

春节前就立下雄心勃勃的计划,想利春节假期开始搭一个人脸通WEB管理软件。但眼看春节过半,自己还没有开始动手呦。哎,突然紧张起来了。初二初三身体都不太舒服,不知道是怎么回事就感冒了,今晚更是高烧39.5,感…

【后端高频面试题--Linux篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Linux篇 Windows和Linux的区别?Unix和Linux有什么区别&#xff1f…

2024春晚纸牌魔术原理----环形链表的约瑟夫问题

一.题目及剖析 https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a?tabnote 这道题涉及到数学原理,有一般公式,但我们先不用公式,看看如何用链表模拟出这一过程 二.思路引入 思路很简单,就试创建一个单向循环链表,然后模拟报数,删去对应的节点 三.代码引…

备战蓝桥杯---动态规划(入门1)

先补充一下背包问题: 于是,我们把每一组当成一个物品,f[k][v]表示前k组花费v的最大值。 转移方程还是max(f[k-1][v],f[k-1][v-c[i]]w[i]) 伪代码(注意循环顺序): for 所有组: for vmax.....0…

python使用 sqlalchemy连接数据库帮助类

import mysql.connectorclass MySqlHelper(object):"""操作数据库帮助类"""def __init__(self):#self.host "localhost"#self.user "root"#self.password "xinshiyun123"#self.database "deliverunion_c…

GPT4:你是故意的吧!

请问下面选项中哪个是中文? A.Chinese B.英文 这是一个关于语言识别的问题。我们需要分析并确定所给选项中哪个表示中文。 对于选项A.Chinese:这个词本身表示“中文”或“中国的”。在多种语境中,它经常被用来指代中国的语言,即中…

VTK 三维场景的基本要素(相机) vtkCamera 相机的运动

相机的运动 当物体在处于静止位置时,相机可以在物体周围移动,摄取不同角度的图像 移动 移动分为相机的移动,和相机焦点的移动;移动改变了相机相对焦点的位置,离焦点更近或者更远;这样就会改变被渲染的物体…

C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码

本文发布矩阵(Matrix)的一些初级算法。 一、矩阵的行列式(Determinant) 矩阵行列式是指矩阵的全部元素构成的行列式,设A(a)是数域P上的一个n阶矩阵,则所有A(a)中的元素组成的行列式称为矩阵A的行列式&…

【开源】SpringBoot框架开发数字化社区网格管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5.1 查询企事业单位5.2 查询流动人口5.3 查询精准扶贫5.4 查询案件5.5 查询人口 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数字化社区网格管理系统&#xf…

蓝桥杯——第 5 场 小白入门赛(c++详解!!!)

文章目录 1 十二生肖基本思路: 2 欢迎参加福建省大学生程序设计竞赛基本思路:代码: 3 匹配二元组的数量基本思路:代码: 4 元素交换基本思路:代码: 5 下棋的贝贝基本思路:代码: 6 方程…

【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、Cons…

【蓝桥杯】灭鼠先锋

一.题目描述 二.解题思路 博弈论&#xff1a; 只能转移到必胜态的&#xff0c;均为必败态。 可以转移到必败态的&#xff0c;均为必胜肽。 最优的策略是&#xff0c;下一步一定是必败态。 #include<iostream> #include<map> using namespace std;map<string,bo…

ChatGPT高效提问—prompt实践(生成VBA)

ChatGPT高效提问—prompt实践&#xff08;生成VBA&#xff09; 2. 生成VBA函数操作Excel ​ 当前Excel表格数据无背景颜色&#xff0c;区分不明显。假如我们想美化数据展示效果&#xff0c;把标题行设置为浅蓝色&#xff0c;其余奇数行设置为橙色&#xff0c;该怎么操作呢&am…

【项目日记(九)】项目整体测试,优化以及缺陷分析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

Tied Block Convolution: 具有共享较薄滤波器的更简洁、更出色的CNN

摘要 https://arxiv.org/pdf/2009.12021.pdf 卷积是卷积神经网络&#xff08;CNN&#xff09;的主要构建块。我们观察到&#xff0c;随着通道数的增加&#xff0c;优化后的CNN通常具有高度相关的滤波器&#xff0c;这降低了特征表示的表达力。我们提出了Tied Block Convolutio…