У меня есть два оборудования (встроенные устройства), которые я настроил для связи через TCP через Ethernet в режиме клиент / сервер.
Топология сети следующая:
-----
| S ||=|== Debug PC (w/ Wireshark) 192.168.10.41
| W ||=|== Hardware 1 TCP Client 192.168.10.42
| I ||=|== Hardware 2 TCP Server 192.168.10.40
| T |
| C |
| H |
-----
Когда Оборудование 1 пытается отправить пакеты на сервер, Оборудование 2, оно отправляет ARP-пакет, чтобы сначала получить MAC-адрес оборудования 2:
No. Time Source Destination Protocol Length Info
157 11772.776136 Microchi_13:c3:6a Broadcast ARP 60 Who has 192.168.10.40? Tell 192.168.10.42
Однако он не получает ответа от сервера, а через несколько секунд сервер ARP отправляет клиентский MAC-адрес:
No. Time Source Destination Protocol Length Info
158 12183.800839 00:3f:2d:02:1a:35 Broadcast ARP 60 Who has 192.168.10.42? Tell 192.168.10.40
Который также не получает ответа от клиента. Я очень смущен.
Я знаю, что сервер отвечает правильно, так как я написал простой TCP-клиент на C #, который мог подключаться и отправлять пакеты на сервер с отладочного ПК.
Я не уверен, почему мой аппаратный клиент не может связаться.
Заранее благодарны за Вашу помощь.
Подробная информация о пакетах ARP при необходимости:
От клиента:
Ethernet II, Src: Microchi_13:c3:6a (00:04:a3:13:c3:6a), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Source: Microchi_13:c3:6a (00:04:a3:13:c3:6a)
Type: ARP (0x0806)
Trailer: 000000000000000000000000000000000000
Address Resolution Protocol (request)
Hardware type: Ethernet (1)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (1)
[Is gratuitous: False]
Sender MAC address: Microchi_13:c3:6a (00:04:a3:13:c3:6a)
Sender IP address: 192.168.10.42 (192.168.10.42)
Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff)
Target IP address: 192.168.10.40 (192.168.10.40)
С сервера:
Frame 158: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
Ethernet II, Src: 00:3f:2d:02:1a:35 (00:3f:2d:02:1a:35), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Source: 00:3f:2d:02:1a:35 (00:3f:2d:02:1a:35)
Type: ARP (0x0806)
Trailer: 000000000000000000000000000000000000
Address Resolution Protocol (request)
Hardware type: Ethernet (1)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (1)
[Is gratuitous: False]
Sender MAC address: 00:3f:2d:02:1a:35 (00:3f:2d:02:1a:35)
Sender IP address: 192.168.10.40 (192.168.10.40)
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
Target IP address: 192.168.10.42 (192.168.10.42)
Вы не увидите никаких ARP-ответов на своем порту коммутатора «отладочный компьютер», поскольку они передаются одноадресным хостам назначения. Ваш коммутатор фильтрует одноадресные пакеты в чужие пункты назначения для вашего «отладочного ПК». Если вам также нужно отслеживать одноадресный трафик, вы можете использовать концентратор вместо коммутатора или включить функция "монитора" или "зеркального порта" на вашем коммутаторе (у большинства управляемых коммутаторов есть что-то подобное), чтобы весь трафик, включая внешние одноадресные рассылки, перенаправлялся на порт «отладки ПК».