【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. 理解网络传输的本质。

尾序

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

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

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

相关文章

js基础(2)

对象 object也是js的一种数据类型 其静态特征可以用基本数据类型表示 动态行为可以用函数表示 语法: 增删改查 查:对象.属性 改: 对象.属性值 增:对象.新属性名新值 删:delete 对象.属性名 查的另一种写法: 对…

2024.2.3 作业

1、实现单向循环链表的头插头删尾插尾删 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef int datatype; typedef struct node {//数据域int data;//指针域struct node *next; }*Linklist; Linklist create() {Linklist s(Linklist)mallo…

windows配置开机自启动软件或脚本

文章目录 windows配置开机自启动软件或脚本配置自启动目录开机运行的脚本调试开机自启动脚本配置守护进程(包装成自启动服务)使用任务计划程序FAQ 开机自动运行脚本示例 windows配置开机自启动软件或脚本 配置自启动目录 在Windows中添加开机自动运行的软件&#xff0c;可以按…

使用R语言建立回归模型并分割训练集和测试集

通过简单的回归实例&#xff0c;可以说明数据分割为训练集和测试集的必要性。以下先建立示例数据: set.seed(123) #设置随机种子 x <- rnorm(100, 2, 1) # 生成100个正态分布的随机数&#xff0c;均值为2&#xff0c;标准差为1 y exp(x) rnorm(5, 0, 2) # 生成一个新的变…

SQLyog安装配置(注册码)连接MySQL

下载资源 博主给你打包好了安装包&#xff0c;在网盘里&#xff0c;只有几Mb&#xff0c;防止你下载到钓鱼软件 快说谢谢博主&#xff08;然后心甘情愿的点个赞~&#x1f60a;&#xff09; SQLyog.zip 安装流程 ①下载好压缩包后并解压 ②打开文件夹&#xff0c;双击安装包 ③…

docker常用容器命令

首先说下容器&#xff1a; 它是指当docker运行镜像时&#xff0c;创建了一个隔离环境&#xff0c;称之为 容器。 这种方式优点&#xff1a;可以开启多个服务&#xff0c;服务之前是互相隔离的&#xff08;比如&#xff1a;在一台服务器上可以开启多个mysql&#xff0c;可以是…

【AI之路】使用RWKV-Runner启动大模型,彻底实现大模型自由

文章目录 前言一、RWKV-Runner是什么&#xff1f;RWKV-Runner是一个大语言模型的启动平台RWKV-Runner官方功能介绍 二、使用步骤1. 下载文件 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; ChatGPT的横空出世&#xff0c;打开了AI的大门&#xff…

【通讯录案例-保存开关状态 Objective-C语言】

一、接下来,我们要实现一个什么功能呢,在这个,我们的“通讯录”里边儿, 1.我们有两个开关,“记住密码”、“自动登录”、两个开关, 如果我们点击“记住密码”, 如果我们点击“记住密码”,然后呢,我把这个程序关了,我下一次再打开这个程序的时候,这个用户名和密码,…

Verilog刷题笔记30

题目&#xff1a; You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out. 解题&#xff1a; module top_module( input [399:0] a, b,input cin,output cout,output [399:0] sum );reg [99…

HTTP基本概念-HTTP 是什么?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 是什么? HTTP 是超文本传输协议&#xff0c;也就是HyperText Transfer Protocol。 能否详细解释「超文本传输协议」? HTTP 的名字「超文本协议传输」&#xff0c;它可以拆成三个部分: 超文本传输…

ruoyi-nbcio中xxl-job的安装与使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…

【python】Fraction类详解及生成分数四则运算“试卷”

文章目录 一、前言实验所需的库终端指令Fraction类1. Fraction(numerator, denominator)&#xff1a;2. Fraction(numerator)3. Fraction()4. 分数作参数5. 负分数作参数6. 字符串作参数7. 小数作参数8. 科学计数法9. 浮点数作参数10. 浮点数精度问题11. Decimal对象作参数 二、…

力扣刷题之旅:高阶篇(三)—— 图算法的挑战

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 引言 在算法世界的深处&#xff0c;图算法犹如一座高峰&#xff…

基于大语言模型的AI Agents

代理&#xff08;Agent&#xff09;指能自主感知环境并采取行动实现目标的智能体。基于大语言模型&#xff08;LLM&#xff09;的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等&#xff0c;把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢&a…

Halcon 频域缺陷检测

文章目录 傅里叶变换频谱矩形圆菱形黑白相间的亮带去除图纹&#xff08;反傅里叶变换&#xff09;去除图纹滤波器处理 Halcon 频域空间域检测缺陷Halcon 频域差分空间域 缺陷检测&#xff08;lines_gauss 提取线&#xff09;Halcon 频域差分空间域&#xff08;blob特征&#xf…

C++实现二分查找

目录 例1 例2 例3 例4 例5 例6 例1 704. 二分查找 注意&#xff1a; ①left < right,这里的号是最后一次通过下标mid来判断 ②在偶数的时候mid&#xff0c;左右无所谓&#xff0c;因为left和right都有1&#xff1b; 参考代码 class Solution { public:int search…

【selenium】

selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的。Selenium可以直接调用浏览器&#xff0c;它支持所有主流的浏览器。其本质是通过驱动浏览器&#xff0c;完成模拟浏览器操作&#xff0c;比如挑战&#xff0c;输入&#xff0c;点击等。 下载与打…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示

对上一篇的工作C学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化&#xff0c;增加一个显示运动员每组成绩的折线图。 1&#xff09;在Qt Creator的项目文件&#xff08;.pro文件&#xff09;中添加对Qt Charts模块的支持&#xff1a; QT charts 2&#xf…

用HTML5 + JavaScript绘制花、树

用HTML5 JavaScript绘制花、树 <canvas>是一个可以使用脚本 (通常为JavaScript) 来绘制图形的 HTML 元素。 <canvas> 标签/元素只是图形容器&#xff0c;必须使用脚本来绘制图形。 HTML5 canvas 图形标签基础https://blog.csdn.net/cnds123/article/details/112…

opencv 图像色彩空间转化

今天看了b站贾志刚的课&#xff0c;觉得不错&#xff0c;特地做学习笔记来和小伙伴分享 贾志刚的这个好像是2.0版本,30小时的,语言更加精炼,适合初级入门学习 第一节是常规安装 看他的步骤装就行了,记得配置完点应用再点确定,我第一次就是 没点然后就失败了,又得重配置一次…