【计算机网络】深入浅出计算机网络
第一章
计算机网络在信息时代的作用
计算机网络已由一种通信基础设施发展成一种重要的信息服务基础设施
CNNIC 中国互联网网络信息中心
因特网概述
网络、互联网和因特网
网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成
多个网络还可以通过路由器(router)互联起来,这样就构成了一个覆盖范围更大的网络,即互联网。因此互联网是网络的网络(Network of Network)
因特网(Internet)是世界上最大户互联网络(用户数以亿计,互连的网络数以百万计)
Internet(互联网)是一个通用名词,它泛指由多个计算机网络连接而成的网络。在这些网络之间的通信协议可以是任意的
Internet(因特网)则是一个专有名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET
因特网发展的三个阶段
因特网服务提供者ISP(Internet Service Provider)
基于ISP的三层结构的因特网
第一层ISP(主干网,覆盖国际性区域范围,并拥有高速链路和交换设备),第一层ISP之间直接互联
第二层ISP和一些大公司都是第一层ISP的用户,通常具有区域性或国家性覆盖规模,与少数第一层ISP相连接
第三层ISP,又称本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络,一般的校园网或企业网,以及住宅用户和无线移动用户都是第三层ISP的用户
相隔较远的两台主机间的通信可能需要经过多个ISP
一旦某个用户能够接入到因特网,那么他也可以成为一个ISP,所需要做的是购买一些如调制器或路由器这样的设备,让其他用户能够和他相连
一个ISP可以很方便地在因特网拓扑上增添新的层析和分支
因特网的标准化工作
注意:不是所有的RFC文档都是因特网标准,只有一小部分RFC文档最后才能变为因特网标准
因特网的组成
边缘部分:由所有连接在因特网上的主机组成,这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享
核心部分:由大量的网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的(提供连连通性和交换)
在网络核心部分起特殊作用的是路由器,是一种专用计算机,但我们不称它为主机。路由器是实现分组交换的关键构件,其任务是转发接收到的分组。
三种交换方式
电路交换(Circuit Switching)
电话交换机接通电话线的方式称为电路交换;
从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源;
电路交换的三个步骤:
(1)建立连接(分配通信资源)
例如,在使用电路交换机打电话之前,必须先拨号请求建立连接。当被叫用户听到电话交换机送来的拨号音并摘机后,从主叫端到被叫端建立了一条连接(也就是一条专用的物理通路),这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。
(2)通话(一直占用通信资源)
在整个通话期间,第一步建立连接所分配的通信资源始终被占用
(3)释放连接(归还通信资源)
也就是通话完毕后挂机后,电话交换机释放刚才使用的这条专用物理通路,是把刚才占用的所有通信资源归还给电信网。
思考:如果使用电路交换来传送计算机数据,是否可行?
尽管采用电路交换可以实现计算机之间的数据传送,但是线路的传送效率往往很低(计算机数据是突发式地出现在传输线路上的)
用户正在输入和编辑一份待传输的文件时,用户所占用的通信资源暂时未被利用,该通信资源也不能被其他用户利用,宝贵的通信线路资源白白地被浪费了
因此,计算机网络通常采用分组交换,而不是电路交换
分组交换(Packet Switching)
假设主机H6的用户要给主机H2的用户发送一条消息,(通常把该消息的整块数据称为一个报文),在发送报文之间,先把较长的报文划分成一个个更小的等长数据段。在每一个数据段前面,加上一些由必要的控制信息组成的首部(也可称为“包头”)后,就构成了一个分组(也可简称为“包”)
添加首部的作用?首部中肯定包含了分组的目的地址,否则分组传输路径中的各分组交换机(也就是各路由器)就不知道如何转发分组了。
分组交换机收到一个分组后,先将分组暂时存储下来,再检查其首部,按照首部中的目的地址进行查表转发,找到合适的转发接口,通过该接口将分组转发给下一个分组交换机,
主机H6将所构造出的各分组依次发送出去,各分组经过交换机的存储转发,最终到达主机H2,主机H2收到这些分组后,去掉它们的首部,将各数据段组合还原出原始报文。
只给出两种情况:一种是各分组从源站到达目的站可以走不同的路径(不同的路由);
另一种是分组乱序,分组到达目的站的顺序不一定与分组在源站的发送顺序相同。
可能出现的分组丢失、误码、重复等
报文交换(Message Switching)
交换结点也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换结点需要有较大的缓存空间。
主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代
分组交换,相比于报文交换,减少了转发时延,避免过长的报文长时间占用链路,同时有利于进行差错控制。
计算机网络的定义和分类
计算机网络的定义
计算机网络的精确定义并未统一
计算机网络的简单定义是:一些互相连接的、自治的计算机的集合
互连:是指计算机之间可以通过有线或无线的方式进行数据通信;
自治:是指独立的计算机,它有自己的硬件和软件,可以单独运行使用;
集合:是指至少需要两台计算机;
计算机网络的较好的定义:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能欧用来传递多种不同类型的数据,并能支持广泛的和日益增长的应用。
计算机网络所连接的硬件,并不限于一般的计算机,还包括智能手机、具有网络功能的传感器以及智能硬件。
计算机网络并非只用来传送数据,而是能够基于数据传送而实现各种各样的应用,包括在今后可能出现的各种应用。
计算机网络的分类
计算机网络的性能指标
计算机网络体系结构
总结
第二章
物理层的基本概念
物理层下面的传输媒体
传输方式
编码与调制
信道的极限容量
总结
第三章
数据链路层概述
封装成帧
差错检测
可靠传输的实现机制
点对点协议PPP
媒体接入控制的基本概念
媒体接入控制
随机接入
MAC地址、IP地址以及ARP协议
集线器与交换机的区别
以太网交换机自学习和转发帧
以太网家滑稽的生成树协议STP
虚拟局域网VLAN概述
虚拟局域网VLAN的实现机制
第四章
网络层概述
网络层提供的两种服务
IPv4地址概述
分类编址的IPv4地址
划分子网的IPv4地址
无分类编址的IPv4地址
IPv4地址的应用规划
IP数据报的发送和转发过程
静态路由器配置以及
路由器选择协议概述
IPv4数据报的首部格式
网际控制报文协议ICMP
虚拟专用网VPN与网络地址转换NAT
第五章
运输层概述
运输层端口号、复用与分用的概念
UDP和TCP的对比
TCP的流量控制
TCP的拥塞控制
TCP超时重传时间的选择
TCP可靠性传输的实现
TCP的运输连接管理
TCP报文段的首部格式
第六章
应用层概述
客户--服务器方式和对等方式
动态主机配置协议DHCP
域名系统DNS
文件传送协议FTP
电子邮件
万维网WWW
相关文章:
【计算机网络】深入浅出计算机网络
第一章 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成一种重要的信息服务基础设施 CNNIC 中国互联网网络信息中心 因特网概述 网络、互联网和因特网 网络(Network)由若干结点(Node)和连接这些结点的链路…...
HTTP详解——HTTP基础
HTTP 基本概念 HTTP 是超文本传输协议 (HyperText Transfer Protocol) 超文本传输协议(HyperText Transfer Protocol) HTTP 是一个在计算机世界里专门在 两点 之间 传输 文字、图片、音视频等 超文本 数据的 约定和规范 1. 协议 约定和规范 2. 传输 两点之间传输…...
ubuntu 安装 python
一、安装python依赖的包。 sudo apt-get install -y make zlib1g zlib1g-dev build-essential libbz2-dev libsqlite3-dev libssl-dev libxslt1-dev libffi-dev openssl python3-tklibsqlite3-dev需要在python安装之前安装,如果用户操作系统已经安装python环境&…...
CSS:定位
CSS定位核心知识点详解 CSS定位是网页布局中的重要概念,它允许开发者将元素放置在页面的指定位置。以下是对CSS定位所有相关详细重要知识点的归纳: 为什么要使用定位: 小黄色块在图片上移动,吸引用户的眼球。 当我们滚动窗口的…...
ros2笔记-7.1 机器人导航介绍
7.1 机器人导航介绍 7.1.1 同步定位与地图构建 想要导航,就是要确定当前位置跟目标位置。确定位置就是定位问题。 手机的卫星导航在室内 受屏蔽,需要其他传感器获取位置信息。 利用6.5 章节的仿真,打开并运行 会发现轨迹跟障碍物都被记录…...
一些常见的Java面试题及其答案
Java基础 1. Java中的基本数据类型有哪些? 答案:Java中的基本数据类型包括整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)和布尔类型(boo…...
今日总结 2025-01-14
学习目标 掌握运用 VSCode 开发 uni - app 的配置流程。学会将配置完善的项目作为模板上传至 Git,实现复用。项目启动 创建项目:借助 Vue - Cli 方式创建项目,推荐从国内地址 https://gitee.com/dcloud/uni - preset - vue/repository/archiv…...
图像处理|开运算
开运算是图像形态学中的一种基本操作,通常用于去除小的噪声点,同时保留目标物体的整体形状。它结合了 腐蚀 和 膨胀 操作,且顺序为 先腐蚀后膨胀(先腐蚀后膨胀,胀开了,开运算)。 开运算的作用 …...
基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台
项目是一个基于当前最前沿的前端技术栈(Vue3 Vite Ant Design Vue,简称Antdv)和后台技术栈(Spring Boot)实现的低代码开发平台。以下是对该项目的详细介绍: 一、项目概述 项目名称:lowcode-s…...
ASP.NET Core - 依赖注入(三)
ASP.NET Core - 依赖注入(三) 4. 容器中的服务创建与释放 4. 容器中的服务创建与释放 我们使用了 IoC 容器之后,服务实例的创建和销毁的工作就交给了容器去处理,前面也讲到了服务的生命周期,那三种生命周期中对象的创…...
Unity 视频导入unity后,播放时颜色变得很暗很深,是什么原因导致?
视频正常播放时的颜色: 但是,当我在unity下,点击视频播放按钮时,视频的颜色立马变得十分昏暗: 解决办法: 将File—BuildSettings—PlayerSettings—OtherSettings下的Color Space改为:Gamma即可…...
数仓建模(五)选择数仓技术栈:Hive ClickHouse 其它
在大数据技术的飞速发展下,数据仓库(Data Warehouse,简称数仓)成为企业处理和分析海量数据的核心工具。市场上主流数仓技术栈丰富,如Hive、ClickHouse、Druid、Greenplum等,对于初学者而言,选择…...
MySQL主从:如何处理“Got Fatal Error 1236”或 MY-013114 错误(percona译文)
错误的 GTID 如今,典型的复制设置使用 GTID 模式,完整的错误消息可能如下所示: mysql > show replica status\G *************************** 1. row ***************************Replica_IO_Running: NoReplica_SQL_Running: YesLast_I…...
01.14周二F34-Day55打卡
文章目录 1. Jim 在看电视的时候他的老婆正在做饭。(两个动作同时进行)2. 他刚睡着电话就响了。3. 我正在想事情,这时忽然有人从后面抓我胳膊。4. 我们总是边吃火锅边唱歌。5. 他一听说出了事故,马上就来了现场。6. He entered the room until I returned. (英译汉)7.直到…...
Docker 部署 Typecho
1. 官网 https://typecho.org/插件 & 主题 https://github.com/typecho-fans/plugins https://typechx.com/ https://typecho.work/2. 通过 compose 文件安装 github官网: https://github.com/typecho/Dockerfile 新建一个目录,存放 typecho 的相…...
electron 打包后的 exe 文件,运行后是空白窗口
一、代码相关问题 1. 页面加载失败 1.1 原因 在 Electron 应用中,若loadFile或loadURL方法指定的页面路径或 URL 错误,就无法正确加载页面,导致窗口空白。 1.2. 解决 仔细检查loadFile或loadURL方法中传入的路径或 URL 是否正确…...
《leetcode-runner》如何手搓一个debug调试器——架构
本文主要聚焦leetcode-runner对于debug功能的整体设计,并讲述设计原因以及存在的难点 设计引入 让我们来思考一下,一个最简单的调试器需要哪些内容 首先,它能够接受用户的输入 其次,它能够读懂用户想让调试器干嘛,…...
matlab实现了一个优化的遗传算法,用于求解注汽站最优位置的问题
function [best_chromosome, best_fitness] optimized_genetic_algorithm()%% 遗传算法参数初始化% 定义井信息,包括坐标、管道长度、流量、压力等wells defineWells(); % 返回井的结构体数组N length(wells); % 注汽井数量% 遗传算法相关参数L_chromosome 20; …...
八股学习 Redis
八股学习 Redis 使用场景常见问题问题1、2示例场景缓存穿透解决方案一解决方案二 问题3示例场景缓存击穿解决方案 问题4示例场景缓存雪崩解决方案 问题5示例场景双写一致性强一致方案允许延时一致方案 问题6RDB方式AOF方式两种方式对比 问题7示例场景惰性删除定期删除 使用场景…...
C++ 中 :: 的各种用法
C 中 :: 的各种用法 文章目录 C 中 :: 的各种用法1. 全局作用域解析示例:访问全局变量 2. 类作用域2.1. 访问类的静态成员示例:访问静态成员2.2. 定义类外成员函数示例:定义类外成员函数 3. 命名空间作用域3.1. 访问命名空间中的成员示例&…...
【Redis】初识分布式系统
目录 单机架构 分布式系统 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 冷热分离架构 垂直分库 微服务架构 分布式名词概念 本篇博文,将根据分布式系统的演进一步一步介绍每一种架构的形式,最后为大家总结了一些分布式中常用的…...
【EI 会议征稿】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)
2025 4th International Conference on Materials Engineering and Applied Mechanics 重要信息 大会官网:www.icmeaae.com 大会时间:2025年3月7-9日 大会地点:中国西安 截稿时间:2025年1月24日23:59 接受/拒稿通知…...
redisson 连接 redis5报错 ERR wrong number of arguments for ‘auth‘ command
依赖版本 org.redisson:redisson-spring-boot-starter:3.25.2 现象 启动报错 org.redisson.client.RedisException: ERR wrong number of arguments for ‘auth’ command. channel: [xxx] command: (AUTH), params: (password masked) 原因 redis6以下版本认证参数不包含用…...
GPT(General Purpose Timer)定时器
基本概念: 在嵌入式系统中,General Purpose Timer(GPT)是一种非常重要的硬件组件,用于提供定时功能。 定义:通用定时器是一种能够提供精确时间测量和控制功能的电子设备或电路模块。它可以产生周期性的时…...
Node.js - HTTP
1. HTTP请求 HTTP(Hypertext Transfer Protocol,超文本传输协议)是客户端和服务器之间通信的基础协议。HTTP 请求是由客户端(通常是浏览器、手机应用或其他网络工具)发送给服务器的消息,用来请求资源或执行…...
Vue数据响应式,reaction,ref的使用
目录 数据响应式 如何使用 reactionyu区别 数据响应式 什么是数据响应式 简单来说就是当数据变了的时候,页面的展示也会跟着发生变化。 在Vue当中我们有两个函数可以实现这个功能reaction,ref 如何使用 首先这两个函数在是在Vue对象中我们可以先对…...
【Vue实战】Vuex 和 Axios 拦截器设置全局 Loading
目录 1. 效果图 2. 思路分析 2.1 实现思路 2.2 可能存在的问题 2.2.1 并发请求管理 2.2.2 请求快速响应和缓存带来的问题 3. 代码实现 4. 总结 1. 效果图 如下图所示,当路由变化或发起请求时,出现 Loading 等待效果,此时页面不可见。…...
JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)
1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…...
在 Ubuntu 上安装和配置 Redis
在 Ubuntu 上安装和配置 Redis,并使用发布-订阅(Pub/Sub)功能,可以按照以下步骤进行: 一、安装 Redis 1. 更新包列表 首先,更新本地的包列表以确保获取到最新的软件包信息: sudo apt update…...
【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果
1. 代码规范方面 添加 Option Explicit:强制要求显式声明所有变量,这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误,提高代码的健壮性。使用 On Error GoTo 进行错误处理:通过设置错误处理机制,当代码执行…...
相机SD卡照片数据不小心全部删除了怎么办?有什么方法恢复吗?
前几天,小编在后台友收到网友反馈说他在整理相机里的SD卡,原本是想把那些记录着美好瞬间的照片导出来慢慢欣赏。结果手一抖,不小心点了“删除所有照片”,等他反应过来,屏幕上已经显示“删除成功”。那一刻,…...
【机器学习:十四、TensorFlow与PyTorch的对比分析】
1. 发展背景与社区支持 1.1 TensorFlow的背景与发展 TensorFlow是Google于2015年发布的开源深度学习框架,基于其前身DistBelief系统。作为Google大规模深度学习研究成果的延续,TensorFlow从一开始就定位为生产级框架,强调跨平台部署能力和性…...
从零搭建一个Vue3 + Typescript的脚手架——day1
1.开发环境搭建 (1).配置vite vite简介 Vite 是一个由尤雨溪开发的现代化前端构建工具,它利用了浏览器对 ES 模块的原生支持,极大地提升了开发服务器的启动速度和热更新效率。Vite 不仅适用于 Vue.js,还支持 React、Svelte 等多种框架&…...
unity打包sdk热更新笔记
基础打包需要知识: 安装包大小不要超过2G,AB包数量过多会影响加载和构建,多次IO,用Gradle打包,要支持64位系统,不同的渠道包:让做sdk的人支持,提供渠道包的打包工具 配置系统环境变量…...
算法-贪心算法简单介绍
下面是贪心算法视频课的导学内容. 目录 1. 什么是贪心算法?2. 贪心算法简单的三个例子:1. 找零问题2. 最小路径和问题3. 背包问题 3. 贪心算法的特点4. 贪心算法学习的方式? 1. 什么是贪心算法? 简单来说, 我们称以局部最优进而使得全局最优的一种思想实现出来的算法为贪心…...
1Hive概览
1Hive概览 1hive简介2hive架构3hive与Hadoop的关系4hive与传统数据库对比5hive的数据存储 1hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 其本质是将SQL转换为MapReduce/Spark的任务进…...
Linux SUID提权
文章目录 1. SUID/SGID2. 查找SUID文件3. SUID/SGID提权3.1 SUID配置不当3.2 SUID systemctl提权3.3 $PATH变量劫持 参考 1. SUID/SGID SUID(Set User ID)意味着如果某个用户对属于自己的文件设置了这种权限,那么其他用户在执行这一脚本时也…...
RabbitMQ确保消息可靠性
消息丢失的可能性 支付服务先扣减余额和更新支付状态(这俩是同步调用),然后通过RabbitMq异步调用支付服务更新订单状态。但是有些情况下,可能订单已经支付 ,但是更新订单状态却失败了,这就出现了消息丢失。…...
用plotly制作一条带颜色的时间轴,显示学习情况
前一篇文章我写到用matplotlib制作一条带颜色的时间轴,显示学习情况-CSDN博客,这是我在工作地方写的程序,我回家后发现家里的笔记本用不了matplotlib,所以我尝试用plotly这另外的模块也写一段程序,让我的程序能够回家使…...
MySQL:索引
目录 1.MySQL索引是干什么的 2.铺垫知识 3.单个page的理解 4.页目录 单页情况 多页情况 1.MySQL索引是干什么的 MySQL的索引是提高查询效率,主要提高海量数据的检索速度。 2.铺垫知识 操作系统与磁盘之间IO的基本单位是4kb。 数据库是一个应用层软件&#…...
Kylin: `GLIBC_2.34‘ not found
需要查看服务器GLIBC版本 strings /lib64/libc.so.6 |grep GLIBC_如果没有,有两种办法,一种是libc.so.6降级,但是这样很容易将服务器搞崩溃 所以可以尝试下载对应版本 glibc 打包编译,重新建立软连,下列是RPM资源可以…...
ASP.NET Core - 依赖注入(四)
ASP.NET Core - 依赖注入(四) 4. ASP.NET Core默认服务5. 依赖注入配置变形 4. ASP.NET Core默认服务 之前讲了中间件,实际上一个中间件要正常进行工作,通常需要许多的服务配合进行,而中间件中的服务自然也是通过 Ioc…...
【全套】基于分类算法的学业警示预测信息管理系统
【全套】基于分类算法的学业警示预测信息管理系统 【摘 要】 随着网络技术的发展基于分类算法的学业警示预测信息管理系统是一种新的管理方式,同时也是现代学业预测信息管理的基础,利用互联网的时代与实际情况相结合来改变过去传统的学业预测信息管理中…...
《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题
《零基础Go语言算法实战》 【题目 2-25】goroutine 的执行权问题 请说明以下这段代码为什么会卡死。 package main import ( "fmt" "runtime" ) func main() { var i byte go func() { for i 0; i < 255; i { } }() fmt.Println("start&quo…...
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测 目录 回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进的机器学习方法,用于处理…...
【OJ刷题】同向双指针问题3
这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:OJ刷题入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1…...
数据挖掘实训:天气数据分析与机器学习模型构建
随着气候变化对各行各业的影响日益加剧,精准的天气预测已经变得尤为重要。降雨预测在日常生活中尤其关键,例如农业、交通和灾害预警等领域。本文将通过机器学习方法,利用历史天气数据预测明天是否会下雨,具体内容包括数据预处理、…...
RAG 带来的一些问题
RAG (Retrieval-Augmented Generation) 提高了查询的准确性,但也引入了一些新的问题。主要问题集中在信息检索和生成模型的结合方式上,这些问题影响了系统的性能、效率和输出质量。以下是 RAG 带来的主要问题以及相应的解决方法。 1. 依赖外部检索系统的…...
大疆上云API基于源码部署
文章目录 大疆上云API基于源码部署注意事项1、学习官网2、环境准备注意事项3、注册成为DJI开发者4、下载前后端运行所需要的包/依赖前端依赖下载后端所需要的Maven依赖包 用到的软件可以在这里下载5、MySQL数据库安装安装MySQL启动MySQL服务在IDEA中配置MySQL的连接信息 6、Red…...
【Python系列】Python 中使用 pymysql 连接 MySQL 数据库进行数据查询
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...