大家好,经过公司缜密的思考和策划,【达哥讲网络——只讲你不知道的】系列连载今天正式与大家见面了。经过深入考虑,本系列只对一些重要的网络技术原理、网络功能实现原理及配置进行连载,其中会穿插一些实战案例,以帮助大家消化。为了便于学习,提高学习效率,决定采用图文方式,每集阅读时间在10分钟左右。今天是第1集,专门就网络体系结构中的功能模块进行介绍,下一集专门介绍一下许多朋友还不是很清楚的各类型网络中的数据封装和解封装原理。
学网络的,一开始都要学习OSI/RM和TCP/IP网络体系结构。大家也都知道OSI/RM参考模型划分了7层,TCP/IP模型划分了5层,且大致也知道各层的主要功能,但却很少人从宏观上深入分析网络体系结构中的整体功能模块划分。
1. 体系结构的功能模块
其实TCP/IP体系结构与OSI/RM的设计原理基本上是一样的,可以把TCP/IP模型看成是OSI/RM中专门针对TCP/IP网络的一种优化特例。在TCP/IP体系结构中,各层中所用的协议均为TCP/IP网络中支持的协议,且把OSI/RM中最高三层合并成一层,因为OSI/RM中的“会话层”和“表示层”功能少且简单,合并在“应用层”更便于网络软/硬件开发,无需单独划分层次。
TCP/IP体系结构中的5层各司其职,但我们不能孤立地看问题,不能单独看某一层的功能。其实总的来说,这五层分成了三大功能模块:最低“网络通信模块”,中间的“数据传输模块”,最高的“网络应用模块”。
1. 网络通信模块
“网络通信模块”包括了TCP/IP体系结构中最低的三层,即“物理层”、“数据链路层”和“网络层”,解决的是网络通信中最基础的通信平台建设的问题,使网络通信中传输的数据有“路”可走,还可选择走什么“路”。所谓的有“路”可走,是指通信两端有可供数据转发的路径(包括“线路”)。至于采用什么样的线路,那就是走什么“路”的问题了。
现在的网络通信线路有许多种,在有线网络中,最常见的就是双绞线线路、光纤线路,在WLAN无线网络中的线路则是看不见的电波。不同的线路特性不同,性能也不同,架设的成本也不同,当然也各有自己的优势和适用的场景。在这里我们立马会联想到现实生活中的一个实例,那就异地货物运输。当你有货物要运输到外地客户时,你肯定首先要根据运输成本、货物特点、客户所在地等因素决定采用什么运输方式,是陆运、水运,还是空运,其实也是走什么“路”的问题。不同的运输方式有不同的特性,成本也大不一样,当然也有各自不同的优势和适用的货物、客户类型。只有网络建设好了,才有后续的网络通信事件的发生,就像只有运输方式确定了,才能有后续的货物运输事件发生一样。
“网络通信模块”中的三层也有高低之分,既各司其职,又相互协作,下层通过SAP(服务访问点)为相邻的上层服务。“物理层”是最低层,可以看成是用来实现网络设备之间的物理和电气连接,这是网络通信平台建设的最基本前提。“数据链路层”是第二层,实现的是同一IP网段中设备之间的网络通信,其功能实现前提仅是网络中各设备已实现了物理和电气连通,所以它在“物理层”之上,共同构建同一IP网段的网络通信平台。
“网络层”是第三层,实现的是不同IP网段(跨网段)中设备之间的网络通信,需要借助路由来选择在不同IP网段间进行数据转发的路径。但跨网段的网络通信通常也包括同一IP网段内设备之间的通信,因为数据从一个IP网段进入另一个IP网段后,又会按照同一IP网段的中“数据链路层”转发规则进行寻址和转发,所以“网络层”又位于“数据链路层”之上,再加上实现网络设备物理和电气连通的“物理层”共同构建不同IP网段的网络通信平台。
2. 数据传输模块
“数据传输模块”仅包括“传输层”这一层,实现的就是在已搭建好的网络通信平台中进行数据传输,即把数据从源端传输到目的端,实现真正的“端到端”的数据传输。就像货物运输中,确定了运输方式后,就要根据所选定的运输方式,以及所装载的货物类型、特性等与收货方共同商定选择适当的货物装载容器、装载工具,然后与运输商签定运输协议,通常是选择把货物从发货方直发收货方。传输层中的功能类似,不同的上层应用协议选择不同的传输层协议(如TCP和UDP),如果选择的是TCP,则需要事先在源端和目的端之间建立一个专门的连接,然后才能正式进行数据传输。就像货物运输时,如果选择空运,则先要向民航管理机构申请使用专门的航道一样。
3. 网络应用模块
“网络应用模块”对应的就是网络体系结构中的最高层——应用层。这是用户应用数据的真正始发层,也相应于货特运输中要真正运输的货物。网络通信的最终目的就是实现一个个具体的网络应用,如通过HTTP实现远程的Web服务器访问,通过DHCP实现对远程客户端的IP地址分配,通过Telnet实现对远程设备的登录和管理等。
在应用层,不同的应用所选择的数据传输方式有可能不同,也就是对应不同的传输层协议。而不同的应用又有不同的特性,如有不同的应用参数,不同的数据保护方法(如加密方式),不同的数据格式等。就像不同货物在装载时要选择不同的加固/ 保护方式,不同的包装/保鲜方式等一样。
在源端用户要发送的数据必须经过对应的应用层协议封装(会加装对应的应用层协议的头部)后才能发往下面的传输层,选择对应的传输层协议进行传输,否则数据到达对端后无法交由对应的应用程序模块进行恰当的处理(如是否需要解除密,是否需要对数据进行完整性验证,是否需要对发送方身份进行认证等)。就像货物在运输前,必须采用相应的包装、标识方式对货物进行标识,否则接收方收到货物后不能从包装、标识上获知货物的类型、数量等,也就很难对货物进行完整的验收,做出恰当的货物接收(由哪个部门接收)、处理(是直接交付使用,还是先放入仓库暂存等)方式。