一种基于HASH表和SYN计算的TCP会话重组方法

    本文提出一种基于HASH表和SYN计算的TCP会话重组方法,它利用HASH表快速定位的特征和TCP包头中的SYN进行多连接TCP会话重组,可解决IP数据包乱序到达和TCP数据包重传问题。
    一、 引言
    在网络安全领域,TCP会话重组是一个必须解决的关键技术,它广泛应用在入侵检测系统、病毒监控系统、远程监控系统等产品中。只有重组后的数据包才能成为程序可理解的信息,从而对其进行监控。当前大部分入侵检测系统都实现了高效的TCP会话重组,它的难点在于解决多连接问题、IP包乱序到达和TCP会话重传问题。笔者在实际工程经验中摸索了一种基于HASH表和SYN计算的TCP会话重组方法。
    二、TCP会话重组
    传输控制协议TCP(Transmission Control Protocol,RFC 793,RFC 1122,RFC 813,RFC 816,RFC 879,RFC 896,RFC 889,RFC 964)是一个在网络中提供主机到主机高可靠性通信的协议,根据RFC793规定,TCP头的结构如图1所示:
    图1 TCP包首部
    RFC793中规定,TCP头中的序号(Sequence Number)用于指定该数据包在整个会话中的位置,该序号是TCP会话重组的关键。
    图2 TCP会话重组流程
    图2中描述的流程简单地说明了利用HASH表和SYN计算进行TCP会话重组的过程,最终程序将每一个会话完整地保存到不同的文件中。在重组过程中,程序主要用到了两种关键技术:“HASH表”和TCP会话文件写指针“SYN计算”方法。“HASH表”解决了同时处理多个TCP会话的问题。“SYN计算”可以快速地计算TCP会话写入重组数据文件的位置,同时可以有效地解决IP包乱序到达和TCP会话重传问题。
    1.HASH表
    由于程序经常需要同一时刻监控多个TCP会话数据包,这些数据包掺杂在一起,因而程序在进行会话重组时需要同时处理这些不同连接的TCP包。为达到这个目的,我们采用一个HASH表来记录不同的连接信息。HASH表每个节点内包含以下信息:
    ■ TCP_Session_IDT:TCP会话标识。由TCP协议可知,每个TCP会话由源IP地址、目的IP地址、源TCP端口号和目的TCP端口号惟一标识,我们的TCP会话标识也由这四个元素组成,HASH表查找也是基于这四个元素实现。
    ■ File_IDT:文件标识。将不同TCP会话数据保存在不同名的重组数据文件内,因此每个会话都有一个文件标识相对应。
    ■ File_Init_Write_Pointer:写文件初始指针。该初始指针并不表示每个重组数据文件由此指针指向的位置开始写,而是用来计算后续文件指针的。
    ■ File_Last_Visit_time:文件最近一次被访问的时间,用于计算TCP会话超时。基于现有网络状况的考虑,TCP会话超时是不可避免的情况,应当有专门的机制来对此进行处理。我们设置了一个专门的进程来判断TCP会话是否超时,当某个文件长时间没有被访问则说明该文件对应的TCP会话已经超时,可以结束有关此会话的收集。
    利用HASH表快速查找定位的特性,我们解决了多个TCP会话同时处理的问题以及快速对多个会话进行处理的问题。

(责任编辑:adminadmin2008)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

如何运维网站能让其稳定高效之稳定篇

如何运维网站能让其稳定高效之稳定篇

作为一名运维工程师,工作中最大的希望就是自己运维的网站能够稳定高效运行,但理想很...[详细]

黑客、Geek等高手们都是这样上网的

黑客、Geek等高手们都是这样上网的

电脑高手们都会尽可能地寻找各种快捷高效的操作方式,譬如很多快速启动类的工具(如Exe...[详细]

如何选择最佳的数据中心闪存?

如何选择最佳的数据中心闪存?

全闪存数据中心是个未来概念,同样还有不少方法实现数据中心内服务器或基于阵列的闪存...[详细]

手机解锁:图案、数字谁更强?

手机解锁:图案、数字谁更强?

手机九宫格解锁到底安全不?九宫格能画出多少图案啊?我自己设置的九宫格总是被同学分...[详细]

黑客声称一款流行的加密App竟然只用了异或

黑客声称一款流行的加密App竟然只用了异或加密!

一名黑客生成加密程序的作者竟然没有实现其核心的功能:加密! 这位ID为NinjaDoge24(...[详细]

返回首页 返回顶部