2015-06-20 5 views
0

Я пытаюсь читать пакеты, отправленные с клиентов на сервер. Я использую sharpPcap в C#. Как я могу понять пакет TCP ЗАКРЫТЬ пакет в этом случае:Как понять пакет TCP CLOSE-пакет с sharPcap

private static void device_OnPacketArrival(object sender, CaptureEventArgs e) 
    {   
     var time = e.Packet.Timeval.Date; 
     var len = e.Packet.Data.Length; 

     var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); 

     var tcpPacket = PacketDotNet.TcpPacket.GetEncapsulated(packet); 
     if(tcpPacket != null) 
     { 
      var ipPacket = (PacketDotNet.IpPacket)tcpPacket.ParentPacket; 
      System.Net.IPAddress srcIp = ipPacket.SourceAddress; 
      System.Net.IPAddress dstIp = ipPacket.DestinationAddress; 
      int srcPort = tcpPacket.SourcePort; 
      int dstPort = tcpPacket.DestinationPort; 

      Console.WriteLine("{0}:{1}:{2},{3} Len={4} {5}:{6} -> {7}:{8}", 
       time.Hour, time.Minute, time.Second, time.Millisecond, len, 
       srcIp, srcPort, dstIp, dstPort); 
     } 
    } 

ответ

0

TCP-близко представлена ​​в протоколе TCP с помощью FIN. Для закрытия обоих концов TCP-соединения будет выполнено 4 способа установления связи. Оба конца будут посылать FIN, а одноранговый сервер получит его. Вы должны быть в состоянии видеть это с вашим захватом из работы.

Может быть, вы можете найти некоторые советы здесь о том, как реализовать это с помощью API: http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET