写在前面:
本文是对计算机网络课程的系统性复习,参考了课堂PPT、计算机网络(第7版,谢希仁编著)、王道考研B站公开课以及考研指导复习书。
计算机网络是什么?
现在已经进入了网络时代,网络的使用无处不在。现在的网络叫做泛在网络 ,计算机网络是其基础。
计算机网络是指 将地理位置不同(中日美) ,功能相对独立 (手机、电脑功能是独立开来的,操作系统不同) 的多个计算机系统通过 通信线路(数据传输方式) 相互连在一起。由专门 网络操作系统 管理,实现 资源共享、互通信息。 总之,计算机网络是一个将 众多分散的、自治的 计算机系统,通过 通信设备与线路 连接起来
计算机网络向用户提供的最重要功能:连通性、共享 。在考研题中 ,数据通信是计算机网络最基本和最重要的功能。
计算机、手机就是一个个结点;网卡(网络适配器)等就是链路。
因特网(互联网):雏形是阿帕网。网络的网络就是互联网,网络是把计算机连在一起,因特网是把许多网络连在一起。
Internet(因特网or互联网):开放的、全球最大的,由众多互联网互联的网络。
internet(互连网):学校、银行内网。
各网络之间需要用路由器来连接,计算机与计算机之间进行信息交流需要通过这个计算机网络。
ISP:泛指提供ip地址的网络服务商。
万维网(www)被广泛使用在了因特网上,极大方便了非网络专业人士的网络使用。(从指令到人用语言)
计算机网络有什么要求?
1.语言要求:所有计算机只能讲二进制语言(中日美三个国家的人之间要通信,那么就需要一种语言所有人都能看懂)
2.规则要求:tcp/ip协议(他们三一起斗地主,那么就需要一个统一的规则)
3.审核网络相关规则的地方:iso(因特网协会)
因特网工作分为两个部分:边缘部分(负责用户通信、传输数据等)、核心部分(提供连通性和交换)
从功能组成来看,计算机网络由 通信子网和资源子网组成。通信子网由各种传输介质、通信设备和网络协议组成;资源子网实现资源共享功能,向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源的服务。
计算机的通信方式有?
两种通信方式:一对一交流(P2P方式/对等方式)peer-to- peer
一对多交流(C/S方式)client/server
服务器软件方式:凡是服务器,需要 一直不断地运行,被动地等待 接受来自各地客户的通信请求。(嗯?!机魂不悦,竟然连服务器都得996)
在网络核心部分起特殊作用的是 路由器 ,路由器是实现不同网络的 分组交换。
电路交换(打电话):
建立连接(打电话给别人),通信,释放连接
对于电路交换来说,无论是无线连接(电波)还是有线连接,这根线(频道)就被占用了,被第一个用户占用了以后,只能等不被占用了,第二个用户才能使用。
因此,假如有5个电话,那么需要10根电线
为了解决这个问题,交换机就被创造出来。线路被很大地减少了,成本就降低了。但是交换机(把一条电话线插到另一条电话线上)需要有人来管理、插线等,通信资源依旧紧缺。
报文交换:
采用储存转发的方式(由于需要储存,再能够发送,资源分享所花的时间变长,效率降低),不需要建立连接;随时发送,但需要加上双方地址信息;所经路径、发送与接受顺序都可不同。
分组交换(important) :
分组交换的类比:5个坑,1把铁铲,每个坑同时挖1铲,再同时挖1铲...由于铁铲运行速度极高,所以可以让几个坑看起来是同时被挖的。
分组交换那些事:
不影响通讯效率。分组交换就是在发送端,先把报文划分成好几个固定长度、较短的小段。
每一个分组首部都含有地址等控制信息,交换机(路由器里会包含一个以太网路由器)根据收到的地址信息,把信息送到下一个结点。
因此,分组交换往往是高效、灵活、可靠的。
条条大路通罗马,至少是路,分组交换模式下,哪条路是最快的,占用率最低的就走哪条(高德地图持续为您导航)
数据段的传输是重叠的,因此不同数据段的传输时间只需要算一次(这就像是我坐在教室里,听计算机网络课;一节课45分钟,我和老师一起,总共花了45分钟;而不是老师用了45分钟,我又用了45分钟;什么平行时空啊喂)
还有些小小的问题:
- 分组在各结点存储转发时需要排队,这就会造成一定的时延。
- 分组必须携带的首部(里面有必不可少的控制信息)也造成了一定的开销。
题外话:
1k=1024=2^10
1M=1024*1024=2^20
1G=1024*1024*1024=2^30
......
32位/64位的区别:32位机器指的是处理器中一共有32地址线,每条地址线都可以通过0或1,因此最后可以保存的最大数据为2^32;64位同理,可以存放的最大数据为2^64.
但64位机器的内存现在只需要4G内存条,因为操作系统的强大(谢谢你,微软)
网络分类:
按照网络的作用范围分类
一共可以分为WAN(Wide Area Network)、MAN(Metropolitan Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)4个。what can I say?
按照网络的使用范围
公用网:公用网的ip地址可以重复使用。
专用网:IP地址重复使用。(学校专用网,学校的内部ip地址,ip地址是独一无二;因此我们在学校外使用学校官网,得用vpn来把ip地址换掉)
按网络的拓扑结构来分分为了 总线型结构、星型结构、环形结构和网状结构四种。
按传输介质(了解即可)
分为有线网络和无线网络。有线网络有双绞线网络、同轴电缆网络等,而无线网络又可分为蓝牙、微波、无线电等类型。
计算机网络的性能(important):
1.速率:
bit:来源于binary digit,二进制数字
速率往往是指额定速率,也可以称为 数据传输速率、数据传输率、数据率或比特率 ,写作b/s 或者bit/s 或者bps(bit per second)。
定义:每秒跑的比特数
注:在计网题目中,没有明确声明时,单位换算不是*1024,而是*1000。
2.带宽:本来是信号具有的频带宽度,单位是赫;现在"带宽"是数字信道 所能传送的 **"最高数据率"**的同义语,单位是"比特每秒",或 b/s (bit/s)。
此处的数字信道指的就是 链路和链路所链接的2个结点。
3.吞吐量:吞吐量(throughput)表示在单位时间内通过某个网络的数据量。吞吐量常用在对实际网络的测量中,受网络带宽的限制。(1000Mb/s的路由器,碰上了100Mb/s接受速度的手机,最后的传输速率还是100Mb/s)
4.时延(important):由4部分组成。分别是 发送时延(传输时延)、传播时延、处理时延和排队时延 。
2条重要公式 (可以通过 速度-时间 公式来联想记忆):
发送时延=分组长度/发送速率 传播时延=信道长度/电磁波在信道上的传播速率
易于做题的公式:
一整组完整数据的发送时延=总传输数据长度/发送速率
上图罗列了三种数据交换方式的示意图,接下来笔者将对其进行详细介绍。
上图为电路交换,即电话通讯的信息交换方式。上图中,每一小格代表1ms;红色圈圈代表的是传播时延,蓝色圈圈代表的是建立连接的耗时,接受方处理连接请求用了2ms,然后开始传输。返回与传输因为也存在传播时延,所以需要加上。
这边需要注意的是,最后一条报文信息发送出去之后,连接释放操作同时开始了。
对于报文交换来说,传播时延和每小格代表时间不变,此时所需花费的时间是三次报文的发送时延+三次报文的存储转发时延+三次报文的传播时延。时间花费巨大。
上图是分组交换。有了4个分组,分组1发到第二结点以后,分组2就继续开始发送了;当分组2到第二结点后,分组3......(循环这一操作)。**这边需要注意的是,因为分组以后数据较小,因此不再需要长时间的存储转发操作。**各个分组的传输都是重叠的,因此时延只需要算一次。
对于这种题,笔者自创了一个名为虚线实线法。大致方法如下(以上图为例):
第1步:该方法需要把所有代表结点的实线去除。
第2步:每次计算完一部分内容,就在草稿纸上做上记号。整个图其实是个参数为时间的y轴,分组图形的左右两边实际上是相等长度的(时间相同),会画成菱形的感觉是因为传播时延的存在。
第3步:找到整个数据传输的开始端点,然后在开始端点所在的水平方向为画一条虚线;并在整个数据的结束端点重复该操作。计算时延时,每统计完一段,就加粗划实线进行标注。然后统计完某一段之后,在统计结束处**(结束处一般选在某个分组的接受端点)**划上一条虚线,然后不断重复该操作。正是因为排队处理时延的存在,分组1和2才会有间隙,要不然不会存在。因此分组与分组的间隔应该是排队时延,而分组4与统计结束貌似还有一段时延,这段时延并不是排队时延中的一小段,排队时延应该是分组3和分组4的间隔段(已用虚线标出,为了便于讲解做题时可以不使用)。
那么这一小段到底是什么呢?实际上是传播时延。假设从旁边那条虚线开始计算时延,那一小段就到最上面去了,而两个圈圈所代表的两个端点指的是一条数据的传播和接受,传播和接受的那条线出现向下的情况(即有时延),很好理解其实就是因为传播时延。同时,左边实线划的那一段实际和右边虚线划的那一段长度相等,因此那两小段长度也相等。因此,那一小段就是传播时延。
并且可以将这种情况扩展到一般情况:分组的上下边(无论哪一条)和该分组的紧邻虚线形成的小段时延,都是传播时延。 这也是为什么统计结束处要选在分组的接受端点。那么,此处的时延不难看出:应该是**4个分组的发送时延(一次完整数据的发送时延)+3段排队处理时延(下面3段)+1段传播时延。**接下来进行同样的操作,再困难的题相信都能迎刃而解了。
剩下的时延应该是:2个分组的发送时延+2段排队处理时延+2段传播时延。
上述办法如果碰到了大量的分组数据(例如有1000个分组),可以通过省略号进行省略处理。
5.时延带宽积:
指发送端发送的第一个比特即将到达终点时,发送端已发出了多少比特。
公式:时延带宽积=传播时延×信道带宽
可以类比成水管来记忆,如下图所示。
6.往返时延(RTT):
表示从发送方发送完数据,到发送方接收到来自接受方的确认总共经过的时间。
例如游戏延迟,反应的就是"手机------服务器"之间的往返时延。
7.信道占用率:
指的是某个信道有百分之多少的时间是有数据通过的。
信道利用率=(有数据通过的时间)/ ((有数据通过的时间)+(没有数据通过的时间))
利用率不能太低,浪费资源;也不能太高,容易导致网络堵塞(可以类比成高速公路)
计算机网络的分层结构:
计算机网络是一个非常复杂的系统,要完成以下诸多功能:
因此,我们可以通过分层来进行拆分解决。
在上图中,我们将第n层的活动元素(软件+硬件)称为第n层实体。不同机器上的同一层称为对等层 ,同一层的实体称为对等实体 。协议 是用来约束对等实体之间的通信的,是水平 的。下层实体通过接口为上层实体提供服务,这是垂直 的。并且这种服务是**"透明的"**,即说明这种服务是高效且无差错的,使用者在使用时感觉不到,即感知不到数据被压缩、解压的过程。(就像刷抖音,我刷了2个小时也感觉不到网络有做什么传输传播工作)
在教学中,一共分为了5层。但在实际应用中,TCP/IP模型实际上只有4层(网络接口层 = 物理层+数据链路层)。当然还有个称为OSI参考模型的,但因为不好用就被淘汰了(好可怜的模型)。OSI模型相当于要求运货和装卸货都检查一下货物有没有问题,但tcp模型相当于只负责运输然后再由接收方另外检查有没有问题。
**注:上图中的蓝色字体部分是TCP/IP模型与OSI参考模型不同的地方,划掉的是TCP/IP模型简化的,未划掉的是TCP/IP模型增加的,黑体字两者都有的,**记忆方式(OSI:物链网输会示用、五层模型:物链网输用、tcp/ip模型:接网输用)
协议由语法、语义和同步三部分组成。以C语言为例,语法就是C语言本身,语义就是int、库函数、#include等所表明的含义,同步就是C语言从int main开始执行到return 0(而不是从return 0 执行到int main)。
各层数据传输单位: