计算机网络(1)-概述
这一系列是我在学习计算机网络时的笔记,主要参考资料是书籍《计算机网络 自顶向下方法》以及一些网络课程。
计算机网络的基本概念
计算机网络指互联、自治的计算机集合。自治指无主从关系,互联指互联互通。
如今我们提到计算机网络,往往指因特网(Internet),而因特网是由ISP(Internet Service Provider)网络互联形成的网络之网络。因特网边缘运行网络的计算机一般叫做主机(host)。
计算机网络中另一个重要的概念是网络协议(protocol)。网络协议指计算机网络中进行数据交换必须遵守的事先约定好的规则,如我们熟知的HTTP协议等。协议规定的通信实体之间交换数据的格式、意义、顺序以及针对收到的消息或发生的事件所采取的动作。协议有语法、语义和时序三个要素。协议是计算机网络的重要内容,在计算机的网络模型的每一层中都有涉及,在后续会有更多的介绍。

计算机网络的结构
一般把计算机网络的结构分为网络边缘、接入网络和网络核心三部分。
网络边缘就是指之前提到的主机以及在主机上运行的网络应用。如我们使用的接入互联网的电脑、智能手机等就是主机。网络应用有两种常见的模型,一种是传统的客户/服务器(client/server)模型,由客户机向服务器请求数据,服务器一直处于等待接收请求的运行状态。这种模型非常常见,如我们浏览网页就是向web服务器发出请求,获得服务器的HTML页面等数据后再由客户机的服务器渲染页面。另一种模型是对等(peer-peer,P2P)模型,即没有客户/服务器模型中的主动与被动的关系,通信在对等实体之间进行,如QQ,BT等。
接入网络是负责把网络边缘接入核心网络的部分。如住宅接入网络、机构(学校、企业)接入网络、移动接入网络等。
网络核心指互联的路由器网络。如我们典型的浏览网页的行为,我们通过浏览器发出一个请求,这个请求怎么被送到相应的服务器就是网络核心解决的问题。网络核心的关键功能是路由和转发。路由确定传输路径,转发指发送信息的过程。路由器会根据路由算法确定下一个路由,相应的信息会被记录到路由器中的路由表上。
那么我们为什么会需要路由器以及路由算法呢?假如我们简单粗暴地把每个接入的ISP互相连接,容易知道这是一个O($n^2$)的连接问题,无法用于大规模的网络。实际的网络模型是一个分层的结构,顶层是一级的ISP和像Google这样的内容提供商网络,这些网络彼此互联,边缘的主机只需要连接到这些互联的一级ISP即可。当然实际中会有更多等级的ISP网络,但中心思想都是讲网络边缘的主机接入一个彼此互联的大网络中,由一系列的路由器来处理路由与转发,而不是主机彼此互联。
数据交换的方式
电路交换
电路交换类似于我们拨打电话的过程,有一个建立连接与释放连接的过程,一旦连接建立,即使在某一段时间内没有数据传输,线路也处于被独占的状况。但一条线路同时只能被一次通信占用显然浪费了大量资源,那么如何共享中继线呢,这就要用到多路复用(multiplexing)的技术。
多路复用
多路复用的基本思想是把网络资源(如带宽)划分为资源片,每路呼叫独占分配到的资源片。划分资源片的不同方式就产生了一系列多路复用的技术。
频分多路复用(FDM)
通过频率进行划分,典型的应用如有线电视,切换频道的动作实质上就是切换频率。
时分多路复用(TDM)
将时间划分为一段段的TDM帧,每个用户被分配的时间处于一个周期内固定的一段。
波分多路复用(WDM)
通过波长进行划分,实质上就是FDM,只不过光通信中更多用波长的概念。
码分多路复用(CDM)
对每个用户分配彼此正交的码片,每个用户发送的比特都与码片进行乘积,如发送1就发送码片本身,发送0就发送码片的反码,再将不同用户发送的序列叠加,由于码片彼此正交,可以通过最终的结果与用户的码片求得原本发送的二进制序列。我们常听到的CDMA技术就是一种码分多路复用。
报文交换和分组交换
与电路交换不同,报文交换类似于传电报的过程,不需要建立持续的连接,一次把整个报文发送出去。
分组交换是在报文交换的基础上,把一个报文拆分成一系列小的数据包,当然每个数据包需要加一个头部来实现报文的重组。分组交换在效率上要优于报文交换,因为小的数据包更利于线路上的路由器进行并行的传递(可以类比CPU流水线执行指令)。
计算机网络的性能
速率
数据传输速率,单位时间内传输的信息(比特)量,单位b/s(bps)等。
带宽(bandwidth)
在信号处理中,带宽指信号具有的频带宽度,单位为赫兹(Hz)。
网络中带宽一般指最高数据率。
延迟(delay)/时延(latency)
分组从一个路由器传到下一个路由器的延迟由以下四种延迟组成:
节点处理延迟:差错处理,确定输出链路等。路由器对分组进行处理的延迟。
排队延迟:等待输出链路可用。取决于路由器的拥塞程度。
传输延迟:传输一个分组的时间。取决于分组长度和链路的带宽。
传播延迟:信号在物理介质中传播的时间。与链路的长度和信号传播速度相关。
传输延迟可以类比一个车队通过收费站的时间,传播延迟类比车队从一个收费站到达下一个收费站的时间。
时延带宽积
传播时延*带宽
以比特为单位的链路长度,相当于一段链路能容纳的信息量。
丢包率
路由器中队列满时会导致到达的分组被丢弃。
丢包率=丢包率/已发分组总数。
吞吐量/率
强调发送端与接受端之间的传送数据速率。
包括即时吞吐量和平均吞吐量。
吞吐量取决于线路中的瓶颈链路。实际中主机接入网络的链路的速率一般是瓶颈。
计算机网络体系结构
计算机网络体系结构从功能上描述计算机网络结构,为分层结构,底层为上层提供基础,每层遵循某些网络协议完成本层功能,可以类比软件工程中的模块化。
OSI参考模型
目的是支持异构网络系统的互联互通,由ISO在1984年提出,但理论成功,市场失败。
应用层(Application)
表示层(Presentation)
会话层(Session)
传输层(Transport)
网络层(Network)
数据链路层(Data Link)
物理层(physical)
主机需要完成全部7层功能,中间系统完成下3层功能。

相邻层之间通过接口传递数据。
数据封装的过程由下一层在上一层的基础上加上本层的头部信息(物理层没有额外的信息),然后通过物理介质传播,目的主机接受后按照相反的方式去掉头部。数据封装可以增加控制信息,包括地址、差错检测编码、协议控制等。
物理层
实现比特在物理介质上的传输。定义接口特性(机械、电气、功能、规程特性)、比特编码(怎样表示0和1)、数据率、比特同步(时钟同步)、传输模式(单工、半双工(交替双向通信)、全双工)。
数据链路层
负责结点到结点(node-to-node)数据传输。
组帧(framing):加头加尾
物理寻址:标识发送端或接收端的物理地址。可能存在多台主机连接一条链路,需要地址来标识哪台主机接收。
流量控制:匹配发送端与接收端的速率。
差错控制
访问控制:规定某一个时刻哪台设备有链路的控制使用权。
网络层
负责源主机到目的主机数据分组的交付。网络层可能跨越多个网络,需要全局的地址。
逻辑寻址:全局唯一的逻辑地址(如IP地址)。
路由
分组转发
传输层
负责源-目的(进程间)完整报文的传输。
报文的分段与重组
SAP寻址:选择正确的进程,如端口号。
连接控制:端到端的连接(逻辑连接),与电路连接中的概念不同
流量控制
差错控制
会话层
对话控制:对话的建立与维护
同步:在数据流中插入同步点,一旦中断,从最近的同步点恢复
表示层
处理两个系统交换信息的语法和语义
数据表示转化:大端小端问题等,转化为主机独立的编码
加密和解密
压缩和解压缩
应用层
HTTP、FTP、SMTP协议等
支持用户通过用户代理(如浏览器)或网络接口使用网络。
TCP/IP参考模型

IP over everthing
只要底层可以支持IP即可
5层参考模型
应用层
传输层
网络层
数据链路层
物理层
综合了上述两个模型的优点。

Original author: 马旭
Original link: https://bhmaxu.github.io/2020/01/27/计算机网络(1)-概述/
Copyright Notice: Please indicate the source of the reprint (must retain the author's signature and link)