Я пытался отправить пакеты SYN в своей локальной сети и контроле их с Wireshark, и все работает просто великолепно, кроме тех случаев, когда я пытаюсь отправить пакет в свой собственный IP-адрес, это, "кажется", работает, потому что это говорит Отправленный 1 пакет, но это действительно не отправляется, я не вижу пакет в Wireshark, ни любых ответах на пакет. Моя установка является компьютером (192.168.0.1) с Сервером Сокета TCP, слушающим на порте 40508 и компьютером B (192.168.0.2).
На Компьютере B я тестирую:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
Это хорошо работает, я вижу пакет SYN на Wireshark и ответе SYN/ACK от 192.168.0.1
На Компьютере я протестируйте:
ip=IP(src="192.168.0.1",dst="192.168.0.2")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
Это хорошо работает также, я вижу пакет SYN и RST/ACK (нет никакого сервера, слушающего на порте 40508 на 192.168.0.2, таким образом, это отправляет RST/ACK), ответ от 192.168.0.2
Но когда я примеряю Компьютер A:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
Ничто не появляется в Wireshark, как будто пакет никогда не отправлялся, но он сказал как другие тесты: Отправленный 1 пакет. и не возвратил ошибки вообще. Если я запускаю тот же тест на компьютере B и пытаюсь отправить пакет в его собственный IP-адрес, я получил ту же проблему.
Для моей программы я действительно должен отправить пакет SYN в свой собственный IP-адрес, есть ли способ сделать это, или действительно ли это невозможно?
Заранее спасибо,
Nolhian
Какие сетевые устройства прослушивает ваша установка Wireshark? Я подозреваю, что он прослушивает настоящую сетевую карту (Ethernet, Wi-Fi или что-то еще, согласно Wireshark FAQ ) - и при отправке с компьютера на себя ОС, конечно, может обойти устройство (зачем беспокоиться с ним?) и просто выполните «отправку», скопировав биты внутри стека TCP / IP в память ядра.
Другими словами, я подозреваю, что ваш пакет отправляется нормально, но Wireshark может его не увидеть. Чтобы проверить эту гипотезу, вы можете попробовать (например) использовать свой браузер для посещения существующих и несуществующих портов на вашем локальном компьютере и посмотреть, видит ли Wireshark те пакеты или нет.