Я пытаюсь использовать wirehark, чтобы определить, какие порты использует определенная программа. Программа отлично подключается к серверу, если мы находимся в одной сети, но мне, очевидно, нужно перенаправить порты на брандмауэре, чтобы использовать его за пределами офиса.
Включаю wirehark и пытаюсь установить соединение из программы на 192.168.1.6. Затем я смотрю на пакеты, которые идут на 192.168.1.6 и из него.
Все они TCP и говорят:
Source: 192.168.1.130
Dest: 192.168.1.6
Service: TCP
Info: 49716 > 808 [PSH, ACK] Seq=1102 Ack=395 Win=65304 Len=87
или некоторые идут другим путем
Source: 192.168.1.6
Dest: 192.168.1.130
Service: TCP
Info: 808 > 49710 [ACK] Seq=2 Ack=320 Win=254 Len=0
У меня вопрос:
Я так понимаю, это просто порт 808, другой порт (порт источника) иногда меняется между 49710 и 49716, что это означает?
Является ли трафик, идущий в обратном направлении, частью открытого соединения? Или мне нужно убедиться, что на клиентском ПК также есть порт 808 для подключения к их ПК?
Исходный порт для приложений, которым не нужен конкретный исходный порт, как правило, попадает в временный диапазон> 49152. Подробнее Вот.
Пока брандмауэр "отслеживает состояние", другими словами, отслеживает соединения, распознает пакеты из одного и того же TCP-потока как часть одного и того же потока (подавляющее большинство современных брандмауэров делают это), вам нужно будет разрешить соединение только в одном направление (на порт 808).
Порт назначения - это порт на сервере, к которому подключается программа, в данном сценарии это TCP-порт 808. Если вы хотите, чтобы внешние пользователи могли подключаться к серверу за вашим брандмауэром, вам необходимо создать правило в вашем брандмауэре, которое разрешает внешние соединения, входящие на порт 808 сервера. Скорее всего, вам также потребуется создать правило NAT, которое переводит один из ваших маршрутизируемых (общедоступных) IP-адресов в немаршрутизируемый (частный) IP-адрес сервера. Порт на стороне клиента выделяется из пула эфемерных портов и в основном будет отличаться каждый раз, когда программа устанавливает новое соединение с сервером. Соединение между клиентом и сервером представляет собой 4-кортеж, состоящий из IP-адреса / порта источника и IP-адреса / порта назначения. Трафик от сервера к клиенту для установленного сеанса не нужно специально разрешать через брандмауэр (исходящее правило не требуется), поскольку это компонент установленного сеанса на основе вашего входящего правила.
Я думаю, что другие плакаты ответили на ваши два (более или менее) «концептуальных» вопроса, но практически говоря, в Windows вы можете запустить netstat -aon | find ":<portnumber>"
который сообщит вам идентификатор процесса. Затем вы можете использовать диспетчер задач (с добавленным столбцом идентификатора процесса в разделе «Просмотр»> «Выбрать столбцы», как я полагаю), чтобы определить, какой процесс прослушивает определенный порт.
Также, TCPView от Sysinternals работает хорошо.