当前位置: 首页 > news >正文

【Linux】网络基础(一)

文章目录

  • 一、计算机网络背景
    • 1. 网络发展
    • 2. 认识“协议”
  • 二、网络协议初识
    • 1. 协议分层
    • 2. OSI七层模型
    • 3. TCP/IP五层(或四层)模型
  • 三、网络传输基本流程
    • 1. 同局域网的两台主机通信
      • 数据包封装和分用
        • 封装
        • 分用
    • 2. 跨网络的两台主机通信
  • 四、网络中的地址管理
    • 1. 认识IP地址
    • 2. 认识MAC地址

网络基础:

  • 了解网络发展背景, 对局域网/广域网的概念有基本认识;
  • 了解网络协议的意义, 重点理解TCP/IP五层结构模型;
  • 学习网络传输的基本流程, 理解封装和分用;

一、计算机网络背景

1. 网络发展

独立模式:计算机之间相互独立

请添加图片描述

在早期的时候,计算机之间是相互独立的,此时如果多个计算机要协同完成某种业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应的业务处理,效率非常低下。


网络互联:多台计算机连接在一起,完成数据共享

请添加图片描述

这时就有人设法将这些计算机连接在一起,当某个业务需要多台计算机协同完成时,就可以将共享的数据放到服务器中进行集中管理,此时各个计算机就都能获取到这些共享的数据,所以各个业务在处理就能随时进行切换了。


局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起

后来这样的网络雏形逐渐发展,连入这个网络中的机器变得越来越多,于是就出现了局域网的概念。

在局域网中有一种设备叫做交换机,交换机主要完成局域网内数据的转发工作,也就是在局域网内将数据从一台主机转发给另一台主机。各个局域网之间通过路由器连接起来,路由器主要完成数据的路由转发工作。

请添加图片描述


广域网WAN:将远隔千里的计算机都连在一起

各个局域网之间通过路由器相互连接在一起,便组成了一个更大的网络结构,我们将其称之为广域网。实际局域网和广域网是一种相对的概念,我们也可以将广域网看作一个比较大的局域网。

请添加图片描述


2. 认识“协议”

因为通信距离边长了,所以存在以下问题需要解决:

  1. 丢包了怎么办
  2. 目标机器的定位问题
  3. 如何把我们的报文,在经历了无数个设备之后,还能把数据推送给远端机器
    所以需要协议

二、网络协议初识

1. 协议分层

网络协议栈设计成层状结构,其目的就是为了将层与层之间进行解耦,保证代码的可维护性和可扩展性。

比如在打电话的时候,站在工程师的角度实际这两个人并不是直接进行沟通的,而是甲的电话将甲说的话记录下来,经过一系列编码转码后,通过通信网络将信息从甲的电话传递到了乙的电话,然后信息在乙的电话中再经过对应的编码转码,最后乙才通过话筒听到了甲所说的话。

其中,人与人之间通信使用的是汉语,我们可以将其称为语言层;而电话和电话之间通信使用的是电话系统相关的一些接口,我们可以将其称之为通信设备层。

  • 在这个例子中, 我们的协议只有两层
  • 但是实际的网络通信会更加复杂, 需要分更多的层次.
  • 分层最大的好处在于 “封装” ,在分层情况下,将某层的协议进行替换后,通信双方之间是不会受到影响的请添加图片描述

从上述例子我们还可以看出,虽然在打电话时我们并不是直接进行沟通的,但是我们可以认为我们是在直接进行沟通,并且这两台电话也不是直接在进行沟通的,数据经过电话后,还需要各种基站,各种电信网络来进行数据转发,但是这两台电话依旧可以认为是直接在和对方电话进行通信的。

因此对于网络协议我们需要有一个基本的认识:关于通信,同层协议可以认为自己在和对方层直接进行通信,从而达到简化对于网络协议栈的理解。
请添加图片描述

也就是说,在网络协议栈中我们可以认为通信双方的应用层之间直接在进行通信,也可以认为通信双方的传输层之间直接在进行通信,对于网络层和数据链路层也同样如此。

2. OSI七层模型

上面我们说的是TCP/IP四层协议,而实际当初那个站出来的人定的协议叫做OSI七层协议:

  • OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。“开放”是指非独家垄断的,“系统”是指
  • OSI把网络从逻辑上分为了七层,每一层都有相关的、相对应的物理设备,比如路由器,交换机。
  • OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输,比如手机和电视之间数据的传输。
  • OSI七层模型最大的优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  • 但是,OSI七层模型既复杂又不实用,所以后来在具体实现的时候就对其进行了调整,于是就有了我们现在看到的TCP/IP四层协议。

请添加图片描述

OSI七层模型如下:

分层名称功能每层功能概览
7应用层针对特定应用之间的协议请添加图片描述
6表示层设备固有数据格式和网络标准数据格式的转换请添加图片描述
5会话层通信管理、负责建立和断开通信连接(数据流动的逻辑通路)、管理传输层以下的分层请添加图片描述
4传输层管理两个节点之间的数据传输、负责可靠性传输(确保数据被可靠地传送到目标地址)请添加图片描述
3网络层地址管理与路由选择请添加图片描述
2数据链路层互联设备之间传送和识别数据帧请添加图片描述
1物理层以0/1代表电压的高低以及灯光的闪灭、界定连接器和网线的规格请添加图片描述

3. TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,共同组成了TCP/IP协议簇。
TCP/IP通讯协议采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求:

  • 物理层: 负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,现在的WiFi无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)就是工作在物理层的。
  • 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。数据链路层底层的网络通信标准有很多,如以太网、令牌环网、无线LAN等。交换机(Switch)就是工作在数据链路层的。
  • 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间数据传输的线路(路由)。路由器(Router)就是工作在网络层的。
  • 传输层: 负责两台主机之间的数据传输。例如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 应用层: 负责应用程序间沟通。比如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层的。

请添加图片描述

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型。

一般而言:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容。
  • 对于一台路由器,它实现了从网络层到物理层的内容。
  • 对于一台交换机,它实现了从数据链路层到物理层的内容。
  • 对于集线器,它只实现了物理层的内容。

但这并不是绝对的,比如很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。

三、网络传输基本流程

1. 同局域网的两台主机通信

同局域网下的两台计算机通过TCP/IP协议通讯的过程如下:

  1. 应用层:通信的起点通常是在应用层。在这一层,用户程序(如浏览器、电子邮件客户端等)会生成需要传输的数据,并将其传递给下一层。

  2. 传输层:在传输层,数据被封装成传输层协议的数据包,例如TCP或UDP数据包。TCP提供可靠的、面向连接的通信服务,而UDP则提供不可靠的、无连接的通信服务。封装完成后,数据包被传递给网络层。

  3. 网络层:在网络层,数据包被封装成IP数据包。IP数据包包含了源主机和目标主机的IP地址,以及用于路由选择的其他信息。网络层还负责处理路由选择和分组转发。

  4. 数据链路层:数据链路层将IP数据包封装成数据帧,并添加物理地址(如MAC地址)和其他控制信息。然后,数据帧被传递给物理层。

  5. 物理层:物理层负责将数据帧转换为电信号或光信号,以便在物理介质(如网线或光纤)上传输。

当信号到达目标主机时,整个过程会在目标主机上以相反的顺序进行,从物理层开始,逐层向上,直到应用层。每一层都负责去除其添加的头部信息,并将数据传递给上一层,最终将数据交付给目标应用程序。

请添加图片描述

数据包封装和分用

封装

关于封装:

  • 不同协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

下图为数据封装的过程:请添加图片描述

封装的本质是数据从应用层到物理层逐层添加头部和尾部信息的过程:

  • 应用层:数据从应用层生成,可能是文本、图片、视频等。
  • 传输层:在传输层,数据被封装成TCP或UDP数据包,并添加源端口和目标端口信息。
  • 网络层:在网络层,数据被封装成IP数据包,并添加源IP地址和目标IP地址。
  • 数据链路层:在数据链路层,数据被封装成数据帧,并添加源MAC地址和目标MAC地址。
  • 物理层:物理层将数据帧转换为适合在物理介质上传输的信号。
分用

下图为数据分用的过程:
请添加图片描述

分用的本质是数据从物理层到应用层逐层去除头部和尾部信息,并将数据传递给上一层的过程:

  • 物理层:物理层接收到信号后,将其转换为数据帧。
  • 数据链路层:数据链路层去除数据帧的头部和尾部,将数据传递给网络层。
  • 网络层:网络层去除IP数据包的头部,将数据传递给传输层。
  • 传输层:传输层去除TCP或UDP数据包的头部,将数据传递给应用层。
  • 应用层:应用层最终接收到数据,并进行相应的处理。

通过封装和分用过程,两台主机能够确保数据在复杂的网络环境中准确、可靠地传输。每一层都负责处理其特定的任务,从而实现了网络通信的层次化和模块化。

[!Important] 封装的时候,一定要考虑后面解包的过程:

  1. 如何将报文中,报头和有效载荷进行分离 - 约定
  2. 任何协议,都要解决如何将自己的有效载荷交付给上层的那个协议

以上两个问题是每层网络协议的共性,每层协议都要解决这两个问题!

2. 跨网络的两台主机通信

跨网段的主机的文件传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
请添加图片描述

四、网络中的地址管理

1. 认识IP地址

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个
  • 字节, 范围是 0 - 255

2. 认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

相关文章:

【Linux】网络基础(一)

文章目录 一、计算机网络背景1. 网络发展2. 认识“协议” 二、网络协议初识1. 协议分层2. OSI七层模型3. TCP/IP五层(或四层)模型 三、网络传输基本流程1. 同局域网的两台主机通信数据包封装和分用封装分用 2. 跨网络的两台主机通信 四、网络中的地址管理…...

前端小白学习Vue框架(二)

一.属性计算、属性监听、属性过滤 1.认识MVVM V (用户视图界面)通过VM (应用程序) 向Model(数据模型) 取值与赋值的过程! 数据双向绑定 视图改变更新数据,数据改变更新视图 2.属性计算 //在vue实例中通过computed去计算new …...

飞书api增加权限

1,进入飞书开发者后台:飞书开放平台 给应用增加权限 2,进入飞书管理后台 https://fw5slkpbyb3.feishu.cn/admin/appCenter/audit 审核最新发布的版本 如果还是不行,则需要修改数据权限,修改为全部成员可修改。 改完…...

CSS3 平面 2D 变换+CSS3 过渡

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍一、CSS3 平面 2D 变换💎1 坐标轴💎2 transform 语法…...

【Jenkins】Jenkins自动化工具介绍

目录 技术背景常规的手动打包步骤 Jenkins简介起源与发展Jenkins的核心价值1.自动化1.1代码构建1.2测试自动化1.3自动部署 2.持续集成与持续部署CI/CD的概念如何减少集成问题更快速地发布软件版本 Jenkins优势Jenkins的主要竞争对手Travis CI:CircleCI:GitLab CI: Jenkins与其他…...

课时93:流程控制_函数进阶_综合练习

1.1.3 综合练习 学习目标 这一节,我们从 案例解读、脚本实践、小结 三个方面来学习。 案例解读 案例需求 使用shell脚本绘制一个杨辉三角案例解读 1、每行数字左右对称,从1开始变大,然后变小为1。    2、第n行的数字个数为n个&#xf…...

oracle创建整个数据库的只读账户

在源用户readonly 下创建只读用户 reader readonly 的表空间为AA 一、创建只读用户 create user reader identified by 密码 default tablespace AA; 二、授权 grant connect to reader ; 三、获取原账号readonly 的查询权限 select grant select on ||owner||.||object…...

文件名乱码危机:数据恢复全攻略

在数字化时代的浪潮中,电脑文件成为我们日常生活和工作中不可或缺的一部分。然而,有时我们会突然遭遇一个令人头疼的问题:原本清晰易读的文件名突然变成了乱码。这些乱码文件名不仅让我们无法准确识别文件内容,更可能意味着数据丢…...

Unity Standalone File Browser,Unity打开文件选择器

Unity Standalone File Browser,Unity打开文件选择器 下载地址:GitHub链接: https://github.com/gkngkc/UnityStandaloneFileBrowser简单的示例代码 using SFB; using System; using System.IO; using UnityEngine; using UnityEngine.UI;…...

面向对象的架构三段式写一篇论文

在面向对象的软件架构中,系统设计通常遵循一种“三段式”方法论,以确保软件的可扩展性、可维护性和灵活性。这种方法论包括三个核心阶段:概念化、详细设计和实现。通过这三个阶段的逐步深入,开发团队可以有效地应对复杂系统的挑战…...

npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED

解决npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to 分析过后这个问题是证书过期的意思 考虑到其他的原因 这里给出三个解决方案 一: 清除npm缓存 npm cache clean --force 取消ssl验证: npm config set strict-…...

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28,输出是10个分类0~9,有两个隐藏层,如下图所示: 2. 代码实现 2.1 网络代码 第一层将784降维到200,第二次使用…...

httpsok-快速申请谷歌SSL免费证书

🔥httpsok-快速申请谷歌SSL免费证书 使用场景: 部署CDN证书、OSS云存储证书证书类型: 单域名 多域名 通配符域名 混合域名证书厂商: ZeroSSL Lets Encrypt Google证书加密类型: ECC、 RSA 一、证书管理 进入 证书管…...

LiveGBS流媒体平台GB/T28181功能-国标级联中如何自定义通道国标编号编辑通道编号保持唯一性

LiveGBS国标级联中如何自定义通道国标编号编辑通道编号保持唯一性 1、国标级联选择通道修改2、通道编辑修改3、分屏展示设备树修改3.1、编辑名称中修改 4、分屏展示分组修改4.1、编辑名称中修改4.2、选择通道中修改 5、搭建GB28181视频直播平台 1、国标级联选择通道修改 国标级…...

mysql 大表凌晨定时删除数据

有几张表数据量非常大,一次维护量有点大(一个月有500多万条数据,并且还在往上涨), 于是想了个定时删除数据,每天凌晨执行,这样每天删除数据量就小, 循环删除,每次删除5…...

ArcGIS和ArcGIS Pro快速加载ArcGIS历史影像World Imagery Wayback

ArcGIS在线历史影像网站 World Imagery Wayback(网址:https://livingatlas.arcgis.com/wayback/)提供了数期历史影像在线浏览服务,之前不少自媒体作者在文中宣称其能代表Google Earth历史影像。 1、一点对比 (1)同一级别下的版本覆盖面 以下述区域为例,自2014年2月20…...

数据仓库的—数据仓库的体系架构

数据仓库通常采用分层的体系架构设计,作为支撑企业决策分析需求的数据基础设施。典型的数据仓库体系架构由以下三个核心层次组成: 源数据层(Source Layer) 这是数据仓库的数据来源,包括组织内部的各种运营系统,如ERP、CRM、SCM等,以及外部数据源如互联网、社交媒体等。这些系…...

【C/C++基础知识】const 关键字

文章目录 Q&A and 前言const 修饰基本变量初始化const 对象仅在文件内有效 const 的引用应用 指针与 constconst 修饰类成员函数参考写在最后 Q&A and 前言 Q:简要说一说 C 中的 const 关键字,含义以及常见的使用位置 A:const 是 C…...

Docker之数据卷和Dockerfile

Docker之数据卷与Dockerfile的详细使用介绍如下: 一、Docker数据卷 数据卷(volume)是Docker中的一个重要概念,它允许你在容器和宿主机或容器之间共享文件系统。数据卷提供了持久性存储,即使在容器被删除后&#xff0…...

pull拉取最新代码

工作区、暂存区、版本库 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 …...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...