Различия между версиями 1 и 2
Версия 1 от 2008-07-03 22:03:18
Размер: 5475
Редактор: eSyr
Комментарий:
Версия 2 от 2008-07-03 22:32:14
Размер: 5412
Редактор: MaximByshevskiKonopko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
Со стороны ОС прикладной уровень очень развесистый. Вроде бы мы, говоря б ОС вцелом, не должны говорить о конкретных вебсерверах и так далее. Тем не менее, со стороны ОС есть некий универс. инструмент, который позв. оформ. сетевые службы достаточно быстро на скорую руку. Рассм. очень-очень вкратце, как вообще написать сетевой сервер. Существует такой интерфейс для синхроннго и асинхронного обмена данными. Этот интерфейс называется сокеты. Общая идея сокета состоит вот в чём: у вас есть некий протокол обмена данными, который состоит вот в чём: вы данные записываете в некое отверстие, не сообразуясь с тем, читает кто-то их или не читает. А кто-то другой из этого отверстия читает. В отличие от файлового ИО, обмен с помощью сокета асинхронный. При этом для программ, которые осущ. запись и чтение существует дост. простой API для отсылки и получения. Суть этого изобр. состоит в том, что у этой дырки две стороны. И, вообще говоря, дна сторона этой дырки может быть на одном компьютере, а другая сторона на другом компьютере. Это сетевй сокет. При этом, вне зависимости от того, разнеено это по интернету, или в ФС, программы, которые считывают, они этого не видят. с чем параллель: параллель с нез. сетевых протоколов. ... Как заводится сервер:
Строка 3: Строка 4:
Со стороны ОС прикладной уровень очень развесистый. Вроде бы мы, говоря б ОС вцелом, не должны говорить о конкретных вебсерверах и так далее. Тем не менее, со стороны ОС есть некий универс. инструмент, который позв. оформ. сетевые службы достаточно быстро на скорую руку. Рассм. очень-очень вкратце, как вообще написать сетевой сервер. Существует такой интерфейс для синхроннго и асинхронного обмена данными. Этот интерфейс называется сокеты. Общая идея сокета состоит вот в чём: у вас есть некий протокол обмена данными, который состоит вот в чём: вы данные записываете в некое отверстие, не сообразуясь с тем, читает кто-то их или не читает. А кто-то другой из этого отверстия читает. В отличие от файлового ИО, обмен с помощью сокета асинхронный. При этом для программ, которые осущ. запись и чтение существует дост. простой API для отсылки и получения. Суть этого изобр. состоит в том, что у этой дырки две стороны. И, вообще говоря, дна сторона этой дырки может быть на одном компьютере, а другая сторона на другом компьютере. Это сетевй сокет. При этом, вне зависимости от того, разнеено это по интернету, или в ФС, программы, которые считывают, они этого не видят. с чем параллель: параллель с нез. сетевых протоколов. ... Как заводится сервер:
Строка 10: Строка 10:
Строка 16: Строка 17:
Строка 19: Строка 21:
 socket_type = stream
 protocol = tcp
 wait  = no
 user  = demo
 server  = /bin/date
 disable  = no
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = demo
        server          = /bin/date
        disable         = no
Строка 27: Строка 29:
Строка 37: Строка 38:
|| Готовность (%) || Продолжительность (ак. ч.) || Подготовка (календ. ч.) || Полный текст (раб. д.) || Предварительные знания || Level || Maintainer                             || Start date || End date ||
|| 0              || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov ||            || ||
|| Готовность (%) || Продолжительность (ак. ч.) || Подготовка (календ. ч.) || Полный текст (раб. д.) || Предварительные знания || Level || Maintainer || Start date || End date ||
|| 0 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov || || ||

Сетевые сервисы

Со стороны ОС прикладной уровень очень развесистый. Вроде бы мы, говоря б ОС вцелом, не должны говорить о конкретных вебсерверах и так далее. Тем не менее, со стороны ОС есть некий универс. инструмент, который позв. оформ. сетевые службы достаточно быстро на скорую руку. Рассм. очень-очень вкратце, как вообще написать сетевой сервер. Существует такой интерфейс для синхроннго и асинхронного обмена данными. Этот интерфейс называется сокеты. Общая идея сокета состоит вот в чём: у вас есть некий протокол обмена данными, который состоит вот в чём: вы данные записываете в некое отверстие, не сообразуясь с тем, читает кто-то их или не читает. А кто-то другой из этого отверстия читает. В отличие от файлового ИО, обмен с помощью сокета асинхронный. При этом для программ, которые осущ. запись и чтение существует дост. простой API для отсылки и получения. Суть этого изобр. состоит в том, что у этой дырки две стороны. И, вообще говоря, дна сторона этой дырки может быть на одном компьютере, а другая сторона на другом компьютере. Это сетевй сокет. При этом, вне зависимости от того, разнеено это по интернету, или в ФС, программы, которые считывают, они этого не видят. с чем параллель: параллель с нез. сетевых протоколов. ... Как заводится сервер:

  • Заводится сокет
  • Бинд
  • Листен
  • Аксепт
  • Сенд/Ресив
  • Клозе

Написать такой сервер --- задача нетривиальная. Обратите внимание, что если речь идёт о юних-среде, то ... тут сокетом просто так восп. не получится. Есть сетевая метаслужба inetd, в линуксе в пследнее время исп. xinetd (extended). В общем случае, какова задача этого метадемона: он осуществляет связку между транспортным и прикладным уровнем. Он всё делает, что мы перечисляли. И в тот момент, кгда надо обраб. данные, то он передоверяет это другой программе, котрая написана в классическом unix-стиле, как сетевой фильтр. Как это сделать:

  • перейдём в /etc/xinit.d/. Тут уже мжно видеть несколько имеющихся служб
  • Сначала пределимся с портом, например, 26000
  • Скопируем, напирмер, cups-tcp в quake-tcp: cp cups-tcp quake-tcp
  • Написать файл. след вид:

service quake
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = demo
        server          = /bin/date
        disable         = no
}

Теперь нам потребуется перезвпусттиь xinetd. Обычн он запущен только тогда, когда есть службы. Для проверки можно сказать chkconfig. Если он не запущен, то нужно сказать service xinetd restart. Теперь мжно сказать telnet localhost quake и увидеть текущую дату.

ALT-specific: по умолчанию всё выключено. Кроме того, по умолчанию в /etc/xinetd.conf указано, что по умолчанию можно подключаться только с локалхоста.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

MaximByshevskiKonopko, VladimirLysikov


PspoClasses/080703/03NetworkService (последним исправлял пользователь VsevolodKrishchenko 2008-10-04 10:54:50)