网络技术是从1990年代中期发展起来的新技术 , 它把互联网上分散的资源融为有机整体 , 实现资源的全面共享和有机协作 , 使人们能够透明地使用资源的整体能力并按需获取信息 。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等 。当前的互联网只限于信息共享 , 网络则被认为是互联网发展的第三阶段 。在上一次课程里我们介绍了子网的概念和子网的划分 。现在该谈到OSI(开放系统互连)参考模型了 。网络协议栈具有重要的意义 。但是 , 还没有重要到你应该首先学习的程度 。许多所谓的网络课程都是从教你记住OSI模型中的每一个层的名字和这个模型中包含的每一个协议开始的 。这样做是不必要的 。甚至第5层和第6层是完全可以忽略的 。
国际标准组织(ISO)制定了OSI模型 。这个模型把网络通信的工作分为7层 。1至4层被认为是低层 , 这些层与数据移动密切相关 。5至7层是高层 , 包含应用程序级的数据 。每一层负责一项具体的工作 , 然后把数据传送到下一层 。
物理层(也即OSI模型中的第一层)在课堂上经常是被忽略的 。它看起来似乎很简单 。但是 , 这一层的某些方面有时需要特别留意 。物理层实际上就是布线、光纤、网卡和其它用来把两台网络通信设备连接在一起的东西 。甚至一个信鸽也可以被认为是一个1层设备(参见RFC 1149) 。网络故障的排除经常涉及到1层问题 。我们不能忘记用五类线在整个一层楼进行连接的传奇故事 。由于办公室的椅子经常从电缆线上压过 , 导致网络连接出现断断续续的情况 。遗憾的是 , 这种故障是很常见的 , 而且排除这种故障需要耗费很长时间 。
第2层是以太网等协议 。请记住 , 我们要使这个问题简单一些 。第2层中最重要的是你应该理解网桥是什么 。交换机可以看成网桥 , 人们现在都这样称呼它 。网桥都在2层工作 , 仅关注以太网上的MAC地址 。如果你在谈论有关MAC地址、交换机或者网卡和驱动程序 , 你就是在第2层的范畴 。集线器属于第1层的领域 , 因为它们只是电子设备 , 没有2层的知识 。第2层的相关问题在本网络讲座中有自己的一部分 , 因此现在先不详细讨论这个问题的细节 。现在只需要知道第2层把数据帧转换成二进制位供1层处理就可以了 。
在往下讲之间 , 你应该回过头来重新阅读一下上面的内容 , 因为经验不足的网络管理员经常混淆2层和3层的区别 。
如果你在谈论一个IP地址 , 那么你是在处理第3层的问题 , 这是“数据包”问题 , 而不是第2层的“帧” 。IP是第3层问题的一部分 , 此外还有一些路由协议和地址解析协议(ARP) 。有关路由的一切事情都在第3层处理 。地址解析和路由是3层的重要目的 。
第4层是处理信息的传输层 。第4层的数据单元也称作数据包(packets) 。但是 , 当你谈论TCP等具体的协议时又有特殊的叫法 , TCP的数据单元称为段(segments)而UDP协议的数据单元称为“数据报(datagrams)” 。这个层负责获取全部信息 , 因此 , 它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险 。理解第4层的另一种方法是 , 第4层提供端对端的通信管理 。像TCP等一些协议非常善于保证通信的可靠性 。有些协议并不在乎一些数据包是否丢失 , UDP协议就是一个主要例子 。
现在快要到7层了 , 我们很想知道第5层和第6层有些什么功能 。可以说 , 它们都是没有用的 。
有一些应用程序和协议在5层和6层 。但是 , 对于理解网络问题来说 , 谈论这些问题没有任何益处 。请大家注意 , 第7层是“一切” 。7层也称作“应用层” , 是专门用于应用程序的 。如果你的程序需要一种具体格式的数据 , 你可以发明一些你希望能够把数据发送到目的地的格式 , 并且创建一个第7层协议 。SMTP、DNS和FTP都是7层协议 。
学习OSI模型中最重要的事情是它实际代表什么意思 。
假如你是一个网络上的操作系统 。在1层和2层工作的网卡将通知你什么时候有数据到达 。驱动程序处理2层帧的出口 , 通过它你可以得到一个发亮和闪光的3层数据包(希望是如此) 。作为操作系统 , 你将调用一些常用的应用程序处理3层数据 。如果这个数据是从下面发上来的 , 你知道那是发给你的数据包 , 或者那是一个广播数据包(除非你同时也是一个路由器 , 不过 , 暂时不用担心这个问题) 。如果你决定保留这个数据包 , 你将打开它 , 并且取出4层数据包 。如果它是TCP协议 , 这个TCP子系统将被调用并打开这个数据包 , 然后把这个7层数据发送给在目标端口等待的应用程序 。这个过程就结束了 。
当要对网络上的其它计算机做出回应的时候 , 每一件事情都以相反的顺序发生 。7层应用程序将把数据发送给TCP协议的执行者 。然后 , TCP协议在这些数据中加入额外的文件头 。在这个方向上 , 数据每前进一步体积都要大一些 。TCP协议在IP协议中加入一个合法的TCP字段 。然后 , IP协议把这个数据包交给以太网 。以太网再把这个数据作为一个以太网帧发送给驱动程序 。然后 , 这个数据通过了这个网络 。这条线路中的路由器将部分地分解这个数据包以获得3层文件头 , 以便确定这个数据包应该发送到哪里 。如果这个数据包的目的地是本地以太网子网 , 这个操作系统将代替路由器为计算机进行地址解析 , 并且把数据直接发送给主机 。
这个过程确实简化了 。但是 , 如果你能够按照这个进程来做 , 并且理解数据包在每一个阶段都会发生什么事情 , 你就征服了理解网络的相当大的一部分问题 。当你开始讨论每一个协议实际上做什么的时候 , 一切都会变得非常复杂 。如果你刚刚开始学习 , 在你理解复杂的事情在设法完成什么任务之前 , 请你先忽略这些复杂的事情 。这样会提高你的学习热情 。
在以后的文章里 , 我们将沿着网络栈向上旅行 , 通过讨论常用的协议和这些协议的工作原理来详细研究每一层 。
小结
•与其苦钻OSI模型中的各协议不如好好理解路由器和主机如何利用网络栈传输数据
•2层数据称作帧 , 不包含IP地址 。IP地址和数据包在3层 , MAC地址在2层 。
•除非你是一台路由器 , 通过网络栈向上发来的数据是给你的 , 通过网络栈向下发送的数据是你发送的 。