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

Linux网络——网络初识

目录

1. 认识协议

2. 协议的分层

3. OSI 七层模型 && TCP/IP 五层(四层)模型

4. 网络传输的基本流程

5. 以太网的通信原理 

6. 数据的跨网络传播

7. 认识 IP 地址

① IP 是什么

② IP 与 MAC 的关系

③ 为什么需要 IP


在谈及网络之前,我们要先对学的知识有一个了解

网络的本质就是获取数据,而系统的本质就是加工数据

1. 认识协议

而我们要从网络上获取数据,这之中一定会出现很多的问题,比如

  • 如何处理发送过来的数据? -> 应用层 (http, https, ftp, smtp)
  • 长距离传输导致数据丢失了怎么办? -> tcp 协议
  • 如何定位主机呢? -> ip 协议
  • 如何保证数据能够传输到下一个设备呢? -> 数据链路层

那么为什么会出现这些问题呢?——其实是两个设备之间传输数据的距离变长了而已。对于 A 与 B 两个设备来说,整个通信的过程其实就是一个封装与识别的过程!

既然如此,只要我们通信两台设备并约定好协议就可以了吗?——当然不行,计算机的型号有很多,OS 也有很多,硬件一定更多。因此我们只能约定一个共同的标准——即网络协议。

2. 协议的分层

网络协议在实际意义上被分成了层级,在 C++ 中实际是通过继承来实现的,即使用虚拟文件指针在硬件和软件间分层。那么好端端的为什么要分层呢?——满足高内聚,低耦合,举个例子

对于通信设备层来说,我们可以将电话替换成无线电,这对上层的人是没有影响的,也就是解耦了!这会给我们带来一个好处——更加方便维护。在事实上,我们认为人和电话在沟通;在逻辑上,我们认为人和人,电话与电话在沟通。那为什么协议也要分层呢?——协议本身就是层状的。

3. OSI 七层模型 && TCP/IP 五层(四层)模型

OSI (Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。它把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机。
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。它最大的优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

图示如下 


但是,它既复杂又不实用。所以我们按照 TCP/IP 五层(四层)模型来讲解,即

应用层:如何处理数据?

传输层(TCP):数据出问题怎么办?

网络层(IP):如何选择路径?

数据链路层:保证任意两台主机能通信

物理层:保证信号的发送效率

这之中网络层与传输层最为重要因为它们与 OS 联系最为紧密,我们来看看 OS 与网络协议栈的关系,如图

我们的用户想做出动作本质就是访问硬件,但是我们又无法直接访问,因此这个过程一定会贯穿 OS ,其中传输层与网络层就是 Linux 内核中的一个模块。所以我们可以知道,整个网络通信的本质实际上就是一个贯穿协议栈的过程,即

4. 网络传输的基本流程

实际上,网络协议栈的层状结构中,每一层都有协议,举个例子

应用层:Telnet, FTP, HTTP, SMTP

传输层:TCP, UDP

网络层:IP, ICMP, IGMP

数据链路层:MAC

 我们现在来简单模拟一下网络传输的基本流程,如图

可以看到,从上往下是一个封装的过程,而从下向上则是一个解包分用的过程。那为什么一定是网卡拿到数据并向上传递呢?——冯诺依曼体系是这样规定的!所以,通信的过程本质就是在不断地进行封装与解包的过程。

只有理解了下面这两点,面对封装与解包我们才不会困惑,即

1. 几乎任何层的协议,都要提供一种能力——将有效载荷与报头分离的能力

2. 几乎任何层的协议,都要在报头中提供 将自己的有效载荷交付给上层的哪一个协议的能力

这是大部分协议的共性,我们以后学习各种各样的协议时都会提出对应的问题。

5. 以太网的通信原理 

接下来我们来看看以太网是如何互相通信的,我们先讲一个例子来引入

当我们坐在教室里上课时,老师在讲台上点名,此时老师点了“张三”,坐在教室里的所有同学在实际意义上都收到了这个信息,然后每个同学将“张三”这个信息和自己的名字作对比,如果相同那就是点到了自己,否则不理会即可

同样的,每台主机在局域网上都要有自己的唯一编号,如图

此时H1想与H7互相通信,H1 就向局域网中发送一个报文,这个报文会被每个主机看到,每个主机拿到这个报文后,会将其中的 dst 与自己作比较,如果不同就舍弃,如果相同就将报头与有效载荷分离以得到数据。

那我们如何看待局域网这个东西呢?——局域网是多台主机所共享的临界资源。那假如在同一时刻多台主机向局域网中发送大量报文,那么就会出现一定程度上的报文丢失,我们将这个问题称为以太网发送数据碰撞问题!所以,我们要使用让发送主机尽量避免碰撞的算法。

为了解决这个麻烦,就出现了交换机这个东西,比如在 H3 与 H8 之间存在一个交换机, H1 与 H7 都在交换机的左边,就会让报文不传递到交换机右边,以此来降低碰撞概率,这实际上是一种基于划分碰撞域的东西。

6. 数据的跨网络传播

如图

可以看到,在整个过程中 IP 协议屏蔽了底层网络的差异化(红线以下部分),靠的就是工作在 IP 层的路由器。也就是说, IP 实现了全球主机的虚拟层,即一切都是 IP 报文!

注:令牌与锁类似,只有持有特殊标识符的主机才能发送消息。

7. 认识 IP 地址

上面说到了 IP,我们就来认识认识 IP

① IP 是什么

IP 一般指 IPv4,它有4个字节,32个比特位,其风格类似于 10.65.181.55

② IP 与 MAC 的关系

在这里我们举个例子,如果我们想从北京到上海,肯定在一路上要路过相当多的省份,而在这之中

从哪里来(srcip),到哪里去(dstip)始终是不变的!其类似于 IP 地址;

而上一站从哪里来(srcmac),下一站到哪里去(dstmac)始终是变化的,其变化依据是我最终去哪里!其类似于 MAC 地址。

根据之前的学习,以太网中的主机设备凭什么将数据交给路由器呢?——根据 IP 判断是否在同一网段。 

③ 为什么需要 IP

对于 IP 地址来说,尤其是目的 IP ,一般都是不会改变的,且可以协助我们进行路径选择;对于 mac 地址来说,在出了局域网后,其源 mac 地址与目的 mac 地址都要丢弃,再经由路由器重新封装。

相关文章:

Linux网络——网络初识

目录 1. 认识协议 2. 协议的分层 3. OSI 七层模型 && TCP/IP 五层(四层)模型 4. 网络传输的基本流程 5. 以太网的通信原理 6. 数据的跨网络传播 7. 认识 IP 地址 ① IP 是什么 ② IP 与 MAC 的关系 ③ 为什么需要 IP 在谈及网络之前,我们要先对学…...

从华为到创业公司

我有一个朋友,在华为工作了很长一段时间,一年多前,他从华为出来到了一家创业公司。 周末趁着有时间,我跟他聊了下关于从华为到创业公司的一些问题,总结给大伙看看。 ▎1 在华为工作和在创业公司工作最大的差别是什么呢…...

Vue 组件通信及进阶语法

文章目录 一、scoped 样式冲突二、data 是一个函数三、组件通信1. 父子通信1.1 props 校验1.2 props 比较 data 2. 非父子通信2.1 event bus2.2 provide-inject 四、进阶语法1. v-model 详解2. sync 修饰符3. ref 和 $refs4. $nextTick 一、scoped 样式冲突 注意点:…...

vue文本高亮处理

在vue的v-for循环中处理搜索关键字高亮问题&#xff0c;通过截取文字判断&#xff0c;分成三段拼接起来 <div class"check-list" v-if"shopList.length >0"><a-checkbox change"onChangeShop($event,item)" :checked"checkedL…...

androidstudio入门到放弃配置

b站视频讲解传送门 android_studio安装包&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 下载安装 开始创建hello-world 1.删除缓存 文件 下载gradle文件压缩&#xff1a;gradle-8.9用自己创建项目时自动生成的版本即可&#xff0c;不用和我一样 https://…...

NLP论文速读(谷歌出品)|缩放LLM推理的自动化过程验证器

论文速读|Rewarding Progress: Scaling Automated Process Verifiers for LLM Reasoning 论文信息&#xff1a; 简介&#xff1a; 这篇论文探讨了如何提升大型语言模型&#xff08;LLM&#xff09;在多步推理任务中的性能。具体来说&#xff0c;它试图解决的问题是现有的基于结…...

【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1

1.使用快捷键CtrlAltT打开命令终端&#xff0c;或者单击右键点击… 2.常用shell命令 目录信息查看命令&#xff1a;ls ls -a&#xff1a;显示目录所有文件及文件夹&#xff0c;包括隐藏文件&#xff0c;比如以.开头的 ls -l&#xff1a;显示文件的详细信息 ls -al&#xff1…...

【Qt】Qt在窗口中加载Web界面的方法汇总

1、Qt WebEngine 1)Qt版本:Qt5.4以上; 2)平台要求(https://doc.qt.io/archives/qt-5.9/qtwebengine-platform-notes.html): 例如:Windows下只能使用 MSVC 编译器,不支持MinGW编译器,会报错(: error: Unknown module(s) in QT: webenginewidgets) 并且不能用在Qt编…...

Java集合框架之Collection集合遍历

引言 在Java编程中&#xff0c;集合&#xff08;Collection&#xff09;框架是处理对象集合的核心工具。它提供了一套统一的接口和类来存储和操作对象集合。遍历集合是日常开发中的一项基本任务&#xff0c;本文将深入探讨Java Collection集合的遍历方法&#xff0c;并提供实际…...

基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路

一、项目概述 随着电动车的普及&#xff0c;充电桩作为关键基础设施&#xff0c;其智能化、网络化管理显得尤为重要。本项目旨在基于STM32微控制器开发一款智能充电桩&#xff0c;能够实现高效的充电监控与管理。项目通过物联网技术&#xff0c;提供实时数据监测、远程管理、用…...

windows 查看yolo11 是否安装了cuda

一、通过python查看 import torch print(torch.cuda.is_available()) 二、通过 pip list 查看 在conda环境 可以看出torch 后面是2.1.4 cu124 说明GPU环境安装成功。 如果是cpu环境&#xff0c;则是&#xff1a;...

机器学习【激活函数】

笔记内容侵权联系删 激活函数的概念神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值&#xff0c;并将输入值传递给下一层&#xff0c;输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中&#xff0c;上层节点的输入在加…...

【OpenEuler】配置虚拟ip

OpenEuler系统手动配置虚ip 介绍操作方法临时生效永久生效 验证 介绍 我们知道通过keepalived服务可以为linux服务器设置虚拟ip&#xff0c;但是有些特殊场景下若无法安装部署keepalived服务&#xff0c;则需要通过手动设置的方式&#xff0c;配置服务器的虚拟ip。 本方案提供…...

数据分析师证书怎么考

在信息技术飞速发展的今天&#xff0c;数据分析已成为推动各行业进步的核心引擎。CDA&#xff08;Certified Data Analyst&#xff09;数据分析师证书以其权威性和实用性&#xff0c;成为许多数据分析从业者的职业加速器。本文将深入探讨如何考取CDA数据分析师证书&#xff0c;…...

【人工智能】text2vec-large-chinese模型搭建本地知识库

本demo使用 text2vec-large-chinese 模型进行文本处理&#xff0c;然后再过 bge-reranker-v2-m3进行增强 1. 对文本进行向量处理&#xff0c;并保存只至本地 from sentence_transformers import SentenceTransformer import torch import numpy as np import faiss import os …...

前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set

前言 JS是前端三件套之一&#xff0c;也是核心&#xff0c;本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点&#xff0c;这篇是ES6;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 10、递归10.1、阶层案例10.…...

DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能

DevOps的兴起&#xff0c;得益于敏捷软件开发的普及与IT基础设施代码化管理的革新。敏捷宣言虽已解决了研发流程中的诸多挑战&#xff0c;但代码开发仅是漫长价值链的一环&#xff0c;开发前后的诸多问题仍亟待解决。与此同时&#xff0c;虚拟化和云计算技术的飞跃&#xff0c;…...

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理&#xff08;tor、proxy、relay等&#xff09;进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等&#xff0c;同时也可以对用户行为进行分析&#xff…...

vue2 自动化部署 shell 脚本

需求场景&#xff1a;在云平台中进行开发时&#xff0c;由于无法连接外网&#xff0c;在部署前端项目时&#xff0c;是通过本地打包再上传到服务器的方式进行部署的。基于这种部署场景&#xff0c;通过 shell 脚本进行部署流程优化&#xff0c;具体如下&#xff1a; 1、服务器…...

服务器数据恢复——Ext4文件系统使用fsck后mount不上的数据恢复案例

关于Ext4文件系统的几个概念&#xff1a; 块组&#xff1a;Ext4文件系统的全部空间被划分为若干个块组&#xff0c;每个块组结构基本上相同。 块组描述符表&#xff1a;每个块组都对应一个块组描述符&#xff0c;这些块组描述符统一放在文件系统的前部&#xff0c;称为块组描述…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...