【Linux】初识网络

news2024/11/19 11:28:40

目录

背景

协议

什么是协议

协议分层

OSI七层模型

TCP/IP模型

网络协议栈与 OS 的关系

网络传输

局域网中直接通信

数据的封装与分用

局域网通信原理

数据碰撞

跨路由器进行远端通信

IP的介绍

传输演示


背景

🧊一开始,计算机都是一台台独立存在的,跨不同主机的业务处理都需要使用拷贝的方式进行,效率低下

🧊后来,人们将各个计算机连接起来,使用一台服务器对数据集中管理,每个人都能看到共享的数据,进而提升业务处理的速率。

🧊而随着计算机越来越多,人们便通过交换机和路由器进行连接,形成了一个局域网

🧊随着局域网数量越来越多,最终便形成了当下覆盖全球的广域网。

协议

什么是协议

🧊协议就是一种约定,就像方言一样,只有说话的双方都知道对应的意思,才能在对话中获取信息。

🧊同样,计算机之间的传输媒介是光信号和电信号,通过 频率 和 强弱 来表示 0 和 1 这样的信息,要想传递各种不同的信息, 就需要约定好双方的数据格式。

协议分层

🧊分层在软件设计中十分常见,具体体现为上层不关心下层的功能实现,只使用下层提供的功能运行

🧊就那我们打电话为例,我们平时打电话时都是直接认为是在跟对方直接通信的,实际上我们是通过电话提供给我们的接口,才使对方听到我们的声音。至于电话是如何一层一层传到对方耳中的这些过程,我们作为用户并不关心

🧊而任何一层出现问题并不影响其他层每层都只关注自己同层的功能只使用下层的接口

🧊因此整个系统中,无论上层换了一种语言协议,或是下层换了另一种工具通信,只要满足分层的条件便能够达成通信的结果。

🧊而使用这种分层的结构进行开发,本质上便是为了减少开发者后期的维护成本。

OSI七层模型

🧊接下来,我们便开始介绍网络对应使用的模型结构,OSI 七层模型又被称为开放式系统互联参考模型

🧊其为一种框架性的设计方法,最主要的功能使就是帮助不同类型的主机实现数据传输。

🧊它将网络从逻辑上分为了 7 层,自上到下分别为应用层表示层会话层传输层网络层数据链路层物理层。十分完备地展现了网络的结构,但由于其过于复杂,具体层的介绍我们放到 TCP/IP 模型中进行讲解。

TCP/IP模型

🧊TCP/IP 模型在 OSI 七层模型的基础上,将上三层合并成了一层应用层。

  • 物理层: 负责光/电信号的传递方式,就是物理层面的传输。
  • 数据链路层: 负责设备之间的数据帧的传送和识别,例如网卡设备的驱动。
  • 网络层: 负责地址管理和路由选择,例如使用IP地址来标识一台主机。
  • 传输层: 负责两台主机之间的数据传输,使用如 TCP 等传输协议时数据发送到目的主机。
  • 应用层: 负责应用程序间沟通,例如基于网络传输开发出的应用程序。

网络协议栈与 OS 的关系

🧊说了那么多的东西,那么这个协议栈在哪里?又与操作系统有什么关系呢?相信看了下面这张图,你便会有大致的了解。

🧊可以看到,整个协议栈与操作系统的整个生态高度重合,从某中程度上说,便于操作系统的文件系统类似,放在 Linux 中,我们一样能够使用一切皆文件的思想来看待网络。本质上一样是用户通过系统调用回调驱动的相应方法,最后硬件进行工作的流程。

🧊但值得注意的一点是,虽然操作系统的种类很多,但是网络(操作系统部分)只能有一种

网络传输

🧊两台主机在局域网中是可以直接通信的,就比如以前玩的单机小游戏,能够在局域网中检索,完成开房间的功能。

🧊而两台主机通信的本质实则为两个主机的 OS 与网络协议栈进行通信

局域网中直接通信

🧊由此可见,两个主机之间的通信都是从应用层出发,逐步向下发送到物理层,传输到了对应主机中再向上交付至应用层,最终使得目的主机收到了我们发送的信息。在这个过程中,每一层都认为是在与对面层直接进行通信

🧊而通信需要协议,因此每一层都要有自己的协议,其中协议的表现形式体现在协议报头上。

🧊平时我们拿快递的时候,除了商品本身还会有快递单和额外的包装,其中快递单的信息并非传达给用户的,而是给快递员看的。有了这张单子后,快递员才知道收货人的地址,才能够进行配送。因此,在物流体系中,快递单 + 商品才是物流的主体

🧊同理,在每一层协议中,都需要各自的协议报头有效载荷

数据的封装与分用

🧊当一条数据从应用层出发,我们首先为它加上应用层的报头,之后向下传递给传输层,同样将其加上传输层的报头,不断向下传递并加上报头...

🧊最终通过物理层的传输到达了目的主机,首先便是数据链路层拿到对应的报文,将该层的报头去掉后便向上交付。报文被逐步解析,最后对方的应用层便获得了本地传递过去的信息。

🧊经过上面的例子,我们便能够知道,自上而下的处理中每一层都会把上层交给自己的数据作为自己的有效载荷,报头 + 有效载荷就等于自己要发送的报文,这个过程便称为封装

🧊因为同层之间都能认识对方的报头,因此能做到:

  • 将报头和有效载荷分离。
  • 将有效载荷交付给上层。

🧊这两个功能便是协议的公共功能,任何协议都要有这两个基本功能。而基于二者,自下而上的处理便称为解包和分用。

局域网通信原理

🧊假设有一个房间,房间内的人都是位于局域网中的主机,当一个人在喊话时,便可认为他在向局域网中输出信息,每个人自然都会听到这个人说话的声音,但由于叫的不是自己,因此收到的报文还未向上交付时就被抛弃掉了,只有对应的那个人才会将报文交付至应用层并进行处理。

🧊任何人要进行通信,就需要有一个唯一标识符,而网卡出厂时,内部便写入了 sn 号,即 MAC 地址,该地址全球唯一。

数据碰撞

🧊若一个人不断在房间里说话或大吵大闹,便会影响其他人接收信息,由此便会发生数据碰撞

🧊因此,在局域网中,任何时刻都只允许一个人在向局域网中发送消息,以此来避免产生数据碰撞。

跨路由器进行远端通信

🧊首先我们需要了解一下,什么是路由器

🧊路由器虽然在模型中只占了三层,分别是物理层数据链路层网络层,但我们也可以认为路由器是一台主机。

🧊为了达到转发的功能,路由器至少要连接两个子网

🧊看到这里有的同学就要犯嘀咕了,上面不是刚说操作系统很多种,但是网络只有一种吗?这里怎么又是以太网又是令牌环的?

🧊这是因为数据链路层的标准不同,具体的实现在网卡之中,不同的厂商有不同的实现方式因此会有不同网络的出现,正因如此,我们在上面讲的是,操作系统部分的网络,TCP/IP 这两层的部分才是只有一种的。

IP的介绍

🧊当我们准备开始进行数据的传输时,便又遇到了一个问题,局域网中有那么多台主机,我们凭什么将对应的数据交给路由器呢

🧊我们使用 IP 来标识每一台跨网络的主机,通常我们使用的是 IPv4 的地址,实则为一个四字节的整数。每个字节间用 . 隔开,因此取值范围在 [0.0.0.0, 255.255.255.255] 之间。一般以字符串的形式出现,因此称为字符串风格的点分十进制方案的IP地址。

🧊接着使用结构体位段便能够将一个整形根据字节划分成四个部分的数。

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

🧊因此,我们这次传输信息在信息的基础上,还要增加一个IP地址表示这个信息要发给谁。

传输演示

🧊当报文封装到了网络层时,便会进行路由表的查询,借此便可以判断目的 IP (图中简称IPB)与自己是否处于同一个子网中,否则就将报文交付给路由器(默认路由)

🧊因此,在网络层封装的报头中就会包含我们报文想去的 IPB 这个地址,到了数据链路层,因为我们当前这个报文要先发送给路由器,因此数据链路层的报文则包含了路由器的 MAC 地址。

🧊发送到路由器后,路由器分离出数据链路层的报头,查询路由表后,找到我们目的 IP 的主机,再传递到数据链路层加上对应的报头。不过这次报头里包含的就是目的主机的 MAC 地址了。

🧊因为路由器同时连接两个子网,因此两个传输过程单拎一个出来看的话就是上面讲的局域网直接通信,同时 MAC 地址保证了局域网中只有目的的主机会接收到路由器发送的信息并向上交付,最后对方便得到了我们发送的信息。

IP与MAC的差别

在这个过程中,我们会看到网络层使用的地址为 IP 地址,而数据链路层使用的是 MAC 地址,那么这两个地址间有什么区别呢?

可以看到,在传输过程中,我们只使用了一个 IP 地址,至始至终都是指向目的主机的,而 MAC 地址则是根据路径选择的结果来选择下一跳的主机

因此使用 IP 地址便能够屏蔽底层子网的差异,转发时就会为报文加上对应子网的相应报头,因此当报文传递到路由器时还需要将报文向上交付至 IP 层,才能进一步决定下一步报文发送的方向。

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

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

相关文章

【Proteus仿真】【Arduino单片机】HC-SR04超声波测距

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、HC-SR04超声波传感器等。 主要功能: 系统运行后,LCD1602显示超声波检测距离。 二、软件设计 …

禁止chrome浏览器将HTTP协议强转成HTTPS

操作步骤 1.在浏览器中输入chrome://flags/ 2.在搜索框中输入upgrade,找到HTTPS Upgrades,将default改成disabled。 3.重启chrome浏览器即可生效。

QQ录制视频保存到哪了?位置一览,让你轻松找回

现如今,录制视频成为我们日常生活和工作的一部分。qq是中国最流行的社交媒体平台之一,许多用户使用qq录屏功能来记录重要时刻。但是,很多人不知道qq录制视频保存到哪了。本文将深入研究qq录制视频功能,以帮助您了解如何存储和管理…

关于跨域问题的个人理解

我也工作蛮多年了,期间既做过前端也做过后端。对于跨域问题,究竟是由前端程序员还是后端程序员来解决,我在不同的时期有不同的理解。现在,我更倾向于认为跨域问题应该由前端程序员来解决,即使在解决跨域问题的过程中涉…

流量分析(5.5信息安全铁人三项赛数据赛题解)

黑客通过外部的web服务器攻击到企业内部的系统中,并留下了web后门,通过外部服务器对内部进行了攻击。 目录 黑客攻击的第一个受害主机的网卡IP地址 黑客对URL的哪一个参数实施了SQL注入 第一个受害主机网站数据库的表前缀(加上下划线 例如abc_) 第一…

Linux中at命令添加一次性任务

1、工作原理 功能:在某个时间点,执行一次命令。 特点:任务是用户隔离的。 条件:必须要保证atd进程存在。 ps -ef |grep atd 原理:atd进程循环遍历队列里的任务,有则按顺序执行任务,没有&#x…

2023湖南省赛

​​​​​​连接 目录 A:开开心心233 B:Square Game C:室温超导 F:necklace J:radius K:tourist 补题中,会给出大部分代码 A:开开心心233 签到题 ,无论二分还是解方程还是直接for循环枚举都能直接通过啦 signed main() {ios_base::sync_with_s…

计算机毕业设计项目选题推荐(免费领源码)PHP+MySQL在线网络教育平台66984

目 录 摘要 1 绪论 1.1 课题背景 1.2意义 1.3HTML介绍 1.4JavaScript 运行模式 1.5css3工作原理 1.6论文结构与章节安排 2 在线网络教育平台分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 3 2.2.2数据修改流程 4 2.2.3数据删除流程 4 2.3 系统功能分析 …

提升代码复用性:探讨Mixin类在面向对象语言中的独特作用和优势

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、m…

如何在Ubuntu 23.10部署KVM并创建虚拟机?

正文共:1114 字 21 图,预估阅读时间:2 分钟 我们之前对OpenStack醉过一次简单介绍(什么是OpenStack?),OpenStack本身是一个云管理平台,它本身并不提供虚拟化功能,而是依赖…

一起学docker系列之二深入理解Docker:基本概念、工作原理与架构

目录 前言1 Docker的基本概念2 Docker的基本组成3 docker工作原理4 docker架构5 Docker详细工作过程结语 前言 在当今的软件开发和部署中,Docker已经成为一种不可或缺的工具。它简化了应用程序的打包、交付和运行,同时提供了强大的隔离性和可移植性。本…

手把手教你实现贪吃蛇

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:实现贪吃蛇 > 毒鸡汤:时间并不可真…

SM5212 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器

SM5212 双向防反接功能 1.2A 锂电池线性充电芯片 概述: SM5212 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器,并带有锂电池正负极反接保护和 VIN 正负反接保护功能,可以保护芯片和用户安全。 由于采用了内部 PMOSFET 架构&am…

【SpringBoot3+Vue3】二【实战篇】-后端

目录 一、环境搭建 1、数据库脚本 2、pom 3、yml 4、通过mybatis-X生成实体pojo等 4.1 Article 4.2 Category 4.3 User 5、 Mapper 5.1 ArticleMapper 5.2 CategoryMapper 5.3 UserMapper 6、service 6.1 ArticleService 6.2 CategoryService 6.3 UserService …

V10chrony服务配置

Chrony简介 Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。 Ch…

Windows使用ssh远程连接(虚拟机)Linux(Ubuntu)的方法

步骤 1.Windows下载一个SSH客户端软件 要使用SSH连接,当然得先有一个好用的客户端软件才方便。 我这里使用的是WindTerm,一个开源免费的SSH连接工具,用什么软件不是重点。 这里默认你已经生成过SSH的密钥了,如果没有&#xff0c…

一篇综述读懂m6A甲基化+分型+免疫浸润+机器学习。快来get

今天给同学们分享一篇生信文章“Comprehensive characterization of tumor microenvironment and m6A RNA methylation regulators and its effects on PD-L1 and immune infiltrates in cervical cancer”,这篇文章发表在Front Immunol期刊上,影响因子为…

打开Outlook报错修复

打开Outlook报错修复 故障现象 打开outlook提示,outlook.exe --系统错误 故障截图 故障原因 原因是软连接指向错误重建即可。 解决方案 下载并运行下面批处理解决 del /F /Q "C:\Program Files\Microsoft Office\root\Office16\AppvIsvStream64.dll"…

微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码

微服务基础 系统架构的演变 随着会联网的发展,网站应用的规模不断扩大,常规的应用架构已经无法应对,分布式服务架构以及微服务架构势在必行,必须一个治理系统确保架构有条不紊的演进 单体应用框架 Web应用程序发展的早期&…

前后端设置跨域问题

前端 const {defineConfig} require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: { //记住,别写错了devServer//设置本地默认端口 选填port: 8080,proxy: { //设置代理,必…