什么是计算机网络
计算机网络可以从具体构成角度和服务角度两个方面来看。
具体构成角度
计算机网络具体构成由节点、边、协议实现。
节点
节点指的是主机及其上运行的应用程序,比如路由器、交换机、PC、等网络交换设备
边:通过链路
边分为接入网链路和主干链路。
- 接入网链路:主机连接到互联网的链路
- 主干链路:路由器之间的链路
协议
协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接收或其他事件方面所采取的动作。简而言之,协议就是规定了通信设备中如何通信。
服务角度
从服务角度来看,计算机网络可以分为如下两部分。
分布式应用
使用通信设施进行通信的分布式应用,例如Web、VoIP、email、分布式游戏、电子商务、社交网络等等。
通信基础设施
通信基础设置为apps提供编程接口(通信服务)
- 将发送和接受数据的apps与互联网连接起来
- 为apps应用提供服务选择,包括无连接不可靠服务和面向连接的可靠服务
网络边缘
通常把与计算机网络相连的计算机和其他设备成为端系统,因为它们处于网络的边缘,其中端系统也就是主机,因为它们运行应用程序。
网络边缘使用客户/服务器模式和对等模式。
客户/服务模式
客户端向服务端请求、接收服务,如Web浏览器/服务器,email客户端/服务器。
对等(peer-peer)模式
很少(甚至没有)专门的服务器,如Gnutella、KaZaA、Emule
网络核心
除去网络边缘的各种端系统的服务,核心的部分就是数据怎么通过网络进行传输,也就是路由器的网状网络是咋样的,其输入网络的核心。
网络核心中使用两种方式进行数据传输:电路交换和分组交换。
电路交换
在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿途路径通信所需要的资源(缓存、链路传输速率),例如和传统的电话网。
其核心特点如下:
- 链路带宽、交换能力
- 专用资源:不共享
- 保证性能
- 要求建立呼叫连接
其核心实现是通过把网络资源(如带宽)进行分片,例如频分(FDM)、时分(TDM)、波分(WDM),在特定的分片中进行数据通信。
其缺点如下:
- 连接建立时间长
- 计算机之间的通信有突发性,浪费的片较多(呼叫没有数据传递,其所占据的片也不能够被别的呼叫使用)
- 可靠性不高
分组交换
源端系统向目的系统发送一个报文,源将长报文划分为较小的数据块,称之为分组。源和目的地之间,每个分组都通过通信链路和分组交换机传送(交换机主要有两类:路由器和链路层交换机)
其特点是以采用分组单位存储-转发方式,网络带宽资源不再分为一个个片,传输时使用全部带宽,主机之间的传输数据被分为一个个分组。
其特点如下:
- 适合用于对突发数据传输,资源共享,不必建立呼叫
- 过度使用会造成网络用塞:分组延时和丢失,需要用向相应的协议来进行约束。
组网方式
分组交换的组网方式分为数据报和虚电路两种。
数据报
在通信之前,无须建立起一个链接,有数据就传输。每一个分组都独立路由(路径不一样,可能会失序),路由器根据分组的地址进行路由。
虚电路(virtual circuit)
一条源主机到目的地主机的逻辑路径,在整个路径中,每一条链路都有一个VCID(虚电路号),针对同一个虚电路(VC),每一个链路的VCID通是不同的。
数据分组携带VCID,而不是目的主机地址。数据分组经过路由器等网络设备时,利用虚电路转发表来查找每一条虚电路,路由器在转发的过程中需要基于转发表改写分组所携带的VCID
存储转发传输
存储转发传输是指交换机能够开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组,也就是分组被传输到下一个链路之前,整个分组必须达到路由器。
排队延迟和丢失
如果分组的到达速率大于链路的输出速率,那么分组将会排队,等待传输,如果路由器的缓存用完,分组将会被抛弃。
转发表和路由选择协议
当一个分组到达网络中的路由器时,路由器检查该分组的目的地地址的一部分,并向另一台相邻路由器转发该分组,每台路由器具有一个转发表,用于将目的地地址(或目的地地址的一部分)映射成为输出链路。当某分组到达路由器时,路由器检查该地址,用该地址搜索转发表,寻找出合适的数据链路。
网络中具有一些特殊的路由选择协议,用于自动设置转发表,例如一个路由选择协议可以决定从每台路由器到每个目的地最短的距离,并使用这些最短路径结果来配置路由器中的转发表。
接入网和物理媒体
接入网是指端系统或者主机连接到边缘路由器(端系统到任何远程端系统的路径上的第一台路由器)的网络结构,物理媒体指的是,接入网中所需要的物理设备媒体。
住宅接入:modem
将上网数据通过调制解调器调制加载音频信号上,在电话线上传输,在局端将其中的数据解调出来,反之亦然。不能同时上网和打电话,不能总是在线。
住宅接入:电缆模式
使用电缆调制解调器将上网数据接入到有线电视公司的有线电视基础设施上。
企业接入网络
经常被企业或者大学等机构采用,以100Mbps或1Gbps速率接入以太网络交换机。
无线接入网络
通过基站或者接入点,各无线端共享无线接入网络(端系统到无线路由器)
物理媒体
物理媒体分为引导性媒体和非引导性媒体。对于引导性媒体,电波沿着固体媒体前行,如光缆、双绞通线或同轴电缆。对于非引导性媒体,电波在空气或外层空间中传播,例如无线局域网或数字卫星频道中。
Internet结构和ISP
ISP(interner service provide)指的是因特网服务提供者,端系统通过接入一个ISP与因特网相连。因为因特网是有数以亿计的用户构成的,ISP必须自身必须要互联,创建网络的网络。
分组延时、丢失和吞吐量
分组延时和丢失
在分组交换的时候,分组到达路由器的时候,分组需等待排到路由器缓冲区队列的对头才能被传输,所以会产生延时,如果路由器缓存区满了,那么分组将会被抛弃,出现了丢失。
其中分组延时大致可以分为四种情况:
- 节点处理延时
- 排队延时
- 传输延时
- 传播延时
节点处理延时
该阶段主要检车分组收不决定将分组导向何处和检查bit级差错
排队延时
在路由器缓冲区,等待进入对头被传输。
传输延时
所有到达的分组被传输后,才能传输刚到达的分组,是路由器推出分组的时间。
传播延时
一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间
吞吐量
吞吐量指的是在源端和目前端之间传输的速率(数据量/单位时间),分为瞬间吞吐量(在一个时间点的速率)和平均吞吐量(在一个长时间内的平均值)。
在端到端路径上,路由器之前可能会有不同的传输速率,那么源端到目的端的吞吐受最小传输率的链路影响,成为瓶颈,只能满足最小的速率传输。
协议层次及服务模型
网络是一个复杂的系统,网络功能繁杂:数字信号的物理信号承载、点到点、路由、rdt、进程分区、应用等,网络的许多构成元素和设备较多。
如何组织和实现复杂的网络功能成为了必须要解决的问题。
分层的体系结构
将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能(服务)。本层协议实体相互交互执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务。在实现本层协议的时候,直接利用了下层所提供的服务,本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务。
Internet协议栈
internet协议栈由五个层次组层:物理层、链路层、网络层、传输层、应用层。
ISO/OSI参考模型
ISO/OSI由七个层次组层:物理层、链路层、网络层、传输层、会话层、表示层、应用层。
各层的特点
- 应用层:网络应用,为人类用户或者其他应用进程提供网络应用服务,常见的协议有FTP, SMTP, HTTP,DNS。
- 表示层:允许应用解释传输的数据,例如:加密、压缩、机器相关的表示转换。
- 会话层:数据交换的同步、检查点、恢复。
- 传输层:主机之间的数据传输,在网络层提供的端到端通信基础上,细分为进程到进程,将不可靠的通信变成可靠地通信,常见的协议有:TCP、UDP。
- 网络层:为数据报从源到目的选择路由,主机主机之间的通信,端到端通信,不可靠,常见的协议有IP, 路由协议。
- 链路层:相邻网络节点间的数据传输,2个相邻2点的通信,点到点通信,可靠或不可靠,常见的协议有:点对对协议PPP, 802.11(wifi), Ethernet。
- 物理层:在线路上传送bit
internet协议栈中,应用层里面已经实现了表示层和会话层的功能
各层次的协议数据单元
- 应用层:报文(message),例如HTTP报文。
- 传输层:报文段(segment),例如TCP段、UDP段。
- 网络层:分组(packet),如果使用无连接方式为数据报(datagram)
- 链路层:帧(frame)
- 物理层:位(bit)
封装和解封装
由于采用了分层的结构,每层只负责自己所在层次的功能和服务,源到目的地的传输过程,从最初的应用层的报文到物理层的位,数据需要经过不同层的处理,才能完成整个数据的传输,这个过程就是封装。
封装步骤大致如下:
- 应用层报文传输给传输层,传输层加上自己的传输层首部信息(包括允许接受端传输层向上向适当的应用程序交付报文的信息;差错检测位信息,该信息让接收方能够判断报文中的比特是否在途中已经被改变)
- 传输层向网络层传输报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生层网络层数据报
- 网络层把数据报传输给链路层,链路层增加自己的链路层首部信息并生成链路层帧
- 网络层把帧传输给物理层,然后通过bit传输给目的端
可以看出,在每一层中分组都具有两个类型的字段:首部字段和有效载荷字段,首部字段为当前层的附件信息,有效载荷字段通常是来自上一层的分组。
当数据通过bit传输到达目的端的时候,会从internet协议栈最底层一层一层进行解封装,还原出每层对应的数据,然后提交给应用层的应用程序进行使用。
最后,整个计算机网络结构图大致如下: