前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇tcp协议范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:P2P;CDP;NAT 穿透;基于UDP的tcp
中图分类号:TP317文献标识码:A 文章编号:1009-3044(2007)03-10736-02
1 引言
随着互联网应用广泛推广,基于各种P2P网络技术的产品也越来越多的出现在我们的视野当中。从最早的Napster 到现在的Bittorrent、eMule、skype等产品,P2P这种网络应用模式已经从各个方面深入人心。这些产品在网络实现技术上,都以各自的方法解决着同样面临的一个问题,如何让他们的软件产品在各异的网络拓扑结构中顺利的进行P2P通信。
众所周知,在当今的网络拓扑结构中,普遍使用NAT设备来进行网络地址转换,那么如何让应用程序跨越这些NAT设备进行全双工通信,就成为非常重要的问题。实现跨越NAT 通信有很多种办法:首先是通过服务器进行转发,这是比较粗暴的方法,在用户量较大时,转发服务器需要付出相当大的代价;其次,可以使用NAT 穿透技术。而在NAT 穿透中,UDP 穿透的成功率比起TCP 穿透要高出许多[1]。因此在UDP 协议上构建一些大型的网络应用程序可能会成为很多人的需求。
由于UDP协议本身存在通信不可靠的缺点,对于基于UDP 进行可靠通信的需求就浮现出来了。目前在网络上有许多人正在做着这一工作,UDT、RakNet、eNet 等都是构建在UDP之上的网络可靠通信开发库,但这些库都是针对一些特殊应用进行设计的,不具备通用性。本文提出的CDP协议是在UDP基础之上实现的TCP协议。同时具备了TCP的通用、高效和UDP的高穿透成功率,并提供了简单易用的应用程序开发接口。
2 CDP设计目标
CDP主要的目标就是在UDP 层之上实现TCP 的协议算法,使得应用程序能够在UDP 层之上获得通用、可靠、高效的通信能力。CDP 网络开发库所实现的算法,都来自久经考验的TCP协议算法,以下协议设计部分主要讲解CDP实现中与TCP标准不同的部分。
3 CDP协议设计
CDP协议主要在以下几个方面与TCP有所不同:协议格式、连接建立(NAT UDP PUNCH模式)、保活机制、MTU发现与MSS通告。其他部分,如报文传输、流量控制、超时重传、拥塞控制等,均参照TCP协议实现[2]。下面将对几个不同部分分别进行说明。
3.1 协议格式
CDP的实现的算法虽然与TCP 实现的算法是大致相同的,但CDP 的协议格式只是从TCP协议格式获得参考,但并不完全与他相同,CDP协议格式如图1所示。
图中各字段意义分别为:
4 位首部长度:表示用户数据在数据包中的起始位置。
LIV:连接保活标志。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文段交给应用层。
RST:重置连接。
SYN:同步序号,用来发起一个连接。
FIN:发端完成发送任务。
16 位窗口大小:接收端可接收数据的窗口大小。
选项:只有一个选项字段,为最长报文大小,即MSS。CDP 选项格式与TCP 选项格式一致,kind=0 时表示选项结束,kind=1 时表示无操作,kind=2 时表示最大报文段长度。如下图:
图2 CDP选项字段
数据:用户通过CDP 传输的数据。
3.2 连接建立(NAT UDP PUNCH模式)
一般情况下,CDP连接的建立过程与TCP相同。但当CDP工作在UDP NAT 穿透(NAT UDP PUNCH)模式下时,在三次握手之前,先要向对端NAT 端口及预测端口以默认2ms的间隔发送默认为10个LIV报文,一来用于打开自已的NAT 端口,二来是用于进入对端NAT端口。默认值可以由用户程序设置。这时的LIV 报文中初始序号及确认序号都为0。
当接收到对端LIV 报文后,CDP立即停止LIV 报文发送,发出SYN 报文进行连接建立。这时有两种可能:一是对端直到接收到该SYN 报文,都没有接收到LIV 报文,或是刚接收到LIV报文,但没有来得及发送SYN 报文,此时将会和一般模式下连接建立的过程一致,经历三次握手;二是对端在接收到该SYN 报文之前,也已经发送SYN报文,此时双方都需要对SYN 报文段进行确认。
3.3 半打开连接及连接保活
半打开连接是指对端异常关闭,如网线拔掉、突然断电等情况导致一端关闭,而另一端却认为连接仍处于打开当中,这种情况称之为半打开连接。CDP中的一个TDP SOCKET描述符由本地IP、本地端口、远端IP、远端端口唯一确定。当远端客户端连接请求到来时,服务端将接收到一个新的CDP SOCKET描述符,当这一个描述符唯一确定信息已经存在时,对新的连接请求发送RST 报文段,通知其重置连接请求。对于旧的连接,由保活机制自动发现是否为半打开连接,如果是半打开连接,则自动关闭该连接。CDP的RST 报文与TCP 中的RST 报文是不一样的。
连接建立之后,CDP 连接需要启动保活机制。TCP 连接在没有数据通信的情况下也能保持连接,但CDP 连接不行。CDP 连接在一定时间内如果没有数据交互的话,将主动发送保活LIV报文段。这个时间根据CDP 连接工作模块不同有所差异,在NAT UDP PUNCH 模式下,默认值为1 分钟(大多数的NAT中,UDP会话超时时间为2-5分钟左右);而在常规模块下这个时间段默认值为5分钟。默认值可以由用户程序设置,用户程序需要指明两种模式下的保活时间周期。
3.4 路径MTU 发现及MSS 通告
CDP连接建立过程中会通告初始MSS(Maximum Segment Size),这个值可以由用户程序进行设置。但这个初始值是静态的,当通信双方跨越多个网络时,使用设置的MSS可能导致传输的IP 报文分片的产生。为了避免分片,CDP在数据传输过程中进行动态的路径MTU(Maximum Transmission Unit)发现,并进行MSS 的更新及通告。
CDP创建UDP SOCKET时,即将IP选项设置为不允许分片: Setsockopt(clientSock, IPPROTO_IP, IP_DONTFRAGMENT, (char*)&dwFlags, sizeof(dwFlag) )。
在发送数据时先以当前MSS 大小进行发送,如果返回值为错误码WSAEMSGSIZE(10040),则表示为报文尺寸大于MTU,需要进行IP 分片传输。此时,缩减MSS大小再次发送,直至不再返回错误码WSAEMSGSIZE(10040)。当MSS 变更并能成功发送报文后,需要向对端通报新的MSS 值。每次MSS 缩小后,默认隔30 秒,CDP 将默认扩大MSS 大小,以检查是否路径MTU 是否增大了,之后隔30*2 秒、30*2*2 秒进行检测,如果三次都未发现MTU 增大则停止进行检测。网络中MTU 值的个数是有限的[3]。因此MSS 的扩大及缩减,可依据一些由近似值按序构成的表,依照此表索引进行MSS 值的扩大与缩减计算。
CDP 中MSS 与MTU 之间关系的计算公式如下:MSS = MTUC20(IP首部)C8(UDP首部)C12(CDP首部)。
4 CDP应用程序开发接口(CDP Socket API)
使用CDP进行网络程序开发是非常容易的,它API与标准socket API是非常相似的,对应功能的函数名称都相同,只是CDP的所有API都处于名称空间CDP 之下。此程序库的实现也参考了BSD Socket的实现。CDP Socket API列表如下:
5 结束语
本文提出了一种基于UDP协议之上的TCP协议实现――CDP协议,并对现实的一些关键部分进行了讨论,最后给出了CDP协议的应用开发接口。CDP协议同时具备了TCP通用、高效的特点,有利用的UDP的NAT穿透特性,可广泛应用与构建各种P2P网络应用。
参考文献:
[1]B. Ford, P. Srisuresh, D. Kegel, Peer-to-Peer Communication across Network Address Translators [EB/OL], draft-ford-midcom-p2p,/pub/net/p2pnat, June 2004.
[2]W.Richard Stevens, 范建华,译,TCP/IP详解――卷Ⅰ:协议[M],机械工业出版社,2000.4.1.
关键词:NDK; TMS320DM642; TCP/ IP
1、 NDK 的结构
TI公司依据C6000芯片推出了TCP/IP NDK(Network Developer's Kit)开发套件, 其主要构成包括: (1)支持TCP/IP 协议栈程序库。其中主要含有的库: 支持TCP/IP网络工具的库,支持TCP/IP 协议栈与DSP/BIOS平台的库,网络控制以及线程调度的库。(2)示范程序。其中主要包括DHCP/Telnet 客户端, HTTP 数据服务器示范。(3)支持文档。包含用户手册、程序员手册和平台适应手册。NDK 采用紧凑的设计方法, 实现了用少量的资源耗费来支持TCP/IP。从实用效果来看, NDK仅用200-250K程序空间和95K 数据空间即可完成常规的TCP/IP 服务。
NDK相对于操作系统和底层硬件是透明的, 因为这是由OS。LIB 提供操作系统DSP/BIOS的接口和HAL。LIB 提供对硬件的支持来实现的。在NDK的TCP/IP协议栈中STACK。LIB 包括了顶层套接字到底层链路层的所有功能, NETCTRL。LIB在整个协议栈中起关键作用, 协调操作系统和底层硬件驱动, 管理所有网络事件, NETTOOL。LIB 提供配置网络各种服务。
2、NDK 在DSP/BIOS 下的使用
DSP/BIOS 是TI 开发的实时微型操作系统, 支持线程管理、实时分析、周期函数、调度软件中断以及外部硬件中断与各种外设的管理。使用DSP/BIOS 所有与硬件有关的操作都必须借助操作系统本身提供的函数完成, 应避免直接控制硬件资源。基于DSP/BIOS 的程序与传统开发过程是不同的, 用户编写的程序由DSP/BIOS 调度, 不再按标写的次序顺序执行。同样开发基于DSP/BIOS的网络应用程序也必须要遵循一些原则。
在DSP/BIOS 下使用NDK 必须注意以下几点: (1) 为了保证使用NDK 的工程项目能正确编译, 在CCS 的Link Order 要按一定的顺序添加库文件, 推荐的顺序是: NETCTRL。LIB、HAL_xxxLIB、STACK。LIB、OS。LIB; (2)在使用NDK 的过程当中, OS和HAL 会创建三个内存段, 分别是PACKETMEM、MMBUFFER、OBJMEM, 必须在CMD 文件中为这三个段在内存中分配存储空间;(3) 至少要使用32K 的cache, 否则应用程序会产生不可预料的错误;(4) 必须在CDB文件中为HAL 创建一个周期为100ms 的PRD 函数, 用来驱动llTimerTick()系统函数;(5) OS 需要钩子函数为TCP/IP 堆栈加载和保存私人变量指针, 所以必须在CDB 文件中创建两个钩子函数NDK_hookInit()和NDK_hookCreate();(6)必须把工程项目的IncludeSearching Path 指向NDK 安装目录下的inc 文件夹。
3、NDK 性能测试
测试NDK性能既有主观性又有客观性。主观性适应为实际测试要受到很多环境因素的影响。客观性是因为使用标准的工具,并且结果可重现。 所以只能是性能的估计性测试。影响NDK性能的主要因素有:
socket API: NDK既支持非拷贝的数据包socket,也支持基于缓冲区的典型socket,甚至非拷贝的直接接收的TCP数据流。性能随所采用的策略变化而变化。
socket 缓冲区: socket缓冲区影响TCP发送和接收的窗口大小,并且决定每次发送数据流大小,这对网络性能有很大的影响。
CPU速度:在cache大小一定的情况下,网络性能与CPU速度成正比。CPU cache: cache的大小对网络性能有巨大的影响。
网络硬件设备:以太网硬件设计的好坏直接影响DSP和网络接口的速度。
外部存储器(EMIF)接口:对于和DSP外部存储器接口相连的以太网设备, EMIF的速度对外部解码逻辑有额外的影响。
下面的测试由TI提供,测试不仅兼顾最佳的性能而且考虑到应用的实际情况,比如socket缓冲区大小为8K,而不是32K 或64K,因为这在嵌入式设备中是不切实际的。测试的过程是DSP执行低优先级的网络任务,PC机执行客户基准测试程序, 然后与DSP不执行网络任务时CPU的负载情况做对比。
4 、结论
TI推出的NDK网络开发工具不仅可以使技术人员快速开发基于DSP的网络应用程序,而且具有十分可靠的性能,这使得C6000系列芯片完全可以胜任大数据量的视频网络传输的要求,是开发嵌入式网络视频设备的首选。
参考文献
[1]Texas Instrument。TMS320C6000 Programmer ' s Guide(Rev。 I)。
关键词:网络安全; TCP/IP协议;安全性
引言
现在Internet已在全世界普及,它使人们稳坐家中就可以得到世界各国的所有信息,并已经逐渐成为通信方面的基础设施。但是从另一方面来说,由于世界的计算机通过网络互相连通潜在了很多不安全的因素。于是,要安全地使用Internet,就需要具备防止信息泄漏以及防止被篡改等网络安全问题的能力。为了预防这些网络上的不正当行为,特别需要理解Internet在安全方面的特性,以便采取适当的防范对策。
1. TCP/IP的协议结构
TCP/IP作为通信协议,它是一组协议的集合,其中有我们常见的TCP和IP协议,也有用于管理通信方法的协议,也有测试网络状态等工具性的协议。
支持因特网通信的TCP/IP是以TCP协议和IP协议为中心构成的协议群的总称。TCP/IP通信协议从最底层开始,是由网间层、传输层以及应用层构成的。像这样的构成层次,可以使开发工作形成模块式开发。
2. 按TCP/IP的协议层,对其安全性探讨
2.1网间层在安全方面的隐患主要包括以下几种:
(1)伪造IP地址
在Internet中,各个设备是按照预先分配的IP地址或者通过DHCP的方式来分配IP地址来标识。于是,如果其中的某个设备设置成其他设备所属的IP或者冒充网关向设备发送数据包,就会造成通信混乱,从而导致网络瘫痪。举个简单的例子,以太网上抢夺其他计算机的IP,就可以谎称是被抢夺计算机IP数据包的源地址。致使在这种情况下,被冒充的计算机上会出现显示IP地址冲突的提示框。而且在这种状态下,也不能保证计算机能够正常运行。对于这样的伪造IP地址(IP Spoofing:IP欺诈)的攻击行为,需要采取以下的措施:
> 利用网络监视工具,对冒充源地址的数据包通过外部网络进行检查,确认是否真正来自于送信源地址。
> 在服务器上生成对于远程接入进程的记录机制,用来见识服务器的适用情况。
(2)伪造ARP
在网间层上,虽然在设置发送端与接收端时,利用了IP地址通信,但在作为物理层之一的以太网上却利用了MAC地址来标识发送端与接收端的地址。像这种网间层的IP地址体系与数据链路层的MAC地址体系相互对应的分配取决于地址解析协议(ARP)。计算机在通信时首先利用ARP获得与目的IP地址所对应的MAC地址。从减少通信流量的观点出发,一旦给予对应MAC地址的IP地址,这种对应组合将在ARP表中保持一定时间的缓存,这样通过发送伪造的ARP数据包就可以改写这个缓存。
作为防范上述攻击行为的对策,可以采取两种方法:
> 利用保证IP数据包合法性的IPSec中的AH的认证功能
> 采用使应用软件具备对通信过程进行加密的方式以及强化认证机构。
2.2传输层上存在的安全隐患主要包括以下几种:
(1)假冒TCP初始序号
在通信过程中,采用被称为三次握手的步骤建立起来的TCP连接。在这个过程,对于使用IP地址认证的应用程序,如果可以顺推出初始序号,那么只要模拟发送端的IP地址,就可以建立TCP连接。不过现在的操作系统中,初始序号的分配方法已变得相当复杂,事实上序号已不能随便推测。
(2)利用TCP/UDP数据包的DoS攻击
DoS攻击是通过生成大量的、已处于连接状态的TCP连接,使TCP/IP模块陷入崩溃状态的操作。对于以操作系统为目标的攻击,可以通过导入具备屏蔽TCP SYN数据包功能的防火墙来防范。
2.3应用层上存在的安全隐患主要包括以下几个方面:
(1)扫描/搜索
对信息系统的非法入侵,是通过收集作为攻击目标的设备以及用户的相关信息开始的。首先通过扫描搜索设备,同时通过BBS、网络新闻以及主链接清单等资源数据收集用户的信息。扫描用户的设备后,通过截取用户的通信数据或数据包、收集认证信息以及尝试用户密码等方法,使自己能够获得对计算机信息和资源的读写权以及控制权,从而再访问该计算机。
(2)DNS欺骗
DNS欺骗是一种从外部改写由DNS服务器管理的主机名与IP地址对应表的攻击方式。如前所述,在Internet世界中,计算机以及路由器是通过被分配的、特有的IP地址来识别的。但是IP地址作为一串数值,人们不便于记忆,因而出现了主机名这一概念。DNS是提供IP地址与主机名对应的机制,因此,一旦这种对应关系出现问题,那么IP数据包就不能够被发送到主机名所对应的IP地址。DNS欺骗的一个简单事例,就是在IP地址与主机名对应表的hosts文件中,进行对应关系不一致的设定。所以对于用户来说,接收网络安全方面的教育是非常重要的。
(3)窃听用户认证信息
这种行为大多是在非法侵入计算机后,安装木马程序,以非法手段获取该计算机所连接的网络的通信信息。特别是将以非加密报文形式传输数据的TELNET、FTP、POP以及HTTP等作为监听对象,来获取密码等用户认证信息。
防窃听的对策有以下两种:
> 在通信过程中进行加密,使得数据包不能被任意读取
> 通过限制注入网络交换机的设备,缩小窃听范围。
(4)利用电子邮件进行的DoS攻击
利用电子邮件进行的拒绝服务攻击包括:反复频繁发送大数据量的电子邮件,耗尽磁盘空间的电子邮件炸弹,以及通过其他的邮件服务器,连续发送邮件造成第三方延迟等等。
互联网工作工程小组最近了一种新的邮件认证技术说明,该说明加入了域名密钥识别邮件技术(DKIM),希望借此来加速对抗垃圾邮件。它把IP地址和邮件的发送人放在一起进行分析,然后通过公共密钥加密,给邮件加上一个数字签名,这个数字签名包含着发件人的域名。
(5)病毒
计算机病毒是附着于程序中可以自我繁殖的程序。现在所发现的病毒一般具有以下的形态:
* 以篡改或破坏计算机中所存储的数据为攻击目标
* 利用用户作为中介(U盘、电子邮件等)来进行传播。
2011年影响最大的十大病毒之中,鬼影病毒、QQ群蠕虫病毒QQ假面病毒、DNF假面病毒、新型QQ大盗等新老变种病毒榜上有名。对于病毒的防护,我们要加强计算机安全意识,提高警惕,不随便访问不可靠网站,定时对计算机进行查杀病毒。
3.结束语
通过对TCP/IP协议层的安全问题进行阐述及分析,不难发现其在设计上存在很多安全隐患,黑客或黑客工具往往利用这些隐患对网络进行攻击,只有充分了解这些隐患并采取相应的防范措施,才能增强网络的安全性。
参考文献:
[1]石志国等编著.计算机网络安全教程[M]. 北京交通大学出版社;北京:,2004
[2]李美萍. TCP/IP协议体系的安全性探讨[J]. 山西通信科技, 2007(4): 11-13.
关键词:FPGA;以太网;TCP/IP协议;DM9000
中图分类号:TP301 文献标识码:A 文章编号:1672-7800(2013)005-0022-02
0、引言
随着网络通信技术的飞速发展,越来越多的测试仪器需要将大量数据传送给终端计算机进行解析处理,抑或从PC机传送大量数据给相应设备。现在常用的数据传输方式(usb、总线)中,虽说数据传输的速率较快(可达400Mb/s),但是传输距离过短成为其不可避免的缺点。而百兆以太网中点对点间的数据传送距离可达100m,如果借助交换机或者路由器等设备可以实现更远距离传输。本文以FPGA为基础,在硬件上完成简化的TCP/IP协议栈,用来获取必须的协议处理机能,实现三态以太网嵌入式系统设计。
1、系统硬件设计
该系统以Altera公司的EPIC12型FPGA芯片作为中心控制单元,另外还需两片作为缓存数据用的SRAM,以太网接口芯片采用DM9000。系统具体硬件框图如图1所示。
DM9000是一款全集成、功能强大、性价比高的快速以太网MAC控制器。该芯片拥有一个通用处理器接口、10/1()()PHY、EEPROM和16kB的SRAM。DM9000支持8位、16位以及32位的接口访问内部存储器,可以支持不同型号的处理器。该芯片的PHY协议层接口完全可以使用10MBps下的3/4/5类非屏蔽双绞线和100MBps下的5类非屏蔽双绞线,很好地对应IEEE 802.3u规范。DM9000实现以太网媒体介质访问层(MAC)和物理层(PHY)的功能,其中包含MAC数据帧的组装/拆分与发送接收、地址的识别、CRC编码/校验、MLT-3编码器、接收噪声抑制、输出脉冲形成、超时重传、链路完整性测试、信号极性检测与纠正等。
2、TCP/IP协议实现
2.1 TCP/IP协议
TCP/IP协议就是传输控制协议/互联网协议,它是一个真正实际的开放性通信协议规范,其开放式的特点使得计算机之间都可以通过此协议来完成数据的交换,而不管这些设备拥有不同的物理特性或者各自运行着不同的系统。
与其它网络协议相同,TCP/IP协议的开发也是分不同层次进行的。与ISO开发的OSI模型相比,TCP/IP的四层模型显得更为灵活,原因在于它着重强调功能分布而不是功能层次的划分。
ARP协议负责IP地址与MAC地址之间的转换工作,IP协议实现网络层数据的封装工作以及路由功能,而TCP和UDP是运输层的协议,主要完成传输数据的封装、实现可靠稳定传送以及流量的监控。ICMP是报文控制协议,它是一种辅协议,所具有的Ping功能可以用来诊断网络性能。在一个正常通信过程中,ARP/IP协议是必需的,而TCP/UDP实现一种即可。在FPGA用硬件完成ARP\P和UDP比较简单,而TCP协议在连接时的握手机制、数据发送接收的校验机制以及流量的控制,实现起来较为复杂,因此从系统的复杂度来考虑,本文并没有实现TCP/IP协议,实现了相对较为简单的UDP协议。
2.2 系统模块构成
本系统的协议栈功能由网络控制模块、数据接收解析模块、ARP应答发送模块、Ping应答发送模块、UDP发送模块和调度模块构成。每个模块间相互的接口联系如图3所示。
因为每个模块都有分时访问DM9000接口总线的要求,所以必须要有一个调度模块执行中心控制工作,利用开始与结束信号来同步。在接受到中断信号时,调度模块只有在总线空闲状态时才会开启接收模块,接收模块解析完MAC层数据包后会发送对应的请求讯号:ARP应答请求、Ping应答请求,此时必需的应答参数也会输出。在总线空闲时,调度模块会依据请求信号开启对应的应答模块进行工作。接收模块在收到已定义端口UDP数据包后将有效数据写入SRAM中,供其它的应用模块使用。
2.3 DM9000接口控制
DM9000内部存储器由物理层寄存器、链路层寄存器和数据缓冲三部分组成,与该芯片进行的所有数据交换作都必须通过此三部分寄存器来完成。为遵循DM9000接口时序规范,接口逻辑需分层设计,I/O读写模块位于最底层,第二层为物理寄存器读写,接下来是链路层寄存器读写模块,而最上层是初始化模块,主要完成接口芯片内物理寄存器与链路寄存器的初始化工作,比如MAC地址、中断设置以及数据包过滤条件等等。
3、实验结果及系统性能分析
3.1 接收处理能力
在计算机端编写一死循环程序,用来发送有效数据大小为1 400Byte的UDP数据包。当PC端的发送软件运行后,网络传输速率可以达到98Mb/s,利用Ethereal能够看出,相邻的UDP数据包的间隔为10tLs~200tLs。图4为抓取的FPGA引脚信号波形,通道1为DM9000接收的中断信号,通道2为FPGA接收处理开始及结束信号。
3.2 发送处理能力
如果系统以最大速率发送含有1400比特的UDP数据包,传送速率可以达到98Mb/s。因为UDP未设计流量监控与确认功能,所以在编写应用软件的时候需要特别注意,必须加大Socket的缓冲区大小以及增加数据处理的速率,不然会出现数据丢失的现象。
关键词:TCP/IP;网络协议;防御;安全协议
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)03-0485-02
在短期内,基础TCP/IP网络协议不可能进行重新设计和部署实施,无法从根本上改变目前网络面临严重安全威胁的状况。通过部署一些监测、预防与安全加固的防范措施,是增强网络对已知攻击的抵御能力不可或缺的环节。
1 网络各层防范措施
在网络接口层,主要监测和防御的安全威胁的方法是网络嗅探,可以利用防范网络嗅探的思路,检测出局域网中的监听点,并在网络设计上尽量细分和优化网络结构,尽量消除数据广播的情况,并对关键路径上的网关、路由器等设备进行严格的安全防护,以减少网络嗅探造成的影响。此外,对于无线网络而言,应增强链路层加密的强度,同时对各类网络采用加密通信协议,使得在通信过程中,即使遭受嗅探也不会破坏数据要达到的机密性要求。
在互联层上,虽然IP、ICMP、ARP等协议中存在安全缺陷,安全问题带来的风险很难完全避免,但我们可以采用多种检测和过滤技术来发现和阻断网络中可能出现的欺骗攻击,此外也可以增强防火墙、路由器和网关设备的安全策略,对一些用于欺骗攻击的特殊数据包进行过滤,特别是对外部网络进行欺骗攻击的数据包进行出站过滤,只有如此,才能共同维护整个互联网的安全。对关键服务器使用静态绑定IP-MAC映射表、使用IP sec协议加密通信等预防机制,可以有效地增强网络对欺骗攻击的抵御能力。
在传输层,可以实现基于面向连接和无连接服务的加密传输和安全控制机制,包括身份认证,访问控制等。
应用层可以采用加密、用户级身份认证、数字签名技术、授权和访问控制技术,以及主机安全技术,如审计、入侵检测等。
2 网络各层安全协议
为了克服TCP/IP协议栈的安全缺陷和问题,互联网研究机构也在不断地研究和开发一些网络安全协议,IETF、IEEE 802等国际性的网络研究和标准化组织在不断地进行讨论和改进,并作为标准化协议规范对业界进行,使得业界能够在这些标准在网络设备、操作系统中实现和应用这些安全协议,从而增强现有网络的安全性。在TCP/IP协议栈各个层次上运用的网络安全协议如下表1所示。
2.1 网络接口层的安全协议
网络接口层的安全协议设计和标准化主要由IEEE802委员会负责推进,由于无线网络传输媒介的共享特性,因此比有线网络更加需要安全保护机制,目前常用的802.11WiFi、蓝牙(Bluetooth)等无线网络均实现了用于身份认证、加密传输和防止假冒篡改攻击的安全协议,如WEP(Wired Equivalent Privacy)和WPA/WPA2(Wi-Fi Protected Access)协议等。此外IEEE802委员会还制定了802.1X协议,提供了基于端口访问控制的接入管理协议标准,为各种不同类型网络中的用户认证和访问控制给出了通用的解决方案。
2.2 网络互联层的安全协议
网络互联层目前最重要的安全通信协议主要是IP sec协议簇。IP sec (Internet Protocol Security),即互联网安全协议,是IETF(Internet Engineering Task Force)提供的一系列的互联网安全通信的标准规范,这些是私有信息通过公用网的安全保障。 IP sec适用于目前的IP版本IPv4和下一代IPv6。IP sec规范相当复杂,规范中包含大量的标准文档。由于IP sec在TCP/IP协议的核心层――IP层实现,因此可以有效地保护各种上层协议,并为各种安全服务提供一个统一的平台,IP sec也是被下一代互联网所采用的网络安全协议。 IP sec协议是现在VPN开发中使用最广泛的一种协议,有可能在将来成为IPVPN的标准。
IP sec协议簇的基本目的是把密码学的安全机制引入IP协议,通过使用现代密码学方法支持机密性和认证服务,使用户能有选择地使用,并得到所期望的安全服务。IP sec将几种安全技术结合形成一个完整的安全体系,包括安全协议部分和密钥协商部分。IP sec的安全协议主要包括AH协议(Authentication Header,认证头)和ESP协议(Encapsulate Security Payload,封装安全载荷)两大部分:AH认证协议提供五连接的完整性、数据源认证和抗重放保护服务,但是AH不提供任何机密性保护服务;而ESP协议则为IP协议提供机密性、数据源验证、抗重放,以及数据完整性等安全服务。其中,数据机密性是ESP的基本功能,而带有数据源身份认证、数据完整性检验以及抗重放保护等功能。此外IP sec中还包含了密钥协商和交换协议,如Internet密钥交换协议(Internet Key Exchange,IKE),负责处理通信双方的协议及算法的协商,产生并交换加密和认证密钥,以建立起AH和ESP协议需要的通信双方安全关联(Security Association,SA)。
IP sec协议支持隧道及传输两种模式。隧道模式用于主机与路由器或两部路由器之间,保护整个IP数据包。通常情况下,只要IP sec双方有一方是安全网关或路由器,就必须使用隧道模式。传输模式用于两台主机之间,保护传输层协议头,实现端到端的安全。它所保护的数据包的通信终点也是IPsec终点。传输模式下,IP sec主要对上层协议即IP包的载荷进行封装保护,通常情况下,传输模式只用于两台主机之间的安全通信。
由于工作在互联层上,IP sec协议能够为IP协议之上的任何网络应用提供安全保护机制,而网络应用无需任何的特殊设计和实现,就可以使用IP sec.
2.3 传输层的安全协议
传输层上的安全协议主要是TLS(Transport Layer Security),其前身是由Netscape公司所开发的SSL(Secure Socket Layer),目前最新版本是IETF的TLS l.2标准化网络安全协议(RFC 5246)。TLS协议在传输层上通过密码学算法,为应用层的网络通信提供了安全的点到点传输,在Web浏览、电子邮件、即时通信和VoIP (Voice over IP)等网络应用服务中得到了广泛使用。
TLS协议基于密码学算法支持在互联网上的身份认证和通信机密性保护,能够防止窃听、干扰和消息伪造。TLS协议包括两个协议组:TLS记录协议和TLS握手协议。 TLS记录协议位于可靠的传输协议TCP之上,用于封装各种高层协议,提供的安全性具有两个基本特性。
① 加密:使用对称加密算法(如 DES、RC4等)进行数据加密,以保证传输数据的机密性,对称加密所产生的密钥对每个连接都是唯一的,对称密钥由TLS握手协议进行协商,记录协议也可以不使用加密。
② 可靠:信息传输使用密钥进行消息完整性检查,通常使用安全哈希函数(如SHA、MD5等)来计算消息完整性校验和(Message Authentication Code,MAC)。
TLS握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前,进行单向身份认证,或者彼此之间相互认证,并协商加密算法和加密密钥。
TLS协议已被用于封装整个网络栈以创建虚拟专有网络(Virtual Private Network,VPN),如开源的Open VPN软件,一些厂商也将TLS的加密和认证机制与访问授权相结合,研制出功能更强的SSLVPN产品,与传统的IP sec VPN技术相比,TLS在防火墙和网络地址转换(Network Address Translation,NAT)设备穿越方面具有内在的优势,使其在存在大量远程访问用户的环境中具有更好的易管理性。
2.4 应用层的安全协议
在应用层,安全通信协议的特点是需要针对不同的应用安全需求,设计不同的安全机制,例如HTTP安全、电子邮件、远程控制、电子交易等,在安全协议设计过程中也会尽量地使用底层协议已经提供的安全防护能力。
对于万维网访问进行安全防护的主要协议是安全超文本传输协议(Secure Hypertext Transfer Protocol,HTTPS),基于传输层安全协议TLS实现,端口号为443,通常应用于电子商务、资产管理等应用,随着近年来的发展,HTTPS在Web上逐步流行,在涉及个人敏感信息的登录及使用环节,安全的网站一般都会使用HTTPS协议进行加密传输和身份认证。
安全电子邮件协议(Secure/Multipurpose Internet Mail Extensions,S/MIME),由RSA公司提出,是电子邮件的安全传输标准。S/MIME使用PKI数字签名技术,支持消息和附件的加密传输,采用单向散列算法,如SHA―1、MD5等,也采用公钥机制的加密体系,证书格式采用X.509标准。目前大多数电子邮件产品都包含了对S/MIME的内部支持,网络管理员应启用该安全协议,从而避免了电子邮件明文传输所面临的信息泄露等安全风险。
3 结束语
TCP/IP协议是互联网得以蓬勃发展的基础,然而TCP/IP协议在开始设计时并没有考虑到现在网络上如此多的安全威胁,因此不可避免地遭遇了各种形形的攻击方式。本文介绍了网络各层上的防范措施和安全协议,包括它们的技术原理和具体过程。应对网络协议的攻击威胁,TCP/IP协议也正在进行着完善和改进,对于防御者而言,应采用最新的安全协议来武装自己的网络,从而降低网络安全风险。
参考文献: