На главную
Проблемы с соединением по TCP/IPВ общем случае все выглядит так: вы не можете подключиться к какому-нибудь сетевому сервису. Здесь будет рассматриваться случай, когда и клиент и сервер - ваши. Если какая-то сторона принадлежит не вам (напр. провайдеру), то просто исключите соответствующие пункты из последовательности действий или попросите людей на другой стороне выполнить это. В нашем примере, мы будем считать, что адрес сервера 192.168.0.1 и порт 110 (pop3). Вообщем-то, последовательность действий может быть и не такой, но в любом случае, каждая из этих манипуляций позволяет отследить
сбои на своем уровне, т.о. их использование позволяет локализовать проблему (если проблема со стандартным windows-сервисом,
то лучше сразу смотреть системные журналы). Также просто необходимо знать принципы модели OSI и основы TCP/IP. Если вы "не
в курсе", то лучше сначала сходить на www.citforum.ru, и уже после этого читать дальше.
Если по ходу действия у Вас возникнут вопросы типа "а что это за команда?", то запустите команду с параметром /?
(в интерактивных программах, вроде ftp или nslookup можно набрать в программе "
1. Для начала следует проверить, существует ли связь на уровне IP с нужным хостом. Для этого надо выполнить:
ping 192.168.0.1
ping 127.0.0.1
Итак, мы убедились, что ping проходит по нужному адресу. Теперь стоит попробовать сделать это по имени сервера. Если ответ не возвращается или ping сообщает о невозможности разрешить имя узла, то проблема в разрешении имен — nslookup вам в руки.
2. Если ping проходит по имени и адресу, то полезли на транспортный уровень. Пробуем подключиться с помощью telnet:
telnet 192.168.0.1 110
lsof -i -n -P или
netstat -l -p A inet --numeric (Linux). Если процесс запущен, но порт не слушается, то надо сразу посмотреть, не слушает
ли другой процесс этот порт. Затем, если процесс не запущен, надо попробовать его запустить. Если это не получается или порт
все равно не прослушивается, надо разбираться с приложением. Обычно помогает журнал ошибок (в win в случае системных сервисов
все обычно пишется в системный журнал). Если порт слушается, то причиной может быть то, что некоторые сервисы ограничивают
диапазон адресов, с которых к ним можно подключиться. Также очень полезен режим отладки.Иногда причиной невозможности подключиться может быть firewall на пути между сервером и клиентом. В этом случае можно попытаться подключиться к сервису с той же машины, где он запущен - обычно firewall'ы и сами сервисы не блокируют доступ с localhost. Все вышеизложенное справедливо для приложений, использующих TCP. Если используется UDP (DNS), то работать нужно только с помощью специального клиента (nslookup, dig). Также, некоторые программы вроде X-Spider позволяют посылать вручную сформированные данные через UDP. 3. Если подключиться удалось, то пробуем выполнить типичный сеанс для данного протокола. Это получится, если его данные передаются в текстовом виде. Обычно большинство распространенных протоколов (http, pop3, smtp) работают через передачу plain text. В случае если это не так, то кроме использования специфичного клиента, подробно отображающего пересылаемую информацию для данного протокола других вариантов нет (например, nslookup для DNS). Использование telnet позволит напрямую работать с сервисом на сервере. В нашем случае это будет что-то вроде:
telnet pop.mail.ru 110 +OK mPOP POP3 v1.102+rb2 server ready <1342455986.1057605587@mail.ru> user vasya_pupkin +OK Password required for user vasya_pupkin pass password +OK vasya_pupkin@mail.ru maildrop has 14 messages (50271 octets) stat +OK 14 50271 quit +OK POP3 server at mail.ru signing off
telnet 192.168.0.1 80 GET http://192.168.0.1/ HTTP/1.1 <Пустая строка> <Enter> Сервер выдаст начальную страницу. Если вы дошли это этого момента и через telnet провели нормальную сессию с сервером, то дело, скорее всего,
в клиенте. Вообще, следует заметить, что очень полезно знать основные команды наиболее часто используемых протоколов (ftp, http, smtp, pop3). В случае с ftp вы сможете подключить к серверу и пройти аутентификацию, но просмотреть список папок и файлов и получить файл вам не удастся, по крайней мере, без сильных извращений. Также, еще раз повторюсь, что включенный на сервере режим отладки является незаменимым инструментом. Например, в продуктах Kerio возможно включение отладки по разным категориям событий (разрешение имен, установка соединений, работа с ящикми и пр.) В Unix-like демонах обычно настраивается пути вывода логов работы и степень их детализации. Чтение документации по Syslog тоже очень полезно. |