【计算机网络】第一章——概述
=========================================================================
个人主页直达:小白不是程序媛
系列专栏:计算机网络基础
=========================================================================
目录
前言
计算机网络概述
概念
功能
组成
分类
标准化工作
性能指标
速率
带宽
吞吐量
时延
时延带宽积
往返时延RTT
利用率
分层
为什么要分层?
分层的基本原则:
正式认识分层结构
ISO/OSI 7层参考模型(法定标准)
ISO/OSI参考模型通信过程
应用层
表示层
会话层
传输层
网络层
物理层
TCP/IP协议
OSI参考模型与TCP/IP参考模型相同点
OSI参考模型与TCP/IP参考模型不同点
由7层ISO参考模型和5层TCP/IP参考模型衍生出的5层参考模型
五层参考模型的数据封装和解封装
前言
上篇文章我们对计算机的发展历史对大家进行了简要的描述,通过上篇文章不知道大家对于计算机网络有没有一个初步的认识。今天这篇文章从计算机网络的概念、分类、组成、功能、体系结构等计算机网络的概进行相关的分享,让大家对计算机网络有更深入的了解。
计算机网络概述
概念
三网:计算机网络、电信网络、有线电视网络
计算机网络:将分散的具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。计算机网络时互连的、自治的计算机集合。
互连网:有多个网络通过一些路由器相互连接起来,构成了一个覆盖范围更大的计算机网络。
互联网(Internet):由数量及大的各种计算机网络互连起来的。
通过上面的概念我们初步建立了下面的基本概念:网络是把许多计算机连接在一起,而互连网则把许多网络通过一些路由器连接在一起。与网络相连的计算机常称为主机。
功能
其实在上面计算机网络的概念中我们已经提到了
- 信息传递
- 资源共享
- 分布式处理
- 提高可靠性
- 负载均衡
组成
- 计算机网络有软件、硬件、协议组成
- 工作方式
- 边缘部分:用户直接使用(又分为C/S(B/S)方式和P2P方式)
- 核心部分:为边缘部分提供服务
- 功能组成
- 通信子网(实现数据通信)
- 资源子网(实现资源共享)
根据ISO模型,上三层为资源子网、下三成为通信子网

分类
- 按分布范围分类
- 广域网(交换技术)
- 城域网
- 局域网(广播技术)
- 个人区域网
- 按使用者分
- 公用网
- 专用网
- 按交换方式分
- 电路交换
- 报文交换
- 分组交换
- 按拓朴结构分
- 总线型
- 星型
- 环型
- 网状型(广域网)
- 按传输技术分
- 广播式网络(共享公共信息通道)
- 点对点网络使用分组存储交换转发和路由选择机制
标准化工作
标准规定的分类
- 法定标准:有权威机构制定的正式的合法的标准(OSI)
- 实施标准:某些公司的产品在竞争过程中占据了主流时间长了,这些产品中的协议和技术成了标准。(TCP/IP)
性能指标
速率
也可称为数据率、数据传输率、比特率
连接在计算机网络上的主机在数字信道上传送数据位数的速率
单位:b/s Kd/s Mb/s Gb/s Td/s
1Kb/s=10^3b/s
带宽
表示网络的通信线路传送数据的能力。通常是值单位时间从网络中的某一点到另一点所能通过的“最高数据率”单位是“比特每秒”。也指网络设备所支持的最高速度。
吞吐量
表示在单位时间内通过某个网络、信道或接口的数据量。单位b/s, kb/s, Mb/s等。
时延
- 指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需的时间。也叫延迟或迟延。单位是s。
发送时延(传输时延):从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需的时间。
发送时延 = 数据长度 / 信道带宽(发送速率)
传播时延:电磁波在信道上传播一定距离所花费的时间。
传播时延 = 信道长度 / 电磁波在信道上的传播速率
排队时延:等待输入/输出链路可用。
处理时延:主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等。
时延带宽积
时延带宽积又称为以比特为单位的链路长度,单位为bit。 即“某段链路现在有多少比特”
时延宽带积=传播时延*带宽
往返时延RTT
从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延。
RTT = 往返传播时延(传播时延 * 2)+ 末端处理时间+(末端处理时间)(可省略)
利用率
分为两种
- 信道利用率 = 有数据通过时间 / (有+无)数据通过时间
- 网络利用率 = 信道利用率加权平均值
分层
为什么要分层?
- 发起通信的计算机必须将数据通信的通路进行激活。
- 要告诉网络如何识别目的主机。
- 发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。
- 发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。
- 确保差错和意外可以解决。
- ……
由此可见:问题过于庞大,需要细分处理
分层的基本原则:
- 各层之间相互独立,每层只实现一种相对独立的功能。
- 每层之间界面自然清晰,易于理解,相互交流尽可能少
- 结构上可分割开。每层都采用最合适的技术来实现。
- 保持下层对上层的独立性,上层单向使用下层提供的服务。
- 整个分层结构应该能促进标准化工作。
正式认识分层结构
- 实体:第n层中的活动元素称为n层实体。同一层的实体叫对等实体。
- 协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议(水平方向)。协议三要素:
- 语法:即数据与控制信息的结构或格式。
- 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
- 同步:即事件实现顺序的详细说明。
- 接口(访问服务点SAP):上层使用下层服务的入口,下层为上层提供服务的接口(垂直方向)。
- 服务:下层为相邻上层提供的功能调用。
- SDU服务数据单元:为完成用户所要求的功能而应传送的数据。
- PCI协议控制信息:控制协议操作的信息。
- PDU协议数据单元:对等层次之间传送的数据单位。
- 数据传输时,PDU不断成为下一层的SDU,一直向下传递。

ps:
- 网络体系结构是从功能上描述计算机网络结构。
- 计算机网络体系结构简称网络体系结构是分层结构。
- 每层遵循某个/些网络协议以完成本层功能。
- 计算机网络体系结构是计算机网络的各层及其协议的集合。
- 第n层在向n+1层提供服务时,此服务不仅包含第n层本身的功能,还包含由下层服务提供的功能。
- 仅仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。
- 体系结构是抽象的,而实现是指能运行的一些软件和硬件。
ISO/OSI 7层参考模型(法定标准)
目的:支持异构网络系统的互连互通
国际化组织(ISO)于1984年提出开放系统互连OSI模型,但是因为一些原因被淘汰。

ISO/OSI参考模型通信过程

应用层
- 应用层距离主机最近,是用户与网络的界面。
- 所有能和用户交换产生网络流量的程序。
- 典型的应用层服务:
- 文件传输(FTP)
- 电子邮件(SMTP)
- 万维网(HTTP)
表示层
- 主要用于处理在两个通信系统中交换信息的表示方式(语法和语义)
- 主要功能:
- 数据的格式变换(编码和解码)
- 数据的加密解密
- 数据的压缩和恢复
- 主要协议:JPEG、ASCII
会话层
- 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。
- 这是会话,也是建立同步(SYN)。
- 主要功能:
- 建立、管理、终止会话。
- 使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
- 校验点:将一个大文件切分成几个部分,每部分插入一个校验点,当传输出现故障时,可继续从以传输的部分开始继续传输(断点续传)。
主要协议:ADSP、ASP
传输层
- 负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
- 主要功能:
- 可靠传输、不可靠传输:可靠传输将数据分成报文段发送,并拥有确认机制,不可靠传输则直接发送。
- 差错控制:检查错误
- 流量控制:协调发送端和接收端的速度。
- 复分复用
- 复用:多个应用层进程同时使用一个传输层协议传输数据。
- 分用:多个应用层进程同时使用一个传输层协议接收数据。
- 主要协议:TCP、UD
网络层
- 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务,传输单位是数据报。
- 当数据报过长时,将数据报进行切割成小的分组,在进行传输。
- 主要功能:
- 路由选择:选择最佳路径
- 流量控制
- 差错控制
- 拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。
- 主要协议:IP、IPX、ICMP、IGMP、ARP.、RARP、OSPF
数据链路层
- 主要任务是把网络层传下来的数据报组装成帧,传输单位是帧。
- 主要功能:
- 成帧:定义帧的开始和结束
- 差错控制:帧错 + 位错
- 流量控制
- 访问(接入)控制:控制对信道的访问
- 主要协议:SDLC、HDLC、PPP、 STP
物理层
- 主要任务是在物理媒体上实现比特流的透明传输,传输单位是比特。
- 透明传输:指不管所传数据是什么样的比特组合都应当能够在链路上传送。
- 主要功能:
- 定义接口特性
- 定义传输模式:单工、半双工、双工
- 单工:数据传输只支持数据在一个方向上传输。
- 半双工:双方都可以作为发送方和接收方,但不能同时发送信息(对讲机)。
- 双工:双方都可以作为发送方和接收方,可以同时发送信息(打电话)。
- 定义传输速率
- 比特同步
- 比特编码
- 主要协议:Rj45、802.3
TCP/IP协议

OSI参考模型与TCP/IP参考模型相同点
- 都分层。
- 基于独立的协议栈的概。
- 可以实现异构网络互联
OSI参考模型与TCP/IP参考模型不同点
- OSI定义三点:服务、协议、接口。
- OSI先出现,参考模型先于协议发明,不偏向特定协议。
- TCP/IP设计之初就考虑到异构网互联问题,将IP作为重要层次

由7层ISO参考模型和5层TCP/IP参考模型衍生出的5层参考模型

五层参考模型的数据封装和解封装

- 数据传输就是一个“打包拆包”的过程。
- 数据链路层中需要添加头部信息和尾部信息。
- 物理层类似一个傻瓜层,只是将数据转换为比特流
今天的内容就分享完了,这篇文章对于初学者来说难度确实有点大,但是没关系后面的文章我们会对每一层讲解,今天只是让大家认识认识!!!希望大家读完文章有很大的收获,也希望大家留言指出我文章中出现的内容,同时也感谢各位看官的三连支持,你们的支持就是我更新的动力!!!
相关文章:
【计算机网络】第一章——概述
个人主页直达:小白不是程序媛 系列专栏:计算机网络基础 目录 前言 计算机网络概述 概念 功能 组成 分类 标准化工作 性能指标 速率 带宽 吞吐量 时延 时延带宽积 往返时延RTT 利用率 分层 为什么要分层? 分层的基本原则&am…...
vue实现在页面拖拽放大缩小div并显示鼠标在div的坐标
1、功能要求: 实现在一个指定区域拖拽div,并可以放大缩小,同时显示鼠标在该div里的坐标,如图可示 缩小并拖动 2、实现 <div class"div_content" ref"div_content"><div class"div_image" id"…...
LuatOS-SOC接口文档(air780E)-- io - io操作(扩展)
示例 -- io模块是lua原生模块,LuatOS增加了一些API -- 请配合os模块一起使用-- 只读模式, 打开文件 local fd io.open("/xxx.txt", "rb") -- 读写默认,打开文件 local fd io.open("/xxx.txt", "wb") -- 写入文件,且截断为0字节 loc…...
【数据结构】线性表(六)堆栈:顺序栈及其基本操作(初始化、判空、判满、入栈、出栈、存取栈顶元素、清空栈)
文章目录 一、堆栈1. 定义2. 基本操作 二、顺序栈0. 顺序表1. 头文件和常量2. 栈结构体3. 栈的初始化4. 判断栈是否为空5. 判断栈是否已满6. 入栈7. 出栈8. 查看栈顶元素9. 清空栈10. 主函数11. 代码整合 堆栈Stack 和 队列Queue是两种非常重要的数据结构,两者都是特…...
父组件可以监听到子组件的生命周期吗?
在 Vue 中,父组件是可以监听到子组件的生命周期的。Vue 提供了一些特殊的钩子函数,可以在父组件中监听子组件的生命周期事件。 以下是一些常用的方法来监听子组件的生命周期: 1:使用$emit: 在子组件的生命周期钩子函数中,使用 $emit 方法触发自定义事件,向父组件发送通…...
[开源]MIT开源协议,基于Vue3.x可视化拖拽编辑,页面生成工具
一、开源项目简介 AS-Editor 基于 Vue3.x 可视化拖拽编辑,页面生成工具。提升前端开发效率,可集成至移动端项目作为通过定义 JSON 直接生成 UI 界面。 二、开源协议 使用MIT开源协议 三、界面展示 四、功能概述 基于Vue可视化拖拽编辑,…...
【C++ Primer Plus学习记录】数组的替代品
目录 1.模板类vector 2.模板类array(C11) 3.比较数组、vector对象和array对象 模板类vector和array是数组的替代品。 1.模板类vector 模板类vector类似于string类,也是一种动态数组。您可以在运行阶段设置vector对象的长度,可…...
JSP免杀马
JSP免杀马 随着Java框架的进化和程序员的内卷,使用PHP编写的系统越来少,使用Java编写的系统越来越多。JSP马的使用越来越多,但是就目前来看,各大厂商对JSP马的查杀效果还是不尽人意。这里简单通过Java的反射机制和ClassLoader技术…...
2023-10-16 node.js-调用python-记录
NodeJS 作为后端,仅在需要时调用 Python 在某些特殊的场景下,比如复杂耗时的数据处理和运算时,我们可以用 Python 脚本编写,然后使用 Node 的子进程调用 Python 脚本即可,这样可以提升效率。如下代码,我们…...
Kotlin 设置和获取协程名称
1,设置写成名称 创建协程作用域是或者创建协程是有个上下文参数(context: CoroutineContext) 创建协程作用域 CoroutineScope(Dispatchers.IO CoroutineName("协程A"))//Dispatchers.IO根据实际情况设置可有可无 源码…...
awk命令的使用
1.概念: awk是Linux以及UNIX环境中现有的功能最强大的数据处理工具 awk是一种处理文本数据的编程语言。awk的设计使得它非常适合于处理由行和列组成的文本数据 awk程序可以读取文本文件,对数据进行排序,对其中的数值执行计算以及生成报表等…...
【面试系列】Vue
引言:下面是一些常见的 Vue 面试题和对应的答案 目录 1. Vue 是什么?它有哪些特点?2. Vue 的生命周期有哪些?请简要描述每个生命周期的作用。3. Vue 组件间通信的有哪些方式?4. Vue 的 computed 和 watch 的区别是什么…...
揭开MyBatis的神秘面纱:掌握动态代理在底层实现中的精髓
一日小区漫步,我问朋友:Mybatis中声明一个interface接口,没有编写任何实现类,Mybatis就能返回接口实例,并调用接口方法返回数据库数据,你知道为什么不? 朋友很是诧异:是啊ÿ…...
结合领域驱动设计,理解TOGAF之架构方法论
TOGAF(The Open Group Architecture Framework)是一个开放的架构方法论,旨在支持组织制定和实施企业架构。它提供了一种框架来创建和管理企业架构,并包含了一组最佳实践,帮助组织实现其业务目标。 TOGAF框架包括四个主…...
Vue-vue项目Element-UI 表单组件内容要求判断
整体添加判断 <el-formref"ruleFormRef":model"formModel"class"demo-ruleForm"label-position"top"status-icon:rules"rules"><el-form-item label"姓名" prop"applyUsers" class"form-…...
【试题027】C语言宏定义小例题
1.题目: #define MOD(a,b) a%b int main() { int x4,y16,z; zMOD(y,x); printf("%dn".z);} 则程序执行的结果是? 2.代码分析: #include <stdio.h> #define MOD(a,b) a%b int main() {int x 4, y 16, z;z MOD(y, …...
解决 sharp: Installation error: unable to verify the first certificate
使用 plasmo 时报错如下: E:\chromeplugins>pnpm create plasmo ../.pnpm-store/v3/tmp/dlx-46852 | 2 ../.pnpm-store/v3/tmp/dlx-46852 | Progress: resolved 2, reused 2, downloaded 0, added 2, done 🟣 Plasmo v0.83.0 &…...
【Java】Java实现100万+ 的高并发、高性能设计
Java实现100万 的高并发、高性能设计 1、简述 现百万级并发编是一项综合性的技术,同时,它与现实生活中 的场景有着紧密的联系。 搞懂并发编程有三大核心问题 分工问题 同步问题 互斥问题 本文就对这三大核心问题进行简单的介绍 2、分工问题 关于分工…...
linux系统下,在vscode的命令行中调试python文件
首先参考vscode官网文档Command line debugging 步骤 1(只需一次):安装debugpy 步骤 2:在命令行中运行 python -m debugpy --listen 5678 --wait-for-client -m dir1.dir2.your_script 以上命令使用了端口5678,也可…...
DFS(分布式文件系统)与 DFSR(分布式文件系统复制)的区别
DFS(分布式文件系统)和 DFSR(分布式文件系统复制)是两种不同的技术,尽管它们在名称上有一些相似之处,但它们的用途和功能有所不同。 DFS(分布式文件系统) DFS 是一种用于创建和管理…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
