设计和建造计算机网络是一件很复杂的事情。将复杂的问题分解成若干个相对简单的子问题分别处理是人们在解决复杂问题时常用的手段,为了便于设计和实现计算机网络,人们将整个计算机网络系统按照功能划分成多个不同的模块,各模块之间即相互独立又相互配合共同实现网络应用相互通信的目的。计算机网络的各功能模块通常是按“层次结构”来划分的,即各模块之间的“调用”关系是一种层次模型,每层完成独立的功能。每一层功能都必须要借助其下一层的功能才能实现,同时,自身的功能要能被上一层使用。本层的功能被上一层所使用通常称为本层为上一层提供服务。服务与被服务只能发生在相邻的层次之间,不能跨层进行。这种计算机网络的层次结构以及各层功能的定义就是所谓的网络体系结构

         各层所用到的所有协议所组成的集合称为协议族,有时也将协议族称为协议栈,那是因为各层次的协议按层次画在一起很像数据结构中的栈。

         其中最典型的两种网络体系结构就是OSI七程模型和TCP/IP四层模型。

        应用层,很简单,就是应用程序。这一层负责确定通信对象,并确保由足够的资源用于通信,这些当然都是想要通信的应用程序干的事情。
   表示层,负责数据的编码、转化,确保应用层的正常工作。这一层,是将我们看到的界面与二进制间互相转化的地方,就是我们的语言与机器语言间的转化。数据的压缩、解压,加密、解密都发生在这一层。这一层根据不同的应用目的将数据处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。
   会话层,负责建立、维护、控制会话,区分不同的会话,以及提供单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务。我们平时所知的NFS,RPC,X Windows等都工作在这一层。
   传输层,负责分割、组合数据,实现端到端的逻辑连接。数据在上三层是整体的,到了这一层开始被分割,这一层分割后的数据被称为段(Segment)。三次握手(Three-way handshake),面向连接(Connection-Oriented)或非面向连接(Connectionless-Oriented)的服务,流控(Flow control)等都发生在这一层。
   网络层,负责管理网络地址,定位设备,决定路由。我们所熟知的IP地址和路由器就是工作在这一层。上层的数据段在这一层被分割,封装后叫做包(Packet),包有两种,一种叫做用户数据包(Data packets),是上层传下来的用户数据;另一种叫路由更新包(Route update packets),是直接由路由器发出来的,用来和其他路由器进行路由信息的交换。
   数据链路层,负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等。我们所熟知的MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧(Frame)。
   物理层,就是实实在在的物理链路,负责将数据以比特流的方式发送、接收。

扩展阅读:NAT、NAT-PT、DHCP协议。

猜你喜欢
picture loss