计算机网络体系:
简介:
计算机网络体系结构是指计算机网络层次结构模型,它是各层协议以及层次之间的端口的集合,在计算机网络中实现通信必须依靠网络通信协议。
概念:
计算机网络结构可以从网络体系(Network Architecture)结构,网络组织和网络配置三个方面来描述。
- 网络体系结构是从功能上来描述,指计算机网络层次结构模型和各层协议的集合;
- 网络组织是从网络的物理结构和网络的实现两方面来描述;
- 网络配置是从网络应用方面来描述计算机网络的布局、硬件、软件和通信线路。
计算机网络体系结构是计算机网络及其部件所应该完成功能的精确定义。这些功能究竟由何种硬件或软件完成,是遵循这种体系结构的。体系结构是抽象的,实现是具体的,是运行在计算机软件和硬件之上的。
计算机网络体系结构的标准:
目前,由国际化标准组织ISO制定的网络体系结构国际标准是 OSI七层模型,但实际中应用最广泛的是 TCP/IP体系结构。换句话说,OSI七层模型只是理论上的、官方制定的国际标准,而TCP/IP体系结构才是事实上的国际标准。这看起来是不可理喻的,但这却是实际存在的,是一些历史原因造成的,无疑这些原因又是复杂的。
OSI标准的制定者以专家、学者为主,他们缺乏实际经验和商业驱动力,并且OSI标准自身运行效率也不怎么好。与此同时,由于Inernet在全世界覆盖了相当大的范围,并且占领市场的标准是TCP/IP体系结构,因此导致OSI标准没有市场背景,也就只是理论上的成果,并没有过多地应用于实践。
计算机网络体系结构的分层原理:
开始之前我们先了解分层思想是什么:
先想一个问题:怎么实现两个主机之间亲密无间的交流呢?要想完成这种网络通信就必须保证相互通信的这两个计算机系统达成 高度默契 而分层个思想就可以使网络设备之间具有这种“高度默契”,同时具有合理地组织网络的结构,以保证其具有结构清晰、设计与实现简化、便于更新和维护、较强的独立性和适应性。
分层的优点:
(1)人们可以很容易的讨论和学习协议的规范细节。
(2)层间的标准接口方便了工程模块化。
(3)创建了一个更好的互连环境。
(4)降低了复杂度,使程序更容易修改,产品开发的速度更快。
(5)每层利用紧邻的下层服务,更容易记住各层的功能。
大多数的计算机网络都采用层次式结构,即将一个计算机网络分为若干层次,处在高层次的系统仅是利用较低层次的系统提供的接口和功能,不需了解低层实现该功能所采用的算法和协议;较低层次也仅是使用从高层系统传送来的参数,这就是层次间的无关性。
因为有了这种无关性,层次间的每个模块可以用一个新的模块取代,只要新的模块与旧的模块具有相同的功能和接口,即使它们使用的算法和协议都不一样。
网络中的计算机与终端间要想正确的传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称做协议。
协议的概念:
网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。
协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。
2、协议数据单元(PDU)
计算机网络体系结构中,对等层之间交换的信息报文统称为 协议数据单元(Protocol Data Unit,PDU)。PDU由 协议控制信息(协议头) 和 数据(SDU) 组成,如下图所示。
传输层及以下各层的PDU均有各自特定的名称:
- 传输层 —— 段(Segment)
- 网络层 —— 分组/包(Packet)
- 数据链路层 —— 帧(Frame)
- 物理层 —— 比特(Bit)
OSI七层参考模型:
简介:为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互联起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1984年形成了开放系统互连参考模型OSI/RM(Open Systems Interconnection Reference Model,简称OSI)的正式文件。
OSI七层模型的划分:
OSI从逻辑上,把一个网络系统分为功能上相对独立的7个有序的子系统,这样OSI体系结构就由功能上相对独立的7个层次组成,如图1所示。它们由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
(1)物理层(Physical,PH)传递信息需要利用一些物理传输媒体,如双绞线、同轴电缆、光纤等。物理层的任务就是为上层提供一个物理的连接,以及该物理连接表现出来的机械、电气、功能和过程特性,实现透明的比特流传输。在这一层,数据还没有组织,仅作为原始的比特流提交给上层——数据链路层。
(2)数据链路层(Data-link,D)数据链路层负责在2个相邻的结点之间的链路上实现无差错的数据帧传输。每一帧包括一定的数据和必要的控制信息,在接收方接收到数据出错时要通知发送方重发,直到这一帧无差错地到达接收结点,数据链路层就是把一条有可能出错的实际链路变成让网络层看起来像不会出错的数据链路。实现的主要功能有:帧的同步、差错控制、流量控制、寻址、帧内定界、透明比特组合传输等。
(3)网络层(Network,N)网络中通信的2个计算机之间可能要经过许多结点和链路,还可能经过几个通信子网。网络层数据传输的单位是分组(Packet)。网络层的主要任务是为要传输的分组选择一条合适的路径,使发送分组能够正确无误地按照给定的目的地址找到目的主机,交付给目的主机的传输层。
(4)传输层(Transport,T)传输层的主要任务是通过通信子网的特性,最佳地利用网络资源,并以可靠与经济的方式为2个端系统的会话层之间建立一条连接通道,以透明地传输报文。传输层向上一层提供一个可靠的端到端的服务,使会话层不知道传输层以下的数据通信的细节。传输层只存在端系统中,传输层以上各层就不再考虑信息传输的问题了。
(5)会话层(Session,S)在会话层以及以上各层中,数据的传输都以报文为单位,会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立以及维护应用之间的通信机制。如服务器验证用户登录便是由会话层完成的。
(6)表示层(Presentation,P)这一层主要解决用户信息的语法表示问题。它将要交换的数据从适合某一用户的抽象语法,转换为适合OSI内部表示使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩、加密和解密等工作都由表示层负责。
(7)应用层(Application,A)这是OSI参考模型的最高层。应用层确定进程之间通信的性质以满足用户的需求,以及提供网络与用户软件之间的接口服务。
总结:
OSI七层模型是一个理论模型,实际应用则千变万化,因此更多把它作为分析、评判各种网络技术的依据;对大多数应用来说,只将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。
TCP/IP参考模型:
TCP/IP是Internet上所有网络和主机之间进行交流时所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:
- 数据链路层(也称网络接口层、网络接入层)
- 网际互联层
- 传输层(主机到主机)
- 应用层
TCP/IP四层模型的划分:
各层功能定义
1、应用层
应用层对应于OSI参考模型的高层(会话层、表示层、应用层),为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。
2、传输层
传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP) 和 用户数据报协议(UDP)。
TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据流式传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据报式传输服务.
3、网际互联层
网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
4、网络接入层(即主机-网络层)
网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
客户端/服务器模式:
客户端/服务器(Client/Server)模式,即C/S模式,要求每个应用程序由两个部分组成:一个部分负责启动通信,另一个部分负责对它进行应答。它们通常在不同的主机上,分别称为客户端和服务器。
服务器是指那些在网络上提供服务的应用程序,客户端是指用户为了得到某种服务所需要运行的应用程序,即申请服务的程序。
服务器接收网络中任何一个客户端的服务请求,完成服务后将结果返回给客户端,它们之间的关系如下图所示:
一个服务器可以同时接收多个客户机请求,当网络中的某一个客户机发送服务请求时,服务器使其在提供服务的端口排队,然后从队列中提取请求,为每个请求创建一个子进程,由子进程来处理具体的服务细节。
所以,通常情况下,服务器也包含主程序和子程序两个部分。主程序负责接收来自客户端的请求,子程序一般有几个,它们负责处理各个客户请求。