【计网笔记】计算机网络体系结构
计算机网络体系结构
什么是网络协议
所谓的协议,其实就是“规则”。由于网络通信涉及到多台设备,所以我们需要事先制定一套规则,来保证不同设备之间能正常通信。这就和人和人之间交谈一样,我们想要与其他人交谈,就必须遵守规则,比如我们要使用别人能听懂的语言、我们要遵守谈话的礼仪等等。
网络协议的三要素
- 语法:即数据与控制信息的结构或格式,这和人类的语言类似,我们必须要保证自己想说的东西符合语法规则,别人才能理解;
- 语义:即需要发送何种控制信息,完成何种动作以及做出何种响应,就像人类语言中,我们除了保证自己的话要符合语法,还要保证一句话有意义,例如“狗飞饭”虽然符合“主谓宾”的语法规则,但是并没有实际的意义,而且我们对别人的回应应当根据别人的话来进行,不能别人问你“吃了没”,你来一句“我买了台新电脑”;
- 同步:即事件实现顺序的详细说明,你和别人聊天,必须要遵守一人一句,而且为了保持礼貌,同时保证有效交谈,你要等对方说完,网络通信更是这样,如果不按照一定的顺序、时间规定进行通信,那么网络通信将无法进行。
层次划分
ARPANET 的研制经验表明,对于非常复杂的计算机网络协议,其结构应该是层次式的。
分层可以带来很多好处。如:
- 各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了。
- 灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这层取消。
- 结构上可分割开。各层都可以采用最合适的技术来实现。
- 易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统。
- 能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。分层时应注意使每一层的功能非常明确。若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。通常各层所要完成的功能主要有以下一些(可以只包括一种,也可以包括多种):
- 差错控制 使相应层次对等方的通信更加可靠。
- 流量控制发送端的发送速率必须使接收端来得及接收,不要太快。
- 分段和重装发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
- 复用和分用发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
- 连接建立和释放交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
计算机体系结构
计算机网络的各层及其协议的集合就是网络的体系结构(architecture)。换种说法,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义。需要强调的是:这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现(implementation)的问题。总之,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
为了使不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该问题。他们提出了一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连基本参考模型OSIRM(Open Systems Interconnection Reference Model),简称为OSI。
然而到了20世纪90年代初期,虽然整套的 OSI 国际标准都已经制定出来了,但由于基于 TCP/IP的互联网已抢先在全球相当大的范围成功地运行了,而与此同时却几乎找不到有什么厂家生产出符合OSI标准的商用产品。所以OSI模型最终没有被实际应用。
OSI 的七层协议体系结构(图1-18(a))的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP是一个四层的体系结构(图 1-18(b)),它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构(图1-18(c)),这样既简洁又能将概念阐述清楚。有时为了方便,也可把最底下两层称为网络接口层。
应用层
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在互联网中的应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的SMTP协议,等等。我们把应用层交互的数据单元称为 报文。
运输层
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。所谓“通用的”,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
- 传输控制协议 TCP(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是 报文段。
- 用户数据报协议 UDP(User Datagram Protocol)——提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
网络层
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在 TCP/IP 体系中,由于网络层使用IP协议,因此分组也叫做 IP数据报,或简称为 数据报。
网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
这里要强调指出,网络层中的“网络”二字,已不是我们通常谈到的具体网络,而是在计算机网络体系结构模型中的第3层的名称。
互联网是由大量的异构网络通过路由器相互连接起来的。互联网使用的网络层协议是无连接的网际协议 IP 和许多种路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。
数据链路层
数据链路层常简称为 链路层。我们知道,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。
物理层
在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是0(或1)。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。当然,解释比特代表的意思,就不是物理层的任务。请注意,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理层下面的物理媒体当作第0层。