Сервер на платформе Node.js. HTTP и не только::Журнал СА 1-2.2014
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9943
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8154
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8259
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5226
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5911
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Сервер на платформе Node.js. HTTP и не только

Архив номеров / 2014 / Выпуск №1-2 (134-135) / Сервер на платформе Node.js. HTTP и не только

Рубрика: Разработка /  Веб-технологии

Кирилл Сухов КИРИЛЛ СУХОВ, веб-программист в дистрибьюторской компании MICS. Занимается проектированием и разработкой различных интернет-сервисов, sukhov-kirill@yandex.ru

Сервер на платформе Node.js
HTTP и не только

Продолжаем осваивать серверную JavaScript-платформу Node.js. Разберемся, почему она именно «серверная» и насколько справляется с этой ролью. TCP, UDP, HTTP, HTTPS – если честно, для Node доступно все

В составе Node.js довольно много средств реализации сетевого взаимодействия, что не удивительно, учитывая начальное предназначение этой системы. Собственно, в первой статье данного цикла [1] мы и начали ее изучение с построения простого HTTP-сервера. Теперь давайте разберемся в вопросе более капитально, подробно рассмотрим различные сетевые ипостаси Node.js. И начнем с фундаментального уровня.

Создаем TCP-сервер

Протокол TCP, как известно, является базовым для большинства интернет-приложений. На платформе Node.js он реализован в модуле net, входящем в ядро системы. Построить TCP-сервер – задача довольно тривиальная. В отличие от HTTP-сервера функция обратного вызова, являющаяся аргументом при создании TCP-сервера, принимает только один аргумент – экземпляр соединения. Он же сокет:

var net = require('net');

var server = net.createServer( function(socket) {

console.log('Соединение с '+socket.remoteAddress+": "+socket.remotePort);

}).listen(8080);

console.log('listening on port 8080');

Запускаем этот сценарий:

$ node tcp2.js

listening on port 8080

И «стучимся» браузером по адресу http://localhost:8080. В самом браузере, естественно, ничего не отобразится, зато в консоли появится запись, подобная этой:

Соединение с 127.0.0.1:63948

Тут мы видим IP-адрес, с которого поступил запрос, и номер созданного TCP-сокета.

О сокетах и что это вообще такое, можно прочитать во врезке. Мне слишком часто приходилось встречать некоторое недопонимание этого термина, даже среди веб-программистов, поэтому хотелось бы пояснить, что я имею в виду.

О сокетах
В общем случае сокет – это абстрактный объект, представляющий собой программный интерфейс для обеспечения обмена данными между любыми программными процессами. Попросту сокет – это место встречи, пересечения обмена данными, о котором договорились два процесса, столкнувшиеся с необходимостью взаимодействовать.Допустим, взаимодействуете вы и некий интернет-магазин, который отправляет товар. Он посылает его на ваш сокет, определяемый номером почтового отделения и вашими личными данными. Вы регулярно этот сокет «опрашиваете», заходя на почту и предъявляя паспорт.

И да, разъемы на корпусе материнской платы к этим сокетам отношения не имеют.

По выполняемым ролям сокеты делятся на клиентские и серверные. Каждый процесс операционной системы может создать слушающий (серверный) сокет и привязать его к какому-нибудь локальному адресу (собственно, пара адресов – адрес компьютера в сети, локальный адрес – и определяют сокет как точку обмена данными). Слушающий процесс обычно находится в цикле ожидания, то есть просыпается при появлении нового соединения. Клиентские сокеты используют различные клиентские приложения (например, браузер). Обычно клиент явно подсоединяется к слушателю, после чего любое чтение или запись через его файловый дескриптор будет передавать данные между ним и сервером.

Для протокола TCP в стеке TCP/IP существуют TCP-сокеты, имеющие различные адресные пространства своих локальных адресов – портов. Пара из номера порта и IP-адреса компьютера определяет TCP-сокет.

TCP сокеты – это не единственный вид подобного рода объектов. С начала 80-х годов известны BSD-сокеты (Сокеты Беркли) – POSIX-стандарт для межпроцессорного взаимодействия (IPC), их воплощение – Unix-сокеты (Unix domain socket), схожие с интернет-сокетами, но не использующие сетевой протокол для обмена данными. Даже в семействе TCP/IP существуют еще UDP-сокеты, причем порт TCP будет указывать совсем не тот локальный адрес, что и порт UDP с тем же номером.

Созданный нами серверный TCP-сокет будет жить, пока мы его явным образом не уничтожим, при этом браузер станет вести себя так, как будто он непрерывно загружает страницу. Собственно, браузеру и не положено напрямую общаться с TCP-сокетами, но кое-что для него мы сделать можем.

Статью целиком читайте в журнале «Системный администратор», №1-2 за 2014 г. на страницах 102-110.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru