Почему я не могу отправить этот IP-пакет?

Я пытаюсь отправить IP-пакет с помощью c#.

    destAddress = IPAddress.Parse("192.168.0.198"),
    destPort = 80;

    // Create a raw socket to send this packet
    rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

    // Bind the socket to the interface specified
    IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.140"),0);
    rawSocket.Bind(iep);

    // Set the HeaderIncluded option since we include the IP header
    rawSocket.SetSocketOption( socketLevel, SocketOptionName.HeaderIncluded, 1 );

    // Send the packet!
    int rc = rawSocket.SendTo(builtPacket, new IPEndPoint(destAddress, destPort));
    Console.WriteLine("sent {0} bytes to {1}", rc, destAddress.ToString());

Содержимое встроенного пакета показано ниже. Пакет TCP SYN (думаю, я его все равно создал)

45 00 00 28 00 00 00 00 02 06 36 6E C0 A8 00 8C

C0 A8 00 C6 14 1E 00 50 00 00 00 00 00 00 00 00

05 02 FF FF E6 4F 00 00

Вывод:

sent 40 bytes to 192.168.0.198

Проблема в том, что я ничего не вижу в трассировке Wireshark. чтобы увидеть его?Если я использую браузер для подключения к 192.168.0.198, Wireshark показывает все пакеты, но ничего не показывает, когда я пытаюсь отправить пакет, используя приведенный выше код и данные.

Моя конфигурация:

  • Я работает от имени администратора, так что это не проблема с разрешениями

  • Windows7 (не работает на виртуальной машине)

  • Только беспроводное соединение (IP-конфигурация сообщает свой IP-адрес как 192.168.0.140)

Что я делаю неправильно?

Я уверен, что здесь применима бритва Оккама, но я б een смотреть на это в течение нескольких часов и не может понять, что не так.

8
задан shambulator 11 May 2012 в 11:08
поделиться