TCP报文重组和会话的唯一确定规则

基本概念

四元组:源IP地址、目的IP地址、源端口、目的端口。

五元组:源IP地址、目的IP地址、协议号、源端口、目的端口。

六元组:源MAC地址、源IP地址、源端口号、目的MAC地址、目的IP地址和目的IP地址。

七元组:源MAC地址、源IP地址、源端口号、目的MAC地址、目的IP地址和目的IP地址和协议号。

 

五元组确定一个会话还是四元组?

五元组通常是指由源IP地址,源端口,目的IP地址,目的端口和传输层协议号这五个量组成的一个集合。例如:192.168.0.1/10000/TCP/121.14.88.76/80就构成了一个五元组。其意义是,一个IP地址为192.168.1.1的终端通过端口10000,利用TCP协议,和IP地址为121.14.88.76,端口为80的终端进行连接通讯。

五元组能够唯一确定一个会话。

 

在TCP会话重组时,使用序列号确定TCP报文顺序可以解决数据报文不按顺序到达及其重传问题,并且利用二维链表对TCP会话就行还原。难点在于解决多连接问题、IP包乱序到达和TCP会话重传的问题

原因:TCP协议是TCP/IP协议族中一个重要组成部分,TCP数据流的重组是高层协议分析系统设计和实现的基础。TCP协议是面向连接的可靠传输协议,而TCP下层的IP协议却是面向报文的不可靠协议,这回带来问题:IP不能保证TCP报文可靠的、顺序的传输。为了解决这个问题,TCP采取滑动窗口机制、字节流编号机制和快速重传算法机制等。这可以保证数据的可靠传输。

TCP会话(TCP_Session_IDT)可以通过四元组<源IP地址、目的IP地址、源端口号和目的端口号>唯一标识

使用HASH表快速查找定位的特征,解决多个TCP会话同时处理的问题,快速处理多个会话问题。

在TCP头中Sequence Number是判断该数据包是否重传和包乱序的重要参数。在TCP连接刚建立时,会为后续TCP传输设置一个初始的SequenceNumber,每传送一个包含有效数据的TCP包,后续传送的TCP数据包的Sequence Number会作响应的修改,如果前一个包长度为N,则这个包的Sequence Number为前一个包Sequence Number加N。它是为保证TCP数据包按序传输来设计的,可以有效的实现TCP数据的完整传输,特别是当数据传输出现错误时可以有效进行错误纠正。

TCP重组数据文件写指针的SYN算法如下:

File_Init_Write_Pointer= Init_Sequence Number + 1;

File_write_Pointer= Current Sequence Number – File_init_Write_point;

检查TCP会话中是否存在空洞,可以来确定会话重组成功、失败和超时。

TCP建立连接需要3次握手,而终止一个连接需要4次握手。这是因为一个TCP连接时全双工的,每个方向必须单独的进行关闭。

规则1:六元组<源MAC地址、源IP地址、源端口号、目的MAC地址、目的IP地址和目的IP地址>,协议号是TCP,它应该是唯一的会话

规则2:TCP头中4元组<syn、fin、seq、len>,它应该是唯一的,不唯一说明存在重传情况。

"TCP previous segment not captured"是指在网络数据包捕获过程中,某个TCP报文的前一个段未被正确捕获到。这可能是由于捕获设备或软件的性能限制或配置问题导致的。 在网络数据包分析和捕获过程中,使用抓包工具(如Wireshark)可以截获网络中的数据包,并提供对这些数据包的分析和解读。当出现"TCP previous segment not captured"的警告或提示时,意味着在捕获网络数据包时,某个TCP报文的前一个段没有被完整地捕获到。 这可能会导致在分析和重构TCP会话时出现一些困难。TCP协议是基于顺序传输的,每个TCP报文都依赖于前一个报文的正确接收和处理。如果前一个报文没有被完整捕获,可能会导致后续报文重组和解析出现问题。 有几种原因可能导致"TCP previous segment not captured"警告的出现,包括: 1. 捕获设备或软件性能不足,无法及时处理大量的数据包。 2. 捕获设备或软件配置问题,未正确设置过滤规则或缓冲区大小。 3. 网络拥塞或高负载情况下,数据包丢失或延迟导致部分报文未能被捕获。 解决"TCP previous segment not captured"问题的方法包括: 1. 使用更高性能的捕获设备或软件,确保能够处理大量的数据包。 2. 检查捕获设备或软件的配置,确保设置正确的过滤规则和适当的缓冲区大小。 3. 在网络拥塞或高负载情况下,考虑增加带宽或优化网络配置,以减少数据包丢失和延迟。 请注意,"TCP previous segment not captured"只是一个警告或提示,可能不会对网络性能或应用程序产生实质性影响。但如果需要进行深入的网络分析和故障排查,确保准确捕获并解析所有TCP报文是很重要的。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值