- 博客(79)
- 收藏
- 关注
原创 3.4_1 流量控制、可靠传输与滑动窗口机制
我们先解释一下WT和WR的含义,这的W 就是Window,也就是指窗口的意思,T的含义来自Transmit,它具有发送传输的含义,接收窗口的 R,它是来自于Receive,它有接收、收到的含义。先大致说一下第一种协议,停止等待协议它的发送窗口大小为1,接收窗口的大小也是1,第二种协议,后退n帧协议的发送窗口大于1,而接收窗口的大小等于1,最后一种选择重传协议,它的发送窗口和接收窗口的大小都会大于1。因此,接收方控制了这个发送窗口的滑动,也就顺理成章的控制了这个流量,或者说控制了发送方发送帧的速度。
2025-06-12 18:15:22
309
原创 3.3.2 纠错编码(海明校验码)
在这一小节中,我们会继续探讨海明校验码,海明校验码又可以称为汉明教验码,这只是一个音译的问题,因为发明这个校验码的人叫理查德 汉明,也正是因为发明了海明码,对于信息纠错这个领域的贡献十分巨大,所以这个人获得了1968年的图灵奖。这一小节中,我们会首先介绍海明码的基本实现思想,然后再来介绍怎么构建海明码、怎么使用海明码来进行校验。首先我们从奇偶校验出发,这种校验的思想很简单,对于n个有效的信息位,我们只需要在首部或者尾部添加一个奇校验位或者偶校验位,用这样的方式构成奇偶校验码。比如对于偶校验来说,四个信息位1
2025-06-11 20:45:24
718
原创 3.3.1_2 检错编码(循环冗余校验码)
这小节中我们要学习循环冗余校验码,英文缩写叫CRC码。这个小节中,我们首先会介绍CRC 码的基本思想,然后介绍如何构造,如何使用也就是如何检错和纠错。首先来看一下这种校验码的基本思想。我们从大家熟悉的十进制出发,假设现在你要给另一个人传送882这样的一个十进制数据。为了防止传送数据的过程中,某一个数据位发生错误,你可以和你的另一个小伙伴约定一个除数,比如说是7,882÷7 刚好是除的尽的,最后我们算得的余数应该是等于0。当数据的接收方接收到数据的时候就可以用它接收到的这个数据和你们约定的除数进行一个除法操作
2025-06-11 17:01:43
370
原创 3.3.1_1 检错编码(奇偶校验码)
在计算机网络中,发送方给接收方发送一个帧,那么发送方的数据链路层,会在帧的数据部分添加这个校验位的信息,然后把校验位和信息位一起发给接收方,而接收方的数据链路层又会基于奇偶校验的规则去检查整个帧有没有出错。此时对所有的比特进行异或运算,得到的结果就是1,结果为1,说明出现了比特错误。当两个比特进行异或运算的时候,只有二者相异的时候,计算的结果才等于1,否则为0,当我们采用偶校验规则的时候,数据的接收方会把所有的信息位和校验位全部进行异或,如果异或的结果等于0,说明没有错误,如果等于1,说明有错误。
2025-06-10 21:03:42
803
原创 3.2 组帧
在这个视频中,我们要探讨数据链路层组帧的原理。我们说数据链路层在网络层的下方,它为网络层提供服务,网络层会把 IP 数据报,也就是分组,交给数据链路层,请求数据链路层,然后传送给下一个相邻的节点,下一个相邻节点的数据链路层,需要从收到的帧当中恢复 IP 数据报的原始数据,然后把IP 数据包交给第三层的实体进行下一步处理。数据链路层把网络层交给他的这些数据打包成帧的过程就是所谓的组帧,也就是封装成帧。考研大纲里边使用的是组帧这个说法。要把数据封装成帧,主要要解决两个问题。第一个问题就是帧定界,也就是我们应该想
2025-06-10 20:12:41
685
原创 3.1 数据链路层的功能
我们一起来梳理一下,首先数据链路层需要实现的第一个功能叫做组帧,又可以称为封装成帧,也就是把网络层交给他的一坨数据封装成一个帧,那么封装成帧主要需要解决两个问题。下一个相邻节点的物理层会收到这些二进制比特串,并把这些二进制比特串交给第二层数据链路层进行处理,这个数据链路层实体需要还原出 IP 数据报的信息,并且把 IP 数据报交给第三层的实体。对于数据链路层来说,网络层委托给它传输的数据,就是数据链路层的SDU,SDU的数据被封装成帧后,首先会增加首部尾部这些控制信息。这儿的介质指的就是物理传输介质。
2025-06-10 18:05:17
761
原创 2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给B节点发送一些数据。这些数据经过各层协议逐层处理之后,最终在物理层这儿会把这些二进制数据转换成信号,然后发送到这个传输介质上。比如物理层可以采用曼彻斯特编码的规则,把二进制数据编成电信号,并发送到同轴电缆或者双绞线上进行传输。这些信号传输的距离越远,它就越有可能会失真。本来刚开始你传的是最左边
2025-06-09 20:13:05
513
原创 2.2 传输介质
在这个视频中,我们要探讨传输介质相关的考点。transmission medium是传输介质的英文术语,在有的地方也会把它翻译为传输媒体。考研大纲要求我们了解常用的一些传输介质,包括导向型的和非导向型的。导向型指的是信号是朝着固定方向去传播的,通常来说,有限传输介质就是导向型的。因为信号只能沿着线缆的方向去传播,导向型的传输介质我们需要了解双绞线、同轴电缆和光纤这三种材质。所谓非导向型的就是信号会朝四面八方传播。一般来说,无线通信就属于非导向型的传输介质。在无线通信当中,通常会以电磁波作为信号,而电磁波可以
2025-06-09 18:41:33
871
原创 2.1.3_2 编码和调制(下)
第四种幅值表示11。同样的,我们把这样的一个信号周期长度看作是四派,所以在第一个周期内,如果我们用正弦波去表示的话,那这个信号值 y 和时间 t 之间的关系应该刚好就是 y 等于sin x,四派的信号周期内,如果正弦波呈现出这样的特性,我们就认为它对应二进制0。这是因为我们是通过调整相位去区分不同的信号的,所以这种调制方法就叫做调相,英文缩写是PM,调相还有一个别名叫做相移键控,英文缩写叫PSK,这里的P指的就是相位的意思,大家可以自己去搜一下这个英文单词。这里的 x 指的是时间,而 y 指的是信号的值。
2025-06-08 20:10:06
955
原创 2.1.3_1 编码和调制(上)
在这个视频中,我们要学习编码和调制技术,首先我们会介绍编码、解码、调制、解调的概念。以及会介绍五种常用的编码方式,还有四种常用的调制方式。首先来认识什么叫编码、解码、调制和解调。通过之前的学习,我们知道信源会通过信道给信宿发送信号。信号是数据的载体。对于计算机网络来说,所谓的数据通常就是二进制的数据。信号有两种类型,一种叫数字信号,值是离散的,一种叫模拟信号,值是连续的。接下来我们要在这个通信系统当中补充两个部件,一个是变换器,一个是反变换器。前者会把二进制数据转换为信号,有可能是数字信号,也有可能是模拟信
2025-06-08 17:27:03
486
原创 2.1.1 通信基础的基本概念
经过第一章的学习,我们认识了 osi 参考模型和 TCP/IP 模型。分别采用了七层结构的设计和四层结构的设计,现在的互联网世界采用的是 TCP/IP 模型,所以 TCP/ IP 是事实上的标准。它的第一层网络接口层和 OSI参考模型的第一层以及第二层功能上是类似的。 TCP/IP 模型对于网络接口层的功能定义的并不是特别的详细,相比之下 osi 参考模型对于物理层和数据电路层的功能定义,协的设计都会更加的完善。所以当我们初学者在学习计算机网络的时候,通常会把 osi 参考模型的第一层和第二层以及 TCP/
2025-06-08 11:50:31
850
原创 Linux环境基础开发工具使用
linux下安装软件有三种方案:1.源代码安装(在linux下比较常用,在其它地方不常用)2.rpm安装(linux安装包,不推荐,相当于套娃式安装)3.yum安装--解决安装源的问题(也就是不用知道软件在哪下的,只需知道软件能下载下来),--安装版本,--安装依赖。也就是说yum会自动安装符合版本的软件。yum安装之前,一定要看看软件列表,
2025-04-08 18:58:48
671
1
原创 1.1 计算机网络的概念
不知道大家有没有办过宽带业务,在开通宽带的那天会看到那个师傅会把一根网线接到你家的这个路由器上,这根网线的一头接的是你家的路由器,这根网线的另一头最终肯定会接到这个公司的某一个商用路由器上,这样就把你们家的内部网络和整个互联网连接起来了,只要你按时交网费你就可以在家里上网,所以平时我们说的上网这个动作,其实这个网指的是互联网也就是因特网。这就是一个典型的互联网,像银行这种机构它的内部数据都是非常敏感的都是直接和钱挂钩,所以为了保证银行内部数据的安全性,通常来说他们会构建一个专属于自己的内部网络。
2025-03-27 11:31:49
1326
原创 Linux下基本指令(4)
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
2025-02-21 22:15:31
876
原创 Linux基本指令3
在Linux中,如果我们想显示时间,就用date指令。date 指定格式显示时间: date +%Y:%m:%ddate 用法:date [OPTION]... [+FORMAT]
2025-02-09 18:19:17
844
1
原创 Linux基本指令2
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令man ls查看ls指令更多的说明。man man:man指令就是一个接口或者一个在线的手册。常用选项-k 根据关键字搜索联机帮助num 只在第num章节找-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。解释一下,面手册分为8章。
2025-02-04 15:35:59
637
原创 1.2.3计算机软件
需要引入一个概念叫做指令集体系结构,英文缩写叫ISA,指令集体系结构规定了软件和硬件之间的界面,当我们在设计一个计算机系统的这个指令集体系结构的时候,要定义这台计算机可以支持哪些指令以及每条指令的作用是什么,每条指令的用法是什么,也就是要清晰的定义软件和硬件之间的界限,既然软件和硬件在逻辑功能上都是等价的,我们可以用两种方式来实现同样的逻辑功能,并且采用软和硬两种方式实现所带来的性能以及成本的高低都各有利弊,所以在设计计算机系统的时候二者之间的界限需要被清晰的划分和定义,既要考虑性能问题也要考虑成本问题。
2024-12-11 23:48:20
749
2
原创 1.2.2(补充)_各个硬件的工作原理
这个小节我们要做的事情是来看一看我们主机内部的这三个硬件部件,它们的一些内部细节以及它们之间是如何协调着来工作的?那我们先看主存储器,之后看运算器,最后是控制器。主存储器里边用于存放数据的东西叫做存储体。存储体是由一系列的存储元件来构成的,可以存放二进制0或者1。除了存储体之外,还有两个重要的寄存器(MAR、MDR),分别是存储地址寄存器、存储数据寄存器的一个英文缩写,寄存器是用来存放二进制数据的。只不过这两个寄存器,它们存放的数据各不相同,MAR是存放和地址相关的一些二进制数据,MDR是用于存放实
2024-12-01 10:54:25
632
2
原创 1.2计算机系统层次结构
解决方案就是现代计算机的一个结构,传统的冯诺依曼结构的计算机都是以运算器作为核心数据的,传输都需要通过运算器作为中转,现代计算机通常是以存储器为中心,也就是说输入设备的数据是直接放到这个存储器里边的,当运算器处理完这些数据之后输出设备会直接从存储器当中取走最终的数据进行计算结果的输出,就可以更多的解放运算器的时间,让运算器进行更多的运算,我们现在使用的手机计算机基本上都是这样的一个结构。华为手机它这儿所谓的运行内存8GB指的就是主存储器的大小,容量是8GB 机身存储是128GB,这个指的就是辅存。
2024-11-30 15:58:47
1238
原创 1.1_计算机发展历程
计算机系统 = 硬件 + 软件两大部分组成,硬件(计算机的实体),包括:主机、外设(鼠标、键盘、显示器)。软件就是我们看得见但是摸不着的,操作系统就是软件,微信、微博也是软件。硬件是计算机系统的物理基础,决定了这个计算机系统它的天花板瓶颈在哪,软件决定了我们可以把这个硬件的性能发挥到什么样的程度。所以计算机性能的好坏取决于软、硬件功能的总和。系统软件包括:操作系统、数据库管理系统(DBMS)、标准程序库(编程的时候使用的那些库函数)、网络软件、语言处理程序、服务程序。解释:网络软件就是实现
2024-11-30 00:39:32
1014
1
原创 01.第一章计算机系统概述
CPU其实就是这样的一个小东西(如图CPU的正脸),CPU的的背面,有一个一个小的金属的针脚,我们可以把 CPU 插到电脑的主板上,可以看到主板上也会保留这样的一个专门用来插 CPU 的空间。内存条如图中内存条的样子,电脑主板会有图中红色圈出的一个一个的卡槽,有的卡槽上边就是用来插入我们的内存条的。传递二进制信息其实本质上就是在释放高电平或者低电平这样的一个电信号,电路板上有很多很多条的电路,可以同时的往外发送或者接收电信号,也就是可以同时传递多个二进制数位,每一个二进制数位,我们把称为一个比特的信息。
2024-11-29 21:25:08
626
原创 探索C/C++的奥秘之C++中的继承
被继承的类Person是父类,也称作基类。Student是子类,也称作派生类。继承代码演示:public:protected:// 姓名//年龄protected:int _stuid;// 学号protected:int _jobid;// 工号int main()Student s;Teacher t;s.Print();//可以使用基类中的成员函数和成员变量t.Print();return 0;
2024-11-28 15:56:52
986
3
原创 探索C/C++的奥秘之stack和queue
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。具体什么是适配器呢?其实就是由现有的东西进行转换,转化出我要的东西。container adaptor就是适配器,2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。
2024-11-21 20:30:15
735
32
原创 探索C/C++的奥秘之list
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。
2024-11-20 14:09:53
3288
102
原创 探索C/C++的奥秘之vector
1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小 为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2024-11-17 19:35:48
1120
4
原创 探索C/C++的奥秘之string类(二)
常规情况下,流插入和c_str()是没有差别的,有一种情况下是有差别的,c_str()是返回C型的字符串,c型字符串是怎么打印的呢,相当于打印的是一个内置类型,内置类型也就相当于打印的const char* ,const char*打印的原则是遇到“\0”就终止了,而流插入的重载,不管\0,跟\0没有关系,它用范围for或者size()的长度去走,长度是多长,实际就要打印多长。// //capacity不包含\0,一般不包含,因为capacity指的是能包含多少个有效字符,\0不是有效字符。
2024-11-13 13:13:04
990
2
原创 探索C/C++的奥秘之string类
string叫串,是一个管理字符数组的类,其实就是一个字符数组的顺序表,通过成员函数对字符串进行增、删、查、改。C++标准库里面的东西都在std这个命名空间中。return 0;
2024-11-06 17:47:04
1039
4
原创 探索C/C++的奥秘之STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。io流不是STL的,是C++库里面的东西,
2024-10-28 09:19:37
362
6
原创 探索C/C++的奥秘之模板初阶
class 类模板名// 类内成员定义类模板无法通过推演实例化,必须要显示实例化。// 类模板public:_size = 0;_size++;int _size;惠普的实验室里面产生了STL,STL叫标准模板库,实现的是常见的数据结构和算法,也是常见的数据结构和算法的库。
2024-10-28 00:23:31
624
3
原创 探索C++的奥秘之C/C++内存管理
new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理1. 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申 请2. 在申请的空间上执行N次构造函数delete[]的原理。
2024-10-27 18:53:23
968
1
原创 探索C++的奥秘之类和对象(下)
注意:1. 每个成员变量在初始化列表中最多只能出现一次,不出现也是可以的(初始化只能初始化一次)2. 类中包含以下成员,必须放在初始化列表位置进行初始化:引用成员变量const成员变量自定义类型成员(且该类没有默认构造函数时)class Apublic://{//}A(int a):_a(a)private:int _a;class Bpublic://初始化列表:_n(a),_ref(ref)
2024-10-24 21:12:09
788
3
原创 类与对象(中)
class Datepublic:private:int _year;int _month;int _day;int main()Date d;d.Print();return 0;
2024-10-18 11:16:10
596
1
原创 类与对象(上)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。cpp中一般长的函数就会声明和定义分离,短的函数直接在类里面定义。
2024-10-17 01:37:59
882
3
原创 1.C++入门基础(补充)
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。1.正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。// ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个// test.h。
2024-10-13 08:36:02
1010
2
原创 Linux下基本指令
登录系统输入sshroot@,在@后面输入ip公用地址,按下enter键,会弹出一个密码框,输入密码即可登录成功。Xshell下Alt+enter全屏,再重复操作是取消全屏。clear清理屏幕。
2024-10-12 17:33:20
1125
原创 Python基础语法(3)下
编程中,经常需要使用变量,来保存/表示数据。如果代码中需要表示的数据个数比较少,我们直接创建多个变量即可num1 = 10num2 = 20num3 = 30......但是有的时候,代码中需要表示的数据特别多,甚至也不知道要表示多少个数据。这个时候,就需要用到列表就像我们去超市买辣条,如果就只是买一两根辣条,那咱们直接拿着辣条就走了,但是如果一次买个十根八根的,这个时候用手拿就不好拿,超市老板就会给我们个袋子,这个袋子,就相当于列表。
2024-09-15 19:23:05
1578
118
原创 Python基础语法(3)上
编程中的函数和数学中的函数有一定的相似之处.数学上的函数,比如 y = sin x,x 取不同的值,y 就会得到不同的结果编程中的函数是一段可以被重复使用的代码片段代码示例:求数列的和,不使用函数# 1. 求 1 - 100 的和theSum = 0# 2. 求 300 - 400 的和theSum = 0# 3. 求 1 - 1000 的和theSum = 0可以发现,这几组代码基本是相似的,只有一点点差异,可以把重复代码提取出来,做成一个函数。
2024-09-14 22:11:05
1689
43
原创 Python基础语法(1)下
本章节中我们学习了 Python 中的最基础的语法部分常量变量类型:整数、浮点数、字符串、布尔值注释输入输出运算符:算术运算符、关系运算符、逻辑运算符、赋值运算符当前我们的代码还只能进行一些简单的算术运算,下个章节中我们将学习 Python 中的逻辑判断, 然后我们就可以写稍微复杂一点的程序了。
2024-09-12 01:12:11
1615
50
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人