原作者: 东软NetEye Support Team
TCP/IP协议栈最初由美国DOD(Department of Defense)制定并予以实现。在当时,DEC公司赢得了美国陆军计算机网络系统的订单,而IBM和UNISYS则分别赢得了美国空军和海军的垂青。然而,无论在日常使用还是在作战演习中,人们发现多种厂商的系统无法进行成功的通信与协作。这是由于各厂商各自为战、自立标准的后果,所以从一开始,这种不兼容性就是不可避免的。在这种情形下,美国政府为了保护先期的巨大投资和有效提高各单位的协作效率,DOD受命为当时已存在的各个分离的网络孤岛制定一个通信规程,这便是TCP/IP协议诞生的由来。
由于TCP/IP协议从一开始就是为多厂商设备之间的协同通信而制定的,因此该协议栈充分考虑了实现简易性和开放性,并且的确能够提供当时为数不多的几种应用服务,如Email、FTP和Remote Logon,所以在随后短短的十多年中,TCP/IP迅速的被各厂商宣布支持并广泛应用于当时的网络环境中,成功的取代了当时主流协议如SNA、SPX/IPX、DECNET、APPLETALK等并最终成为业界事实上的工业标准。TCP/IP优势一直保持至今,并且将会在以后很长一段时间内继续存在。
按照经典的OSI模型来看,整个协议应该分成七层结构:
1.物理层;
2.链路层;
3.网络层;
4.传输层;
5.会话层;
6.表示层;
7.应用层。
从这个理论出发,任何符合开放模型的协议都应该可以按照一定的逻辑关系把自己分成多个部分并在上述七层结构中找到自己的位置。TCP/IP协议栈也不例外。从字面上就可以看出,TCP/IP包括了两个部分:TCP层和IP层,分别对应于传输层和网络层。其他的分层,如物理层和链路层有NIC硬件厂商提供;会话层、表示层和应用层则由OS和实际应用程序共同实现。正是这种层次化给TCP/IP带来了良好的可扩展性和多厂商、多层次的合作开发可能性和兼容性。
TCP/IP向上层提交服务的接口是标准化的,但是这种标准化是在功能模块等级上进行定义的,所以在函数级别上可能呈现出各种各样的形态,如不同的函数名、不同的形式参数等。为了支持第三方应用程序进行网络通信或进程之间的协作,操作系统往往会提供一个比较稳定、标准的网络编程接口,如BSD Socket、TLI和Winsocks等,软件工程师一般会统称为Sockets。
Sockets秉承了模块化编程的精髓,将网络通讯所涉及的各基本功能元素进行了良好的隔离和封装。这大大加速了各种网络应用的开发和使用,为今天丰富多彩的Internet经济奠定了坚实的软件工程基础。因此,目前很多网络应用程序都采用Sockets进行网络通信,如IE、Netscape Navigator、Outlook Express等网络软件。 Sockets之所以大量被采用,主要得益于以下几个特点:
- 模块化封装设计,以系统调用形式出现,保持同一操作平台上的兼容性;
- 基本通信功能隐藏,由操作系统底层实现,降低开发强度,减少重复劳动;
- 面向终端用户设计,主要针对客户应用程序和轻量级服务进程提供支持,所以存在着大量缺省参数,调用简单;
- 同时还可以满足操作系统本地进程间通信,是IPC的一种主要实现方式。
由于Sockets所提供的大量的优点,所以造成了目前网络通信软件过于依赖于Sockets的局面。很多网络设备,都通过简单调用Sockets以使用操作系统内部所实现的TCP/IP协议栈进行网络通信,虽然大幅度降低了开发强度,缩短开发周期,但是如此同时却带来了很多致命的缺点:
1.操作系统TCP/IP协议栈和原有的Sockets接口是面向客户应用程序和轻量级服务进程所设计的,通过系统信号机制和内存共享等方式完成数据传递和报文通知,存在着与操作系统调用过多的交互和依赖性,占用大量的系统资源,处理延迟很大,无法提供对大批量网络信息的处理能力和快速响应能力;
2.同时,操作系统自身的部分功能也依赖于TCP/IP及Sockets,因此操作系统所提供的TCP/IP及Sockets开放了很多周知的或者是暗藏的端口,难以抵御网络扫描软件的窥探;
3.随着软件源代码的公开化和用户对各操作系统越来越深的了解,各操作系统TCP/IP协议栈固有的很多漏洞逐渐暴露出来。大量的黑客工具都是利用此类漏洞进行设计攻击的,因此存在着系统本身的不安全性;
4.虽然IETF和RFC相关文件都对TCP/IP协议栈作了篇幅冗长的标准化和阐述,但是每个厂商在实现自己的TCP/IP协议栈的时候都不可避免的带有一些独有特色,这些微妙的不一致性成为黑客扫描工具的主要信息来源,极易造成系统信息外泄;
5.Sockets编程接口依赖于操作系统内部对底层报文的校验、重组、封装等工作,上层应用程序往往充当一个被动的接受/发送者,因此无法对所处理的报文进行灵活、有效的控制。这对一个寻常应用程序而言是无所谓的,但是对于防火墙、路由器等网络通信设备却是很难接受的。尤其是防火墙设备,由于其安全防护业务的特殊性,这些设备往往会寻求一种“透明性”,即要在黑客入侵者面前保持最大程度的“隐蔽性”并尽量维持原有网络拓扑不变。Sockets会造成信息流在较低层次上的“中断”和“二次连接”现象,难以实现设备所追求的“透明性”,因此Sockets不适合防火墙、路由器等设备的开发。
出于对上述种种原因的充分考虑,东软公司NetEye研发队伍摒弃了业内已有的各种TCP/IP协议栈,一改国内防火墙行业陈旧的Sockets编程方式,投入了巨大的人力物力,严格按照国际标准重新设计、实现了全新的一整套TCP/IP协议栈,给网络安全产业带来了一股焕然一新的技术思路。这,便是NetEye Platform专用TCP/IP协议栈,为NetEye最终用户带来了以下好处:
- NetEye专用TCP/IP协议栈面向网络高速通信专门设计,重新设计各功能模块的内部代码实现及接口调用方式,废止了旧式TCP/IP协议栈的不合理、不必要的冗枝繁节,直接覆盖从低层到高层的各部分功能,采用独有的报文处理、数据传递技术,有力保证了信息流的线速转发能力;
- NetEye专用TCP/IP协议栈消除了旧式TCP/IP协议栈对底层通信流的“中断”和“二次连接”现象,实现了防火墙设备在网络拓扑中最大程度的“透明性”;
- NetEye Platform保持对其专用协议栈技术细节的保密性,避免系统漏洞的外泄;
- NetEye Platform不向业务网段开放任何服务端口,对各种扫描和其他服务请求采用沉默方式,消除了系统服务被扫描的可能性;
- NetEye专用TCP/IP协议栈对各层协议的交互流程进行了全面、慎重的设计,每字段、每比特的取值都严格按照相关标准进行,避免产生任何“指纹”特征,在网络通信的底层实现了对网络扫描的抵御能力;
- NetEye流过滤技术是NetEye防火墙最亮丽的特色,但是通常TCP/IP协议栈无法满足该技术对性能和功能的要求。NetEye专用TCP/IP协议栈经过精心设计和整合,能够全面支持NetEye流过滤技术,保证NetEye流过滤对“包过滤线速处理速度”和“应用级代理访问控制力度”完美组合的实现。
NetEye防火墙拥有业界出色的线速处理能力和突出的访问控制力度,能够在路由模式和交换模式下实现对企业网络良好的防攻击服务,是国内新一代防火墙之翘楚。这一切成就,在很大程度上可以归功于NetEye专用TCP/IP协议栈对NetEye Platform和NetEye“流过滤”技术强有力的支持。经过对NetEye用户数年来使用情况的跟踪反馈,NetEye专用TCP/IP协议栈已被证明是业内最出色的网络通信协议栈之一,为NetEye网络安全产品取得今天如此辉煌的成就奠定了坚实的基础支撑。
摘自《通讯世界》