网络通常指的是将单一功能的终端连接到大型计算机所用线路的集合。
计算机网络将各种计算机通过通信线路和网络设备互联起来。计算机最主要的特征是通用性。传统和非传统的计算机被称为主机或端系统。
由此,计算机网络可以定义为由通信信道连接的主机和网络设备的集合,以方便用户共享资源和互相通信。
计算机网络通常具有以下用途:
共享信息、协同计算、 方便通信、 共享硬件
构成网络的所有网络实体均被抽象为两种基本构件:一种是称为结点(亦称为节点)的计算设备,另一种是称为链路的物理媒体。
节点分为端系统(主机)和中间节点。中间节点又可以分为路由器、交换机、自治系统、虚拟节点和代理等网络设备或组织。链路则可以分为源主机到目的主机的端到端路径和两个节点之间的跳。其中,交换机工作在链路层,路由器工作在网络层。
一个直接连接的网络是由某种物理媒体直接连接所有端系统而组成的。这种物理媒介称为通信链路或链路。物理链路有时仅与一对节点相连,这种链路称为点到点链路。多个结点可以共享同一条物理链路,这种链路称为多路访问链路。
多路访问链路的节点数和所能副高的地理范围,会受到限制。因此,需要采用网络间接连通技术才能实现大量端系统之间的互相通信。
每个端系统都通过一条或多条点对点通信链路(甚至是一个通信网)与连接设备相连。这些连接设备将从一条链路接收的数据转发到另一条链路,因此也称为交换节点。
在交换网中,传递数据有两种基本方法:电路交换 和 分组交换。电路交换交换主要用于电话网,分组交换技术则主要用于计算机网络。
电路交换: 发送消息前,发送方与接收方先会通过多台交换机建立一条连接。当网络创建这种电路时,它也会在连接期间为该网络链路预留恒定的传输带宽,使发送方能够以确保的服务质量向接收方持续地传送话语数据。
分组交换:当一个端系统要向另一个端系统发送数据时,发送端系统将长数据划分为等长的短段,并为每个段加上首部,形成一个分组,也称作包。为使数据段能够在网络中独立传输,需要加上一些控制信息以形成分组首部,或称包头。
分组交换网通常采用一种称为存储-转发的技术。Internet 将以尽力而为的方式适时地传递分组,但它并不确定分组一定能够送达。
从应用程序研发者的角度看,网络体系结构通过应用程序编程接口为应用程序提供了特定的服务集合。应用程序体系结构则是由应用程序研发者设计,提供了在各个端系统上应当如何组织该应用程序。两种主流的应用程序体系结构的模式是:客户/服务器体系结构(client/server)模式,简称C/S 模式;对等方到对等方(peer-to-peer, P2P)体系结构模式,简称P2P模式。
客户机程序是运行在一个端系统上的程序,它发出请求并接受由运行在另一个端系统上的服务器程序所提供的服务。
具有 C/S体系结构的应用程序具有以下特点:
服务器:
客户机:
在一个 P2P 体系结构中,因为所有端系统都具有相同的功能而被统称为对等方,并且对等方之间进行通信不必通过专门的服务器。也就是说,对等方对总在运行的基础设施服务器依赖很小(或者根本没有依赖),应用程序在间断连接的主机对之间进行直接通信。
目前,大多数流行的流量密集型因特网应用都具有P2P 体系结构,包括文件分发、文件搜索/共享等。P2P借助对等方的空闲资源而不需要庞大的服务器基础设施支撑;它具有群组性、高度分布性和动态性的特点,这使系统的效率、安全和服务质量都面临调战;P2P 体系具有自扩展性。
通过引入能够为各种网络功能和技术提供不同抽象的多个中间层次,网络体系结构为组织或构造系统的元素提供了一种模块化的设计方案。这种模块化设计方案的好处是定义良好的接口使系统具有灵活性,不同层次实现时隐藏了技术细节,并可以独立、自由地发展和改变,增加新模块即能够扩充新功能;接口能够隐藏信息,提供较高层的抽象。但是这可能会导致系统性能降低。因此,用分层方法将网络功能模块化,去除不同网络应用之间以及网络应用于网络技术之间的紧密耦合;用端到端原则决定网络关键功能应当在哪些模块中实现。
协议就是一种规则,一种约定俗成的惯例。这些规则能够保证这些活动正常有序地进行。为进行网络中的数据交换而建立的规则、标准或规约称之为网络协议,简称协议。
网络协议由以下三个要素组成:
- 语法:即数据与控制信息的结构或格式。
- 语义:即语法定义结构中的具体含义,表示发出何种控制信息,完成何种动作以及作出何种响应等。
- 时序:即事件实现顺序的详细说明。
一个分层的体系结构允许通过定义良好的接口将大而复杂的系统划分为不同的层次。每一层只关注一个重要功能,而且各层可以独立地实现相关功能。只要层之间的接口保持不变,层之间的关系就会保持稳定,这样简化了系统的设计。
计算机网络的各层及相应协议的集合称为网络的体系结构。总的思路是从底层硬件提供的服务开始,然后逐步增加一系列的层,每一层都提供更高一级的服务。高层提供的服务需要基于底层提供的服务来实现。
为了给网络协议设置一个结构,网络设计着以分层的方式组织协议,并设计实现这些协议的网络硬件和软件。每一个协议属于其中的一个层。一层向它的上一层提供服务的方式称为服务模型。每层服务获得的途径包括:
1. 在该层中执行的某些功能。
2. 与该层的对等层进行交互得到的功能。
3. 使用直接的下层提供的服务。
下图说明的是应用进程之间进行传递的过程中所经历的变化。
在图所示的系统中,各层协议排列的像栈的结构,因此也被称为协议栈。当进行交换信息时,可以用实体一词表示任何可发送或接收信息的在硬件或软件进程。在协议的控制下,两个对等实体之间的通信使本层能够向上一层提供服务,要实现本层协议,还需要利用较低层所提供的服务。
首先,协议的实现保证了能够向上一层提供服务,使用本层服务的实体只能看见服务而无法看见下面的协议,下面的协议对上面的实体是透明的。其次,协议是水平的,即协议是控制对等实体之间通信的规则,但服务是垂直的,即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务,只有那些能够被高一层实体看的见的功能才能被称为服务。
国际标准化组织(ISO)所定义的计算机互联方法的体系结构称为开放系统互联。下图a,是著名的 ISO OSI 参考模型。该模型将网络按功能划分为7层,每层包括一个或多个协议。
从 OSI 参考模型自下而上,分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。每一层的作用如下:
- 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,确定机械、电气、功能以及规程特性。主要定义物理设备标准,它的主要作用是传输比特流,这一层的数据叫做比特。
- 数据链路层:负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。收集比特流成帧。
- 网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
- 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。提供端到端的可靠报文传递和错误恢复。
- 会话层:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
- 表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密
- 应用层:是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
上图 b是当前广泛使用的因特网的体系结构——TCP/IP 体系结构,如下表所示:
层级 | 对应的协议或应用 | 负责的功能 |
---|---|---|
应用层 | Telnet、FTP和e-mail等 | 负责处理特定的应用程序细节 |
运输层 | TCP 和 UDP 等 | 为两台主机上的应用程序提供端到端的通信 |
网络层 | IP、ICMP 和 IGMP等 | 处理分组在网络中的活动,例如分组的选路 |
链路层 | 设备驱动程序及接口层 | 处理与传输媒介的物理接口细节 |
通常情况下,应用程序就是一个用户进程,而下三层则一般在(操作系统)内核中执行,例如 UNIX 操作系统。除此之外,应用层与下三层还有一个关键不同在于:应用层关心的是应用程序的细节,而不是数据在网络中的传输活动,下三层对应用程序一无所知,但它们要处理所有的通信细节。
在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务,也就是说,它只是尽快的将分组从源结点送到目的结点,但并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
实际上,因特尔体系结构只定义了上面三层,网络接口层仅关注了与通信网的接口,而如何传输帧是通信网自己的事情。TCP体系结构最上面的应用层则对应着 OSI 的上面三层的功能。为了方便学习计算机网络原理,通常采用如图 c 的五层体系结构进行教学。
在设计与实现因特网时,为了提高系统效率并没有严格分层,但是,分层体系结构便于学习和理解计算机网络原理。
下图,详细的展示了 计算机网络分层模型以及各层协议。
一般而言,计算机网络不仅会在端系统之间移动分组时引入一定的时延,而且会限制端系统之间的吞吐量,甚至可能导致分组的丢失。
时延是计算机网络的重要性能测度,。单向时延定义为一个分组从网络的一端传到另一端所需要的时间。往返时延(RTT)是指一个分组从网络路径的一端传到另一端并返回所需要的时间。
当一个分组在节点间传输时,主要的时延分为四种类型: 节点处理时延(nodal processing delay),排队时延(queuing delay),传输时延(transmission delay)和传播时延(propagation delay)。
如果将这四种类型的时延分别表示为d(proc), d(queue), d(trans), d(prop)。则对一个分组而言,两个节点间的总时延
d = d(proc) + d(queue) + d(trans) + d(prop)
假设发送端到接收端间有N条链路,则对一个分组而言,忽略其他因素,端到端总时延
d(end-end) = N × ( d(proc) + d(queue) + d(trans) + d(prop) )
下面将从单个分组从路由器A到相邻的路由器B的传输的情况入手,分别介绍这四种不同类型的时延
图示如下:
处理时延:当分组到达路由器A时,首先要做的是检查分组首部并决定将该分组导向何处,并检查比特级差错,这部分的时间消耗叫做处理时延。
排队时延:分组在经过路由器A的处理后,下一步就是传输出去。一个分组的排队时延取决于先到达的,正在排队等待向链路传输的分组的数量。
1. 如果前面没有分组正在从路由器A向链路传输的话,排队时延为0
2. 如果流量很大,前面有很多分组正在传输或也在等待传输,那么就要消耗很大的排队时延了。
传输时延:传输时延是路由器A将分组的所有比特推出路由器A,推向链路所需要的时间。传输时延取决于两个因素:
1. 单个分组长度
2. 数据传输速率
假设分组的长度为L比特,数据传输速率为R (bps) 那么 传输时延 = L/R
【注意】传输时延又叫做存储转发时延
传播时延:传播时延指的是分组的一个比特从路由器A到达到路由器B所需要的时间,传播时延取决于两个因素:
1. 链路介质(双绞线,光纤)的传播速率
2. 节点间的距离(两个路由器间的距离)
假设路由A,B距离为d, 链路介质传播速率为s,那么传播时延 = d/s
丢包意为分组丢失,什么原因会导致分组丢失呢? 这和我们上面所说的”排队时延“有关,我们说到:当大量分组在短时间内到达路由器的时候,因为无法一次性处理完毕,分组需要”排队“,但是基于路由器的设计和成本,分组队列的长度是有限的。所以,当队列满了的时候,下一个分组到达的时候,路由器会选择丢弃(drop)该分组, 这个分组便丢失了(lost),这就是所谓的丢包。
丢包率与分组长度以及分组发送频率相关。
网络带宽是指链路在一定的时段内所能传输的比特数的额定值。例如,一条网络的带宽为100Mbps,是指它一秒钟能够传送1亿个比特,或者说。传输每个比特只用 0.01 us。
吞吐量是指网络在单位时间内无差错地传输数据的能力。吞吐量的单位和数据传输速率一样,也是bps,所以它虽然名为“量”,其实也还是一种“速率”。
吞吐量 == 瓶颈链路的传输速率
带宽时延乘积指的是链路的带宽(单位比特每秒)与来回通信延迟(RTT,单位秒)的乘积。结果为比特的数据量,表示在特定时间该网络上的最大数据量–已发送但尚未确认的数据。
联系客服