【Linux】网络基础(一)

【Linux】网络基础(一)

文章目录

网络发展

起初计算机是用在军事上的
独立模式: 计算机之间相互独立

在这里插入图片描述

网络互联:多台计算机连接在一起实现网络互联

在这里插入图片描述


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


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

在这里插入图片描述


所谓局域网广域网是相对概念,我们家庭路由器就可以看作局域网,把家家户户连接的社区就是广域网。社区看作局域网,把社区连接的就是广域网,中国网络看作局域网,连接世界就是广域网

认识协议

协议是一种约定

在这里插入图片描述


计算机之间通过光信号电信号交流,通过频率强弱来代表0和1,要想传递不同信息,就要约定好数据格式,比如000代表什么信息

要想多台计算机之间相互通信,就要约定共同的标准,这就是网络协议

🚩网络协议

🚩协议分层

在这里插入图片描述

打电话的例子,语言层汉语有协议,通信设备层也有协议

在这里插入图片描述


英语之间交流,我们只需在语言层变更,不必改电话协议
改成无线电协议,不必改汉语协议。

所以,分层最大的好处是封装
这个例子我们只有两层,实际上的网络协议层数更多,更复杂

OSI七层协议

该协议将网络从逻辑上分为7层,概念清楚,理论完整,
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

🚩TCP/IP五层(四层)协议

我们学习时,会将上三层合称应用层,
TCP/IP五层协议,又因为物理层不重点学习,也叫做,TCP/IP四层协议,
为什么是TCP/IP协议?,因为他俩分别代表传输层,网络层,我们重点学习传输层网络层

每层都要有自己的协议

应用层:处理发来的数据(https http ftp smtp)
tcp协议:长距离传输丢失数据问题
ip协议:如何定位主机
数据链路层:保证数据准确到达下一个设备

🚩网络传输基本流程

网络协议栈与OS关系

在这里插入图片描述


在这里插入图片描述


网络通信的本质就是贯穿协议栈的过程

🚩数据包的封装和解包

用户层拿到了有效载荷,会添加报头再传给传输层,传输层会再添加报头传给网络层,网络层再添加报头传给数据链路层,通过物理层将数据传到另一台主机后,数据链路层会解包属于自己的报头,向上传输,网络层解包自己的报头,传输层解包自己的报头,应用层解包自己的报头,最后拿到数据

在这里插入图片描述


扩展

  • 每一层协议都要提供一种能力,分离报头和有效载荷的能力
  • 每一层协议,都要在报头提供,决定将有效载荷提供上一层协议的能力

MAC地址

MAC地址用来识别数据链路层的相连的节点
MAC48位,6字节,用十六进制加:表示, 08:00:27:03:fb:19
MAC在网卡出厂就设置了,MAC地址通常唯一

在这里插入图片描述

局域网,多台主机共同向其中发数据,主机H1发送数据会被其他所有主机接收,数据内容包含M1发出M10接收(假如),H2主机接收后发现自己是M2,不是M10,直接丢弃,就不再向上层传输,主机H10接收发现自己就是M10,向上层传输

其中,同一时间,只能有一台主机向局域网发送数据,所以主机发送数据前,要执行避免碰撞的算法

交换机:核心工作:划分碰撞域,当左侧主机交换数据时,数据不会传到右侧,当右侧发生碰撞时,碰撞也不会干扰到左侧

Read more

Flutter for OpenHarmony: Flutter 三方库 ulid 别再用杂乱的 UUID,为鸿蒙应用换上“可排序、更简洁”的唯一标识符(全局 ID 新标准)

Flutter for OpenHarmony: Flutter 三方库 ulid 别再用杂乱的 UUID,为鸿蒙应用换上“可排序、更简洁”的唯一标识符(全局 ID 新标准)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的分布式数据库设计、日志系统或任务追踪系统开发时,我们需要为每一条记录生成一个“全局唯一标识符”。 1. 传统 UUID 的痛点:UUID (v4) 是完全随机的,它破坏了数据库的 B-Tree 索引顺序,导致写入性能下降;且 36 位连字符字符串在数据库中显得过于臃肿。 2. ULID 的优势:它兼具了 128 位的全局唯一性,同时它的前 48 位是时间戳。这意味着 ULID 天然可按时间排序。 ulid 软件包为鸿蒙开发者提供了这种现代化的 ID 生成方案。它采用 Base32 编码(26 个字符),没有特殊符号,既美观又极具工程性能优势。 一、

By Ne0inhk
Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案

Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案 前言 在鸿蒙(OpenHarmony)生态的大型分布式系统开发中,随着业务逻辑复杂度的指数级增长,原本简单的单元测试逐渐演变为由数百行冗长、枯燥且难以通过阅读理解其意图的 expect(result, isA<T>()) 堆砌而成的“代码仓库”。面对一个需要同时验证“返回值不为空 且 包含特定前缀 且 响应时间小于 50ms”的复合业务断言。如果仅仅依靠传统的 JUnit 风格写法。不仅会导致测试代码本身产生严重的维护债务,更会由于在测试失败时生成的机械化、无逻辑上下文的错误报文,引发开发者极其低效的排查过程。 我们需要一种“自然语言化、逻辑链式”的测试审计艺术。 fluent_

By Ne0inhk
【Linux】线程控制(二)

【Linux】线程控制(二)

文章目录 * 背景 * 🚩进程控制 * 线程计算1-100 * 🚩线程库 * c++11多线程 背景 Linux中没有真正的线程概念,而是复用进程数据结构和管理算法,用进程模拟线程 只有轻量级进程,不会提供线程的调用接口,而是提供轻量级进程的系统调用接口 但是我们用户需要线程调用,所以有pthread库帮我们封装了轻量级进程调用接口,我们可以直接使用线程接口 * 每个linux平台自带pthread库, * 编写多线程代码需要pthread库 线程接口 每个线程都有自己的ID, ⭐pthread_create不是系统调用,需链接 -pthread 🚩进程控制 快速使用一下 #include<iostream>#include<pthread.h>#include<unistd.h> using namespace std;void*threadRoutine(void*args){constchar* str=

By Ne0inhk
鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

《鸿蒙APP开发从入门到精通》第20篇:鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固 📊🔧🛡️ 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第20篇——运维监控、性能优化、安全加固篇,100%承接第19篇的生态合作、用户运营、数据变现架构,并基于金融场景的运维监控、性能优化、安全加固要求,设计并实现鸿蒙金融理财全栈项目的运维监控、性能优化、安全加固功能。 学习目标: * 掌握鸿蒙金融理财项目的运维监控设计与实现; * 实现应用监控、服务器监控、数据库监控; * 理解性能优化在金融场景的核心设计与实现; * 实现前端优化、后端优化、数据库优化; * 掌握安全加固在金融场景的设计与实现; * 实现代码加固、数据加密、安全审计; * 优化金融理财项目的用户体验(运维监控、性能优化、安全加固)。 学习重点: * 鸿蒙金融理财项目的运维监控设计原则; * 性能优化在金融场景的应用; * 安全加固在金融场景的设计要点。 一、 运维监控基础 🎯 1.1 运维监控定义 运维监控是指对金融理财项目的应用、

By Ne0inhk