数据链路层属于计算机网络的底层。数据链路层使用的信道主要有以下两种类型: 1.点对点信道 这种信道使用一对一的点对点通信方式。 2.广播信道 这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。 使用点对点信道的数据链路层 1.数据链路和帧 所谓链路就是从一个结点到相邻结点的一段物理线段,而中间没有任何其他的交换结点。在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。 数据链路则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须要有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 点对点信道的数据链路层的协议数据单元–帧。 数据链路层吧网络层交下来的数据构成帧发送到链路上,以及把接收 继续阅读 >>


陈苏扬 17/09/30 12:58:48
因特网 起源于美国现在已经发展成世界上最大的国际性计算机互联网。 一下是一些网络、互联网、以及因特网的一些最基本的概念: 1.网络又若干结点和连接这些结点的链路(link)组成。网络中的结点可以是计算机、集线器、交换机或者路由器等。网络和网络可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网。因此互联网是“网络的网络” 2.因特网是世界上最大的互连网。习惯上,大家把链接在因特网上的计算机都称为主机。网络把许多计算机连接在一起,而因特网则把许多网络连接在一起。因特网就是世界上最大的计算机网络。 因特网发展三个阶段 1.第一个阶段是从单个网络ARPANET向互连网发展的过程,1969年美国国防部创建的第一个分组交换网ARPANET最初只是一个单个的分组交换网。所有要连接在ARPANET上的主机都直接与就近的结点交换机相连。 2.第二阶段特点是建成了三级结构的因特网。1985年起,美国国家科学基金会NSF就围绕六个大型计算机中心建设计 继续阅读 >>


陈苏扬 17/09/28 00:15:19
从暑假留校开始到现在这么久还一直没有写博客,现在开始学习c++觉得有必要把每天学到的记录下来,这样也让自己学的知识更加深刻。 首先看得书不用说肯定是入门级c++ prime plus. 在入门c语言的时候就是看得c prime plus 觉得作者真的写的很细致,每一个知识点都值得细细钻研,现在学习c++自然也选择了c++ prime plus这本书作为入门。 第一章就是讲了c++的发展历史,还有和c语言的一些区别,当然真正开始学习还是从第二章开始的。 第二章 1.一开始看到最主要的区别当然是从scanf到了cin还有printf到了cout,总是使用起来有些不习惯,还是觉得格式化输入输出控制更精确,当然c++这种高级语言肯定也会有格式化输出输入,只是还在后面才会讲到。 2.在c++的开始也会看到一行using namespace std;这个也是和c语言不同,这个是使用了std名称空间的一些类。 3.在cout<<endl这个最后这个endl意思就是相当 继续阅读 >>


陈苏扬 17/09/25 21:40:49
学习第七章的时候,提到了进程和线程的区别。线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。在用户看来,多个线程是同时执行,但从操作系统调度来看,各个线程是交替执行。系统不停的在各个线程之间切换,每个线程只有在系统分配给它的时间片内才能取得CPU的控制权,执行线程中的代码。 线程创建 如果在主线程里面创建线程,程序就会在创建线程的地方产生分支,变成两个程序执行。这似乎和躲进程一样,其实不然。子进程是通过拷贝父进程的地址空间来实现的;而线程与进程内的线程共享程序代码,一段代码可以同时被多个线程执行。线程创建pthread_create(); 线程终止 Linux下有两种方式可以使线程终止。第一种是通过return从线程函数返回,第二种是通过调用函数pthread_exit()使线程退出,pthread_exit在头文件 pthrea.h中声明。 有两种特殊情况需要注意,一种情况是在主线程中,如果从main函数返回或是调用了exit退出主进程,则整个进程将终止。此 继续阅读 >>


陈苏扬 17/08/03 17:08:08
第七章项目Myshell 在写Myshell的时候,其实刚开始很多都不会,但是看着书上的解释,同时网上查阅资料,最重要的是问学长如何编写,慢慢的编写myshell也快了起来,虽然有很多的错误和bug,但是大部分在后面都等到了解决。 下面是一些我自己在写myshell的时候遇到的坑点: 1.首先是命令行参数的解析,这是一开始就容易错的地方,也让我花费了很多时间。 2.readline库函数,在使用的时候按下删除健就把一行都删除掉了,我的myshell前面的提示符也都一起删除掉了,我解决的方法是在readline函数调用的时候,在里面加入了一个字符。 3.cd命令实现的时候,一开始我是在子进程中实现cd命令,但是程序执行的时候使用cd命令的时候,程序没有报错也正常执行,但是在使用pwd查看当前工作目录的时候却发现,当前工作目录还是没有改变。最后在父进程改变工作目录后,程序的工作目录才发生改变。 4.追加重定向实现的时候,如果文件不存在应该新建,还有就是文件权限的问题。 继续阅读 >>


陈苏扬 17/07/31 09:45:20
进程控制 Linux进程 1.进程是一个动态的实体,是程序一次执行的过程。进程和程序的区别在于进程是动态的,程序是静态的,进程是运行中的程序,程序是一些保存在硬盘上的可执行代码。 线程是比进程更小的能独立运行的基本单位,线程是在进程内部。一个线程可以创建和撤销另一个线程,同一个进程中可以有多个线程并行执行。 2.Linux操作系统中,每个进程都是通过唯一的进程id标识的。而这个id是一个非负数,每个进程除了id还有其他的标识信息,可以通过相应的函数获得。这些函数在unistd.h头文件中。 pid_t getpid(id) 获得进程id pdi_t getppid(id) 获得进程父进程的id pid_t getuid() 获得进程的实际用户id pid_t geteuid() 继续阅读 >>


陈苏扬 17/07/27 15:25:40
留校第一周 1. 因为开始没有linuxC编程实战这本书 所以刚开始就看了鸟哥这本书,然后又看了看java,本来是在纠结先学C++还是java,但是毕竟下学期开学就要学java所以还是先学了java,然后在南阳理工上面新申请了一个帐号专门用java解题。 2. 熟悉了github使用还有makefile的基本用法。 3. 礼拜三linuxC编程书到了,于是就开始看第六章文件操作,书上的小项目首先基本都在电脑上敲了一遍,一些基本的函数也有了了解。 4. 在礼拜六的时候开始动手写自己ls程序,但是最后-R参数有些问题,递归深度有些问题。 5. 还要说的是 这周写了一个自动签到的python脚本,可以自动签到小组。:) 6. 礼拜天放假一天,跑去乐华水上乐园玩了一圈,但是也被晒的有些懵。 心得: 第一次暑假留校,可能是因为家就在西安所以有时候可以回家吹吹空调,所以第一周也算过的挺充实,希望后面几周也可以继续。 继续阅读 >>


陈苏扬 17/07/23 23:21:10
Github好处 Github其实我在一开始用的时候很不习惯,因为之前习惯的存在电脑上,如果要备份也是用U盘备份,因为觉得全部命令解决还是太麻烦,可能是多年被windows“毒害”,但是知道真正明白github的威力才知道,原来github有这么多好处,不仅可以充当U盘的功能,还可以完全开源让所有人都可以看到,可以提出不同的见解。尤其还可以版本控制,可以任意恢复到想要的版本。其实github还有更多的强大功能,但是现在以我的水平还接触不到。但是可以从现在开始习惯使用github,为以后打好基础。 以下是我为了以后方便记,也是为了更快上手github记录的一些基本用法。 1.首先要注册一个github帐号,这些都是必须的。然后为了以后使用方便,所以需要配以下SSH Key方便以后免密登陆。 ssh-keygen -t rsa -C "hellochen19970916@gmail.com" 上面是我的邮箱地址,千万不要写成我的了。:) 然后在用户主目录中找.ssh目录,里面有id_rsa和id 继续阅读 >>


陈苏扬 17/07/17 16:17:22
偶然之间看到了一篇文章 就是讲解了linux中的一些炫酷的命令 1.pv命令 有时候我们在电影屏幕上看到一些字幕一个个匀速显示出来,像有人在边敲键盘,边显示一样。Linux上的pv命令可以实现这种效果。 默认情况下,Linux是没有pv命令的,需要自行安装。 首先安装命令: yum install pv [On RedHat based Systems] sudo apt-get install pv [On Debian based Systems] $ echo “Tecmint[dot]com is a community of Linux Nerds and Geeks” | pv -qL 10 将上面的代码打一遍,就会发现神奇的事情。 2.toilet命令 toilet命令能够将输出的文本添加边框。 可以通过yum或者apt-get安装toilet命令。 运行如下命令: whi 继续阅读 >>


陈苏扬 17/06/22 11:17:34
linux下的sed grep awk 可以说是入门linux命令的最强大的命令其中一些,尤其对于熟悉linux 和快捷方便的使用linux,同时也是比windows更加高大上的体现。 sed sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的s 继续阅读 >>


陈苏扬 17/06/14 21:14:32