Передача сообщений TCP/IP

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

kolesmen
Интересующийся
Сообщения: 3
Зарегистрирован: 05 дек 2013, 04:20
Контактная информация:

Передача сообщений TCP/IP

Непрочитанное сообщение kolesmen » 05 дек 2013, 04:31

Здравствуйте. Просьба о помощи. Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Передача сообщений TCP/IP

Непрочитанное сообщение Olej » 06 дек 2013, 03:22

kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.

Отправить можно разными способами. Зависит, в первую очередь, от номера порта TCP (протокола, см. в /etc/services).
Для многих портов/протоколов существуют штатные клиенты.

P.S. Я выделил ваши сообщения в отдельную тему, потому что это о другом.

kolesmen
Интересующийся
Сообщения: 3
Зарегистрирован: 05 дек 2013, 04:20
Контактная информация:

Re: Передача сообщений TCP/IP

Непрочитанное сообщение kolesmen » 06 дек 2013, 04:19

Olej писал(а):
kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.

Отправить можно разными способами. Зависит, в первую очередь, от номера порта TCP (протокола, см. в /etc/services).
Для многих портов/протоколов существуют штатные клиенты.
Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Передача сообщений TCP/IP

Непрочитанное сообщение Olej » 06 дек 2013, 13:23

kolesmen писал(а):
Olej писал(а):
kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.
Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.
Что значит "не работоспособны в обычном режиме"?
Что это за режим такой? (нет терминалов? не запущена терминальная подсистема и X11? ...)
И в каком другом режиме они работоспособны?

Как бы вы ни называли свои клиентские хосты кластера, для проверки канала они будут выступать как сервера какого-то протокола, а ваша зондирующая программа (консольная) клиент.
И на удалённых хостах вашего кластера должны быть запущены какие-то серверные программы TCP протокола ... иначе никто вам и ни на что не будет откликаться.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Передача сообщений TCP/IP

Непрочитанное сообщение Olej » 06 дек 2013, 13:32

kolesmen писал(а):Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.
Не сильно понятно что дополнительно даст вам использование протокола "с гарантированной доставкой" (TCP) по сравнению с любым другим способом (UDP, ICMP, ...).

Почему простейшего ping для этого недостаточно?

В LAN (а ваша "как бы кластерная система" ;-) работает в LAN почти наверняка, не разнесены же ваши хосты между городами?) пакеты IP, ICMP, UDP практически никогда не теряются, а "сбрасывание" их принимающей стороной - это нужно ещё сильно потрудиться, чтобы смоделировать такую ситуацию.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Передача сообщений TCP/IP

Непрочитанное сообщение Olej » 06 дек 2013, 14:04

Olej писал(а):И на удалённых хостах вашего кластера должны быть запущены какие-то серверные программы TCP протокола ... иначе никто вам и ни на что не будет откликаться.
А если вам уж совсем хочется проверять канал именно так, то можете попробовать:

1. Простейший способ - использовать ssh, для этого у вас на удалённых хостах должен работать sshd, что часто так и бывает;

2. Используйте что-то из "лёгких" stream (TCP) протоколов из /etc/services (echo, chargen, time, daytime) а в качестве клиента (для посылки запросов) - элементарный telnet. Для этого, естественно:

- telnet у вас должен быть установлен:

Код: Выделить всё

olej@notebook:/etc/xinetd.d$ which telnet
/usr/bin/telnet


- если нет, то нужно установить, что-то типа (в RPM-дистрибутиве аналогично):

Код: Выделить всё

root@notebook:/etc# apt-get install telnet 
...
Обрабатываются триггеры для man-db …
Настраивается пакет telnet (0.17-36) …
update-alternatives: используется /usr/bin/telnet.netkit для предоставления /usr/bin/telnet (telnet) в автоматический режим
- службы для отклика (echo, chargen, time, daytime) на ваших сетевых хостах лучше всего запускать с помощью inetd и xinetd, которые должны быть там а). установлены + б). запущены:

Код: Выделить всё

olej@notebook:~$ ps -A | grep netd
 2422 ?        00:00:00 xinetd
- а сама выбранная служба должна быть разрешена в конфигурационном файле ... например, для xinerd и службы echo - в файле /etc/xinetd.d/echo заменить:

Код: Выделить всё

# This is the tcp version.
service echo
{
#  disable> = yes
    disable>= no
...


- после чего нужно заставить запущенный xinetd перечитать конфигурацию, например, так:

Код: Выделить всё

olej@notebook:/etc/xinetd.d$ sudo kill -s HUP 2422
- или можете просто перезапустить xinetd ...

- всё, можете с помощью telnet проверять свой удалённый хост (естественно, подставив IP этого хоста):

Код: Выделить всё

olej@notebook:/etc/xinetd.d$ telnet 127.0.0.1 7
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
1
1
2
2
^]
telnet> quit
olej@notebook:/etc/xinetd.d$ 
- можете выбрать любой другой протокол... вот, к примеру, daytime :

Код: Выделить всё

olej@notebook:/etc/xinetd.d$ telnet 127.0.0.1 13
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
06 DEC 2013 13:06:19 EET
Connection closed by foreign host.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей