应用层:应用层是体系结构中的最高层,它直接为用户的应用程序提供服务,在因特网中应用层的协议很多,如支持万维网应用的http协议,支持电邮的smtp协议,支持文件传输的ftp协议等等。
运输层:它为两个主机中的进程间的通信提供服务。由于一个主机可以同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可以同时使用运输层的服务,分用则是运输层把收到的信息分别交付给上面的应用层中的相应的进程。
运输层主要使用以下两种协议:TCP和UDP
TCP:传输控制协议,面向连接的,数据传输的单位是报文段,能够提供可靠地交付。
UDP:用户数据报协议,无连接的,数据传输的单位是用户数据报,不保证提供可靠地交付。
网络层:负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,简称数据报。网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
数据链路层:我们知道,两个主机之间的数据传输,总是在一段一段的链路上传输的,也就是说,在两个相邻结点之间(主机和路由器之间或者两路由器之间)传送数据是直接传送的。这时就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点之间的链路上透明地传送帧中的数据。每一个帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等),典型的帧长是几百字节到一千多字节。这里透明是一个很重要的术语。它表示某一个实际存在的事物看起来却好像不存在一样(例如你看不见在你面前100%透明的玻璃的存在)。“在数据链路层透明传输数据”表示无论什么样的比特组合的数据都能够通过这个数据链路层。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。控制信息还使得接收端能够检测到所收到的帧中有无差错。如果发现有差错,数据链路层就简单地丢弃这个出错的帧,以免传下去白白浪费网络资源。如果需要改正错误,就由运输层的TCP协议来完成。
物理层:在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。物理层要考虑用多大的电压代表1或0,以及接收方如何识别发送方所发送的比特。物理层还要确定链接电缆的插头应该有多少根引脚以及各个引脚应如何连接。
假定主机1的应用程序AP1向主机2的应用程序AP2发送数据。AP1先将其数据交给本主机的第5层(应用层)。第5层加上必要的控制信息H5就变成了下一层的数据单元。第4层(运输层)收到这个数据单元后,加上本层的控制信息H4,再交给第3层(网络层),成为第3层的数据单元。以此类推。不过到了第2层(数据链路层)后,控制信息分成两部分,分别加到本层数据单元的头部(H2)和尾部(T2),而第1层(物理层)由于是比特流传送,所以不再加控制信息。当这一串比特流离开主机1经过网络的物理媒体传送到目的站主机2时,就从主机2的第1层依次上升到第5层。每一层根据控制信息进行必要的操作,然后将控制信息剥去,将该层剩下的数据单元上交给更高的一层。最后,把应用进程AP1发送的数据交给目的站的应用进程AP2。
虽然应用进程数据要经过这么多层负责的过程才能送到终点的应用程序,但这些复杂过程对用户来说都被屏蔽了,以致应用程序AP1觉得好像是直接把数据交给了应用进程AP2。同理,任何两个同样的层次之间,也好像图中虚线所示那样,将数据通过水平虚线直接传递给对方。这就是所谓的对等层之间的通信。
所以术语“协议栈”,就是因为几个层次画在一起很像一个栈结构。
阅读(819) | 评论(0) | 转发(1) |