У меня есть устройство (локализатор GPS), которое отправляет пакеты TCP (я так думаю) на мой сервер по указанному IP-адресу и через данный порт. Поскольку у меня есть только SSH-доступ к этому серверу, я открыл две сессии и запустил tcpdump(с правильными параметрами) в одной из них, а мой собственный слушатель (написанный на PHP) - во второй.
Когда я соединяюсь с этим IP и портом из любого из моих браузеров, я ясно вижу трафик, захваченный обоими tcpdumpи моим собственным слушателем. Итак, я предполагаю, что все работает отлично.
Однако, когда я заставляю свой локализатор отправлять данные на этот IP / порт, только tcpdumpотвечает, показывая, что он что-то захватил, в то время как вывод моего собственного слушателя остается пустым.
Я новичок в сети и TCP, так что, возможно, я ошибочно предположил, что это TCP-соединение. Может ли кто-то с большим опытом подтвердить это, взглянув на то, что tcpdumpзапечатлено
Это действительно соединение TCP (тип пакета)? Если да, то может кто-нибудь иметь представление о том, почему мой слушатель не отвечает, в то время как он правильно отвечает на TCP-соединение из браузера? Если это не TCP-соединение, то что это? Что должен слушать мой слушатель, чтобы захватить этот вид трафика?
РЕДАКТИРОВАТЬ : Что меня беспокоит здесь больше всего, так это то, что каждое соединение от моего локализатора помечается с tcpdumpпомощью length 0(хотя ответный ответ всегда имеет некоторую длину). Но я заметил, что подключения к браузеру также помечены length 0, так что, возможно, это не настоящая проблема.
Clarification: When you say listener, do you mean network sniffer, or do you mean a service (the passive end of the connection) that has called ?
ctrl-alt-delor 11 лет назад
0
@ Richard: Вы говорите с новичком в сети! :] Мой слушатель (должен) вставлять любые (правильно отформатированные) данные, он получает их в БД и не передает никуда больше. Так что я думаю, это скорее пассивный конец, чем сниффер. Данные, отправленные моим локализатором, на 100% адресованы моему слушателю и больше нигде.
trejder 11 лет назад
0
ОК, путаница заключалась в том, что tcpdump - это сниффер, а wireshark - еще один, который может прослушивать провода, используя третий компьютер. Но вы говорите о пассивном конце (слушатель, не путайте с читателем. Поскольку оба конца могут читать (соединение становится симметричным, как только соединение установлено)))
ctrl-alt-delor 11 лет назад
0
2 ответа на вопрос
1
ctrl-alt-delor
just to answer the last bit (you say this is the most worrying)
This is what I see: all data has a length, all without data (syn,ack,fin,rst) have length 0. It looks OK.
87.111.103.7 port 2020 -- 192.168.1.2 port 7777 syn -> <- syn ack ack -> <-data ack -> data -> <- ack data -> <- ack <- fin fin -> rst ->
Спасибо за ваш ответ. Но как насчет моего реального вопроса? Это правильная передача по TCP? Если да, то у вас есть идея, почему мой слушатель не захватывает это? Я использовал простую форму прослушивателя TCP [Страница примеров PHP.net] (http://php.net/manual/en/sockets.examples.php) - версия обновлена для целей нескольких клиентов и с некоторыми моими собственными исправлениями. Он отлично фиксирует TCP-соединение от любого браузера, но остается глухим ко всему, что отправляет мой локализатор.
trejder 11 лет назад
0
Может быть, покажите нам код, который вы написали.
ctrl-alt-delor 11 лет назад
0
Код довольно длинный, и, поскольку он почти такой же, как на [Пример страницы сокетов PHP.net] (http://php.net/manual/en/sockets.examples.php), я думаю, он будет лучше направить вас туда. Это то, что я написал в моем предыдущем комментарии. Если вы хотите увидеть код, который я использую для моего слушателя, перейдите на [Пример страницы сокетов PHP.net] (http://php.net/manual/en/sockets.examples.php) и прокрутите вниз для внесенных пользователем заметок (внизу страницы, пример Хавьера). Спасибо!
trejder 11 лет назад
0
0
Stefan Seidel
Your dump looks good. Your device (I assume it's the 192.168.1.2) sends packets of length larger than 0 and your server acknowledges the receipt via 0-byte ACK packets. It will certainly be helpful for you to include -XX in your tcpdump command line.
tcpdump -XX port 2020
Конечно, это будет полезно. Но нет проблем с `tcpdump` только с моим слушателем PHP - как написано в комментарии выше. Я пытаюсь выяснить, почему мой слушатель остается глухим к локализатору форм соединений (`tcpdump` перехватывает его), в то время как он прекрасно работает, например, для соединений из веб-браузеров?
trejder 11 лет назад
0
Ну, я имею в виду полезный в том смысле, что он покажет вам, какие данные ваш слушатель __should__ получает. Например, если устройство отправляет только NUL-байты, то вывод вашего слушателя, скорее всего, не будет отображаться.
Stefan Seidel 11 лет назад
0
Thanks! I've included `-xx` in command and did extra info. No, the question is, how can I manually decode, what it has captured -- i.e.: `0x0000: 0008 9bc0 2fb6 74ea 3ae4 64aa 0800 4500 0x0010: 0044 b847 4000 0706 3be3 53dc 6a03 c0a8 0x0020: 0102 07e4 1e61 59ad ed28 0000 0000 c002 0x0030: 1400 1b76 0000 0204 0550 0103 0300 0101 0x0040: 080a 0000`? Is this just a hex notation of real data being sent by my localizer?
trejder 11 лет назад
0
С `-XX` (заглавная X) вы также получите нотацию ASCII. Если предоставленные вами данные - это все, что у вас есть, то похоже, что ваш локализатор отправляет пакеты данных emtpy. Возможно, вам придется проверить документацию устройства. Еще один вариант таков: вы останавливаете прослушиватель PHP и вместо этого запускаете прослушиватель командной строки, например: `nc -l 7777 | hexdump -C` (обратите внимание на заглавную C).
Stefan Seidel 11 лет назад
0
Ну, [здесь] (http://pastebin.com/Wjs6p846) - это вставка для всего, обычно tcpdump получает из этого локализатора. Я был почти уверен, что тот факт, что он отправляет мусор, является причиной того, что слушатель PHP не может перехватить этот трафик. Нет, я использую очень ограниченный Linux (NAS, не полный сервер) и не могу / не могу установить `nc`. И нет - насколько мне известно, нет документации, API или руководства для разработчиков / опытных пользователей этого локализатора (дешевый Китай TK102). Только некоторые основы для новичков, как это настроить.
trejder 11 лет назад
0