计算机网络 Computer Networks​ 💻 期末复习总提纲

平时不学习,期末火葬场。 一周时间靠王道考研和各路 pdf 自学计网,留下的提纲都在这里了。全是干货。全文 pdf 可以在这里下载:http://cloud.billc.io/s/xNHarppQPGi3gSz 文章很长,建议在左侧打开目录导航。 水平有限,如有错误,敬请指正。祝你备考愉快。 Collected by Bill Chen, 2019.12, East China Normal University Chapter 1 Overview 7 - layer OSI Model 计算机网络:将分散的,具有独立功能的计算机系统通过通信设备与线路连接起来有完整的软件实现资源共享和信息传递 计算机网络是互联的,自治的 概念和组成 计算机网络的功能 数据通信 数据在信道上的传输 资源共享 硬件、软件和数据 分布式处理 多台计算机共同处理同一个任务 提高可靠性 负载均衡(多台计算机可以更亲密的沟通) 计算机网络的组成 硬件、软件、协议 工作方式 - 边缘部分、核心部分 功能组成 - 通信子网(OSI下三层通信子网)、资源子网网(上三层的处理) 分类 广域网WAN、城域网MAN、局域网WAN、个人区域网PAN 按照使用者分类:公用网、专用网(军队、政府、铁路、公安) 按照交换技术:电路交换、报文交换、分组交换 按照拓补结构分: 按传输方式:广播式、点对点 标准化 标准化相关工作 法定标准:Eg....

January 10, 2020 · Bill Chen

用 C# 和 OpenGL (SharpGL)加载点云与模型

Intro 这一次计算机图形学的作业要求是使用提供的 1.dat (数据点文件)和 2.txt (片面文件)内的数据加载出3D模型。在实现的过程中为了探索 OpenGL 的各种细节也增增补补了许多东西。 程序使用C# .Net Framework 4.5,OpenGL使用库SharpGL链接。这个库使用起来很顺手,获取了 OpenGL 实例之后并命名为 gl 就可以获得和在 C++ 中几乎一样的变成体验。 之前本来打算用 DirectX3d 12 做,奈何实在是太复杂,尝试了许久,用 100 行代码也就清空了一下画布。感受到 d3d 的强大的同时,也被狠狠地劝退了,回到了相对熟悉一些的 OpenGL。 Usage 数据文件 1.dat 和 2.txt 应当和程序放在同一个目录下。 使用 Render All 选项可以渲染所有内容, Render Dots Only 只渲染云点和坐标轴,Render Surfaces With Light 渲染光照和 3D 模型的混合。也可以直接在上面勾选需要渲染的内容。 勾选 Enable Auto Rotation 可以让模型自动绕 y 轴旋转。 取消勾选 Clear Before Repaint 可以在每一次渲染前不清空深度缓存,保留上一次的渲染数据。 Reset 选项将会清空画布并将视角重置为一个比较合适的初始值,重新调整窗口大小也会重新加载画布清空缓存。 Code 核心部分的绘制代码并不难,大概在以下几个函数中。其中有一些和交互相关的代码,逻辑也比较好理解。 private void Initialize() { gl = glCanvas.OpenGL; LookAtMatrix = new double[9]{200, 200, 200, -30, 20, 0, 0, 12, 0}; LightPosition = new float[4]{7....

December 2, 2019 · Bill Chen

ECNU 计算机系统 (CSAPP) 教材习题作业答案集

这里是华东师范大学计算机系统的作业答案。由于几乎每一年布置的习题都几乎相同,网上的答案又比较分散,就把自己上学期提交的作业pdf放上来了,供参考。 Download Link:http://cloud.billc.io/s/pk9pfAkcyF8br9E 另外,如果你需要LAB2-LAB4的实验报告的话,也可以翻阅我之前的博客,希望能够帮上打算进行肝脏爆破的你。 实在是不知道这个博客能放一些什么东西了。这学期选了三门专选,每天都在为作业奔波,想写的很多博客都没有时间完成。后面有空的话,把其他科目的作业也整理一下放上来好了。

September 23, 2019 · Bill Chen

深入理解计算机系统 (CS:APP) - 高速缓存实验 Cache Lab 解析

这个实验是这学期的第四个实验。作为缓存这一章的配套实验,设计得非常精妙。难度上来讲,相比之前的修改现成文件,直接写一个程序也更高了一些。需要注意的是检查程序在编译时开启了 -Werror,需要保证没有警告才能成功编译。 从官方文档得知需要完善 csim.c 和 trans.c 文件,第一个是模拟一个高速缓存的程序并从由 valgrind 程序生成的 trace 文件中统计 hit, miss 和 eviction 的数量。第二个文件需要优化矩阵转置程序降低程序的不命中度。 PART A 这一部分的核心是使用了一个结构体来模拟一个缓存行: typedef struct { int valid; ulong tag; clock_t time; } CacheLine; 再通过把缓存行在内存中动态分配成一个二维数组,实现模拟缓存的功能。并且使用了typedef CacheLine *CacheSet; 和 typedef CacheSet *CacheHead; 来让程序更整齐。输入来源于文件和命令行参数。可以用 getopt() 函数来解析参数。 各个函数的作用如下: CacheHead CacheInit(int S, int E) 为缓存动态分配内存; int CacheJudge(CacheHead cache, ulong index, ulong tag) 判断缓存状态,是否有效,标记匹配; void CacheEvict(CacheHead cache, ulong index, ulong tag) 执行 eviction 操作; void CacheTouch(CacheHead cache, ulong index, ulong tag) 执行读取操作,只更新时间戳; void CacheInsert(CacheHead cache, ulong index, ulong tag) 执行缓存写入操作; void Adder(int type, int num) 计数器,增加 hit, miss 和 eviction 的数量,并根据配置选择打印信息; void printByte(bytept h, int len) 逐字节以 16 进制打印内存数据; void Execute(CacheHead cache, char type, ulong address, int len) 主要的执行函数; int main(int argc, char *args[]) main 函数,读取参数,打开文件; 完整的程序代码如下:...

May 22, 2019 · Bill Chen

深入理解计算机系统 (CS:APP) 缓冲区漏洞实验 – Buffer Lab 解析

写在前面 这是 CSAPP 官网上的第 4 个实验 buflab,也是学校要求的第三个实验。这个实验比上一个单纯考查汇编语言使用的 Bomblab 要难许多,需要认真理解一下程序运行时对栈帧的操作。对于自学的学生,可以前往 http://csapp.cs.cmu.edu/3e/labs.html 下载,下载后能得到一个很详细的 pdf 文档,需要认真阅读才能知道作者想让我们干什么。做这个实验同样也啃了很久,花了十多个小时,不过也的确是对运行时栈的理解深刻了许多。 通过阅读官方文档,bufbomb 在运行时会调用 getbuff 函数: /* Buffer size for getbuf */ #define NORMAL_BUFFER_SIZE 32 int getbuf() { char buf[NORMAL_BUFFER_SIZE]; Gets(buf); return 1; } 缓冲区大小为32。一旦输入的字符超出32个就会出现segmentation fault,导致程序出现异常。而目标就是让程序出现异常,执行一些常规以外的代码。 这个实验就是利用程序溢出的漏洞来破解几个 level。 其中文件夹下的其他两个二进制文件hex2raw和makecookie分别用于将十六进制的字符数据转换成普通的字符串用于输入,和生成一个独一无二的cookie用于辨识作者。 根据官方文档,如果将答案存储在 exploit.txt 中,使用命令 cat exploit.txt | ./hex2raw | ./bufbomb -u bill 可以直接将字符串输入到 bomb 中验证答案。一个更有效的方法是: ./hex2raw < exploit.txt > exploit-raw.txt ./bufbomb -u bovik < exploit-raw.txt 文档中特别提醒到,每一个exploit.txt中的答案都应当以 0X0a 结尾,表示回车符结束输入。 在开始之前,使用objdump -d bufbomb > bufbomb....

May 7, 2019 · Bill Chen