计算机网络体系结构的形成
为什么要提出体系结构?
· 计算机网络是个非常复杂的系统。
· 相互通信的两个计算机系统必须高度协调工作,而这是相当复杂的。
· 因此,科学家们就提出用"分层"的方法将复杂的问题转化为简单的问题。
国际标准的提出
· 一开始,科学家们提出了法律上的国际标准OSI,但是这个体系结构因为设计的时候把层次分的太细,而且没有考虑商业因素,故无法得到市场认可。
· 后来提出的事实上的国际标准TCP/IP协议,获得了最广泛的应用。
协议与层次划分
协议
· 网络协议(Network Protocol),简称协议,是计算机网络中数据交换必须遵循的事先约定好的规则。
· 这些规则明确规定了所交换的数据的格式以及有关的同步的问题。
· 网络协议分为三个要素:
语法(怎么说?):数据与控制信息的结构或格式。
语义(说什么?):要发出何种控制信息,完成何种动作以及做出何种响应。
同步(何时说?):事件实现顺序的详细说明,包括何时发和发送速率。
分层
· 为什么要分层?因为可以把一件复杂的事情分解为一件件简单的事情。
· 比如文件传输,直接在两个主机之间传输文件并不容易,而且程序实现也非常困难,但是我们可以把它们分层。
· 每一层完成自己的任务之后,就把数据进行封装并传输到下一层去,下一层接收到数据后对其进行解封,然后完成自己的任务后,再次封装传到下一层,以此类推。
·分层的好坏:
· 每一层需要完成的任务:
复用指的是来自上层(如应用层)的多个数据流,可以通过同一个下层协议(如传输层的TCP或UDP)来共享同一网络连接。比如在传输层,不同的应用通过指定不同的端口来实现复用。
分用就是复用的逆过程,指的是在接收端网络层如何根据数据的头部信息,如端口号,来把数据正确的传递给对应的应用程序。
逻辑连接指的是通过软件实现的一种连接,如TCP通过三次握手实现的连接,他不是物理意义上的那种连接,而是一种概念上的连接。
五层协议的体系结构
· 综合OSI和TCP/IP协议的结构,提出五层协议的体系结构。
各个层的主要作用
· 应用层(Application Layer):负责给用户(人或软件)提供服务。应用层的协议定义应用进程之间的通信和交互规则,不同应用有不同协议,如DNS协议解析域名、HTTP协议支持Web应用、SMTP协议支持电子邮件、FTP协议支持文件传输。
· 运输层(Transport Layer):为两个主机中进程之间的通信提供通用的数据传输服务,运输层负责整个报文到达目标进程。端到端通信常使用TCP和UDP协议,TCP面向连接,传输单位是报文段,提供可靠的交付;而UDP是无连接的,只是尽最大努力交付,不保证数据传输可靠性,传输单位是用户数据报。
· 网络层(Network Layer):负责为分组交换网上的不同主机提供通信。网络层负责单个分组到达主机,将报文段或用户数据报封装成分组或包。在传输分组的过程中,要经过很多路由节点,因此要进行逻辑寻址和路由选择。但是寻址只是给出方向,并没有给出具体节点,因此还需要数据链路层。
· 数据链路层(Data Link Layer):在两个相邻节点间的链路上传输数据(一跳一跳地传递)。在发送数据的时候,数据链路层将网络层交下来的IP数据报组装成帧(Frame);在接收数据的时候,相邻节点在接收到一个帧后,就从其中提取数据部分上交网络层。帧包含数据和必要控制信息,如同步信息、地址信息、差错控制等。
· 物理层(Physical Layer):负责在节点之间透明地传送比特流。这个透明指的是经过实际电路传输之后,比特流没有发生变化,这个电路对比特流来说好像不存在一样。
多层通信思想——虚拟通信
· 多层通信指的就是上层通信依赖与下层通信,发送时从上往下层层封装;接收时从下到上层层解封。
· 虚拟通信指的就是各对等层之间的通信好像是直接通信。
协议栈(重要概念)
· 协议栈包含两层含义:
由于分层,每层都有相应的协议,因此是"协议的集合"。
各层协议配合工作通过封装和解封完成,发送时层层封装,接收时层层解封。封装和解封的次序正好相反,因此叫"栈"。
通过协议来封装构成的数据单元叫协议数据单元(Protocol Data Unit,PDU),如报文、分组、帧。
协议在各层之间传递
· 封装:
· 解封:
物理层收到比特流,交给数据链路层;
数据链路层剥去帧首部和尾部后,把帧数据交给网络层;
网络层剥去分组首部后,把分组的数据部分交给运输层;
运输层剥去报文首部后,把报文的数据部分交给应用层;
应用层剥去应用层PDU首部后,把应用程序数据交给应用进程。
协议与服务在概念上的区别
· 在协议的控制下,两个对等实体(硬件、软件)的通信使得本层能够向上一层提供服务。
· 要实现本层的协议,还需要下层所提供的服务,服务就是功能的实现。
· 本层的服务用户只能看见服务,而无法看见下面的协议,因为本层不关心数据是怎么来的,只关心结果。因此我们说下面的协议对上层的服务是透明的。
· 协议是"水平的",即协议是控制对等实体之间通信的规则。
· 服务是"垂直的",即服务是由下层向上层通过层间接口提供的。