2012-05-11 13 views
8

C# kullanarak bir IP paketi göndermeye çalışıyorum.Bu IP paketini neden gönderemiyorum?

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()); 

BuiltPacket içeriği aşağıda gösterilmiştir. Bu bir TCP SYN paketi içeren bir IP paketidir (Bu, zaten yarattığımı düşündüğüm şey). 00 00 00 00 00 00 00 00

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

C0 A8 00 -C6 14 1E 00 50

05 02 FF FF E6 4F 00 00

çıktısı:

sent 40 bytes to 192.168.0.198 

sorun Wireshark izlemesinde bir şey görmüyorum olduğunu. Veriler, Wireshark'ın onu görmesi için yeterince aşağıya doğru gitmiyor gibi mi? 192.168.0.198'e bağlanmak için bir tarayıcı kullanırsam, Wireshark tüm paketleri gösterir, ancak yukarıdaki kodu ve verileri kullanarak bir paket göndermeye çalıştığımda hiçbir şey göstermez.

Benim yapılandırma: Bir izinler sorun yani

  • Ben yönetici olarak çalıştırıyorum.

  • Windows7

  • Kablosuz bağlantı sadece yanlış yapıyorum

(IP yapılandırma 192.168.0.140 olarak IP raporlar) (bir VM çalıştıran değil)?

Eminim Occam'ın Razor'u burada geçerlidir, fakat bu saatlerce bakıyorum ve neyin yanlış olduğunu anlayamıyorum.

+1

Wireshark'da herhangi bir filtre ayarınız var mı? – Default

+1

Alıcı paketi alıyor mu? –

+0

"Host 192.168.0.198" filtresiyle çalıştım ve filtre yok, ancak uygulamamdan da hiçbir şey almadım. – TonyM

cevap

3

This question, backed up by MSDN, Windows'un artık (XP SP 2'den 7'ye kadar) ham soketleri kullanarak TCP verilerinin iletilmesine izin verdiğini iddia eder.

+0

Hiçbir TCP veriyi, hiç yük taşımayan bir TCP SYN paketi göndermiyorum. – TonyM

+3

IMHO TCP, TCP'nin içeriği önemli değil. – rekire

+0

@rekire Bu benim de tahminim olurdu. – shambulator

0

Tahminimce, Wireshark doğru ağ arabirimine bakmıyor ya da hedef IP adresi bir şekilde yerel makineye çözümleniyor, bu durumda işletim sisteminin içinde yönlendirilecek ve 'Köpekbalığı'na görünmeyecek.

+1

Wiresharks, 192.168.0.140 sürümüne bakıyor. Hedef IP adresini bir tarayıcı URL'sine koyarsam, ona bağlanır ve Wireshark'ta görünür. – TonyM