确定单一沟通

时间:2014-03-24 19:26:12

标签: http tcp wireshark packet analyzer

我在确定TCP建立的通信时遇到问题。 我必须确定第一个完成的通信,例如第一个完整的http通信。 我有转储.pcap文件与捕获。我知道通信应该从三次握手(SYN,SYN-ACK,ACK)开始,然后从双方通过双FIN标志关闭通信。

但我在该转储文件中有很多通信。 所以这是问题所在。我需要记住哪些东西才能与一次通信完全匹配?

我考虑过源IP,目标IP,协议,也许端口,但我不确定。

感谢您的一切建议。 对不起我的英语。

2 个答案:

答案 0 :(得分:0)

识别第一个完成的通信是高度协议特定的。您使用过滤器走在正确的轨道上。如果您的协议是常用协议,则有一些称为协议分析器和过滤器的插件可以从pcap数据流中找到“对话”。如果您知道大致的开始时间和结束时间,也会缩小范围。

答案 1 :(得分:0)

你说你需要:

  1. 识别特定会话
  2. 识别第一个已完成的对话
  3. 您可以通过过滤来识别特定的TCP或UDP会话 连接的5元组:

    1. 来源IP
    2. 源端口
    3. 目标IP
    4. 目的港
    5. 传输(TCP或UDP)
    6. 正如Shane所说,这与协议有关,例如ICMP没有这个概念 像TCP和UDP这样的端口。

      如下所示的libpcap过滤器适用于TCP和UDP:

      tcp and host 1.1.1.1 and port 53523 and dst ip 1.1.1.2 and port 80
      

      使用tcpdump:

      应用它
      $ tcpdump -nnr myfile.pcap 'tcp and host 1.1.1.1 and port 53523 and dst ip 1.1.1.2 and port 80'
      

      要识别第一个已完成的连接,您必须遵循时间戳。

      使用像Bro这样的工具来读取PCAP会产生答案,因为它会列出每个连接 尝试看到(完整或不完整):

      $ bro -r myfile.pcap
      $ bro-cut -d < conn.log | head -1
      2014-03-14T10:00:09-0500    CPnl844qkZabYchIL7  1.1.1.1 57596   1.1.1.2 80  tcp http    0.271392    248 7775    SF  F   ShADadfF    14  1240    20  16606   (empty) US  US
      

      使用TCP的标志数据来判断是否有成功的握手和拆除。 对于其他协议,您可以根据发送和接收的字节数进行判断。