计算机是人类社会不可或缺的工具,而单独的一台计算机的功能也是有限的,计算机需要和其它的设备相互连接通信形成的计算机网络才能对人类发展带来巨大的影响。
目录
计算机网络
通信协议
网络结构
网络边缘
接入网
网络核心
时延和吞吐量
时延
吞吐量
分层网络结构
应用层
运输层
网络层
链路层
物理层
结构封装
计算机网络
我们知道,老式的座机电话要想打电话需要拉电话线,而各台电话之间互相拉线连成一个通信网络。类似地,计算机之间通信也需要形成计算机网络。一个网络的要素包括节点和边,每一台电脑或者一个路由器/交换机等可以当作节点,而主机连到路由器/交换机的光纤、电缆等链路就是边。
其中细化节点可以分为两种:
1、数据发送和接收端,也就是主机,也可以抽象称为端系统。
2、数据传输中介,可以是路由器,交换机等设备。它们的作用可以参考MC中的红石中继器或者高压输电桩。
而互联网就是在计算机网络的产物,而计算机的网络有很多种,其中主要介绍两类网络:
(1)局域网LAN:需要自备线路,传输速度较快,一般由单位和个人所有,传输错码率低。拓补结构多为总线型、星型、环形等规则型。
(2)广域网WAN:公用线路,由局域网连接而成,传输速度较慢,一般为运营公司所有,传输错码率高。拓补结构多为网状、树状。
互联网也就是以这些网络为互联网的抽象节点通过网络互联设备连接,作为这些计算机网络网络的巨大网络。
如果更细化就可以将将计算机网络成员细分为端系统、通信链路和分组交换机。端系统就是我们数据包产生的主机(PC、移动PC和联网智能设备等),它产生的数据包会被细分为多个小数据包(分组)通过通信链路(光纤、同轴电缆)等传输出去,当遇到需要集中处理多条链路并且转换时就接入分组转换器(路由器等),其中数据传输的速率是单位是bit/s也就是bps。
而一般情况下,端系统利用ISP(Internet Service Provider)因特网服务提供商来接入因特网,也就是说ISP向我们提供通信链路和分组交换机等工具,同时它也可以向提供服务的服务器端提供接入服务。
通信协议
就如人和人之间的交流一样,计算机之间交流也需要通信的协议,一般情况下一个完整的通信协议应该包括下列5个要素:
- 有信息源和信息接收者;
- 双方统一的通信方式(打电话、发短信);
- 双方统一的语言和语法;
- 双方统一的通信时间和信息传递速度;
- 接收方的反馈和信息确认
所以如果我们需要将一张图片、一个视频或者一个文件发送给对方,那么这个需要发送的东西统称为消息,无论多复杂的消息都是通过转换为比特位来传输的。其中我们需要发送消息的客户端称为服务,例如QQ邮箱发邮件那么QQ邮箱就是服务。
而信息需通过我们的设备传出去后需要一个传输的介质,就如声波需要在介质中才能传播一样。信息也需要传播介质。而信息的传播介质可以是路由器、交换机等连接局域网和广域网的中介,也可以是传输的电缆、光纤,也可以是抽象的广域网、局域网。
因为各个设备之间状态不同,所以各个设备之间要通信就应该制定一套通用的通信协议,目前常用的一套通信协议就是TCP/IP通信协议。IP是网际协议,TCP是传输控制协议,这是一套最基础的通信协议,而这些协议是在RFC标准文档中定义的。但是我们常用的服务需要结合一些其它协议:例如万维网www服务就需要结合HTTP超文本协议来传输信息。
网络结构
我画了下图所示的网络通信图,如果我在这个图的基础上对网络再进行划分,就可以得到另外一种新的网络模式划分方式,这种划分方式总体来说可以划分出三个部分:网络边缘,网络核心和接入连接。
网络边缘
网络边缘由端系统(PC、服务器、手机等)以及一些基础设施组成,运行在端系统上的进程之间常见的通信方式有C/S方式和P2P方式。
C/S通信模式:客户端服务端通信模式,也就是客户端向服务器发送服务请求,服务器根据客户端的请求进行相应的回复。这种模式有个很大的问题,即当多个客户端向服务器发送请求时,服务器与客户端连接的端口不够、工作繁忙容易引起崩溃等问题。
Peer-Peer通信方式:这种通信方式中客户端也可以充当服务器的角色,客户端可以向另一个客户端发送请求,这种通信方式就不需要考虑担心服务器容量的问题了。并且可以大大提高传输速率,例如迅雷的客户端就是这种传输方式。
如果考虑采用基础设施的无连接服务,则端系统下的进程可以通过的基础设施进行通信并且另外细分为TCP和UDP通信方式。这两种方式中TCP通信方式更加可靠,可以控制流量等,而UDP不可靠不过实时性强。
接入网
接入网就是端系统接入到网络核心的媒介,即一套从端系统到第一台路由器的网络。通常情况下,接入家庭的接入网技术有这几种:DSL、电缆、FTTH、拨号和卫星。
DSL:数字用户线,是利用电话线的一种接入方式,具体是将电话线传输的信号按照频率来细分出两个通道来传输数据。
电缆:电缆因特网接入是利用有线电视公司的基础设施作为链路来连接端系统和交换机的。因为一般从通信公司电缆头端到端系统之间还有一段使用光缆来传输的,所以这种混合传输方式也被称为混合光纤同轴系统(HFC)。
光纤到户:光纤到户也称问FTTH,他是指直接从用户所在当地通信运营商处直接拉一条光纤到自己家。当然,这些光纤也是在靠近用户时才进行分叉,现代的FTTH模式常见有主动光纤网络AON和被动光纤网络PON两种模式。
而在企业和家庭中,还有一种常见的接入方式局域无线网接入即以太网和WIFI。即手机通过无线接入方式接入到局域网再接入到ISP的接入方式。就对应着一般家庭中的光猫(光调制解调器)、路由器、无线接入点。还有一种接入方式是广域无线网接入即3G、4G等。
网络核心
网络核心是上图红圈内的部分,它主要由通信链路和分组交换机构成(路由器,交换机)。端系统发送报文(message)即我们平时说到数据通过通信链路和交换机传输到另一个端系统。在网络核心部分数据的传输方式主要有两种:分组交换和电路交换。
分组交换:分组交换的数据传输方式是存储转发运输,它是指当前一个分组未传输完,后一个分组不开始传输,可以理解为离散的传输方式,不是连续的。假设有两个端系统和一个路由器:
当路由器向输出链路传输分组之前,该分组必须完整被路由器接收。就是指路由器会将分组完全下载好才开始向输出链路传输。正因为路由器会有个缓存的过程,所以如果输出的速率跟不上输入的速率,那么分组就会在路由器堵塞,堵塞的时间就叫做排队时延;更甚者路由器放的分组太多了,放不下了,就会丢掉一些后面来的,这就是分组丢失(丢包)。
当分组从端系统到路由器时,分组中某段会存有发送端系统的IP地址,并且存有目的地的地址。当这些分组到达路由器时,路由器会通过分组记载的目的地经路由选择协议来通过生成转发表以此向下一级发送分组。
电路交换:电路交换是另外一种数据传输方式,电路交换的传输方式是指预留一条通道来作为某个端系统的专属传输通道,这与分组交换不同,分组交换中链路是共享的,每个人都可以用任何一条链路。而电路交换是为某个端系统专门开的VIP通道,只有你能过,别人不能过。可以看出,电路交换运输不需要考虑堵塞问题,但需要考虑你是否能够承担起独享一条线路的代价、成本。而分组交换是注重共享问题,但会导致堵塞。
时延和吞吐量
时延
时延是指分组从在沿途传播中经每一个节点时所因为各种原因消耗的时间。其中时延有几种类型:节点处理时延、传播时延、运输时延和排队时延。
首先是处理时延:处理时延指的是当路由器接收到一个分组时,检查这个分组的来源和目的地并且设置路由表指定导向链路等所需要的时间。
其次是排队时延:排队时延就是分组到到达路由器时下一条链路前方剩余的分组数。即排队时延取决于前方队列中的分组数量。
再者是传输时延:分组时延是指将所有分组的时延运输出去所需的时间。即当该分组位于队首时分组比特数除以该分组第一个比特到达时与最后一个比特到达时的时间差。
最后是传播时延:传播时延就是一个比特在链路中传播的时间,即起始路由器到目标路由器所需的时间。
吞吐量
吞吐量大致可分为两种:瞬时吞吐量和平均吞吐量。以一个端系统为例,它的瞬时吞吐量是指某个瞬间接收到的文件的速率;而平均吞吐量是指一个大小为N个比特的文件,该端系统用T秒完全接收,则N/T就是平均吞吐量。
分层网络结构
现代的网络结构使用的是分层的网络结构体系,每一层会使用下层的服务,执行本层的功能,向上层提供服务,但是各层之间往往也会与有独特的网络协议,所有的这些协议总和称为协议栈。这样的层次结构可以理论上让每层功能模块化实现,以便于后续针对某项功能实现的优化和调整。但是不可避免也会造成冗余或者是造成下层信息影响上层的情况。
而因特网就是采用下面左边的5层网络结构模式,共分为:应用层、运输层、网络层、链路层和物理层。它是在国际标准化组织ISO提出的开放系统互连(OSI)七层模型的基础上简化而来,它缺少了表示层和会话层。
应用层
所谓应用层就是存储网络应用程序和这些程序的协议的一层,常见的HTTP(Web文档请求和传输协议)、DNS(域名解析协议)、SMTP(电子邮件传输协议)和FTP(文件传输协议)等都是属于这个层。端系统和端系统之间利用应用程序和应用层协议进行传输的信息分组就是报文(message)。
运输层
运输层负责传输两端点之间的应用程序报文,其中TCP和UDP协议就是运输层的传输协议。我们称运输层中传递的分组为报文段(segment)。
网络层
相应的,分组经过运输层利用运输层协议向网络层传达报文段和目标地址,获得后网络层就负责将网络层的分组:数据报(datagram)从一个主机到另一个主机。其中著名的网际协议IP就属于网络层。IP协议定义了数据报中各个字段的意义以及路由如何使用。还有另外一个协议:路由选择协议也是属于网络层,它能够根据数据报的源和目的来选择路线。
链路层
由上可知,数据报通过网络层实现主机间的传播,但是我们知道主机之间隔着很多的路由器和链路,所以在链路层就实现链路层分组:帧(frame)在路由(主机)节点之间传播。在某个特定的节点处,网络层数据下放给链路层,当传播到下一个节点时,就将数据包由链路层上传给网络层。常见的链路层协议包括:以太网、WiFi和电缆接入网的DOCSIS协议。
物理层
物理层是细化的链路层,链路层是将帧从一个节点到另一个节点,而物理层就负责将帧里面的数据一个比特一个比特地传过去。所以一般链路层的协议都会对应一些物理层的物理传输媒介协议。
结构封装
如果再细化去看一个分组在网络结构中的运输,我们可以得到网络每一层模型对分组的封装动作。首先我们假设我们有一个分组,该分组先经应用程序作为报文M从应用层向运输层运输,运输层接收到后会为该分组增添一些信息:如允许接收端运输层向上向适当的应用程序交付报文的信息;差错检测位信息等,封装成报文段后传输给网络层,网络层同样会在此基础上增加一些信息得到数据报向链路层传输,每层都这样增加一些的信息,将报文传输所需的各项信息丰富的行为就是封装。所以我们可以将到达每一层的分组分为由两大组成:首部字段和有效载荷字段。前者就是该层增加到额外信息,后者则是从上层获得的基本分组。
参考资料:
《计算机网络-自顶向下方法第七版》
中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程_哔哩哔哩_bilibili