В. Столлингс - Современные компьютерные сети (2-е издание, 2003) (1114681), страница 162
Текст из файла (страница 162)
Выбор конкретного программного интерфейса сокетов зависит от используемой операционной системы и языка программирования. Отличительной чертой АР1 сокетов является фактически стандартный интерфейс с протоколами ТСР/1Р, изначально определенный в операционной системе ВЯ) 11)с)1Х, а позднее принятый другими опер!и!ионными системами. Это открытый стандарт, обеспечивающий переносимость исходного кода программ. Поэтому мы рассмотрим всего лишь два наиболее распространенных интерфейса — сокеты Беркли (Вег1се1еу Бойщаге 1)!зггсйщсюп эос1сегз, ВЯ)) в том виде, в котором они были представлены для операционной системы 1Лч1Х, и небольшую молификацию этого интерфейса АР1 — сокеты ЪЪ'1пс(ошз (11т'!пс)отээ Бос1сетз, УсгспБос1с) от корпорации Мссгозо(г.
Материал этой главы предназначается для программистов языка С (к функциям сокетов можно также обращаться из программ, написанных на языках С++, ~ д. о' ар этого приложения — Зарница Геназз (збеоатзОсяее.из!еда). 'тгсэца1 Ваз)с и РАБСА1.). В центре нашего обсуждения будет операционная система тсг1пдосэз. В то же самое время читателю будут предоставлены примеры из оригинальной спецификации ВЯ) 11)ч1Х, чтобы указать на различия (как правило, незначительные) в спецификации сокетов в этих двух операционных системах.
Предполагается, что читатель имеет базовые знания о сетевых протоколах ТСР/1Р и Ш) Р, Большая часть программ лолжна транслироваться как в опе)щциои ной системе сч'1пс1оугз, так и системах семейства (Пс)1Х. Оригинальная спецификация ВЯ) хорошо подходит для операционных систем семейства 1Лс11Х (см. табл. Б.1). Таблица 8.1. Хорошо известные операционные системы семейства ОН!Х Прозрачная распределенная система на основе микроядра Общая параллельная и распределенная операционная система Основанная на 880 4.4 ОН1Х операционная аистема для хбб РС Открытая операционная система на основе микроядра Операционная система ОН1Х, основанная на 880 4.4 Операционная смстема типа Месь на основе микроядра Свободно распространяемая реализация для РС с процессором 386, 488 и Репбигп Сервер, основанный на ОМХ 8804.4-1ае, и эмуляционная библиотека, обеспечивающая функциональность ОМ1Х на системах типа Масц Разработана как часть проекта СМО МДСН Проиэводгщя ат ОМХ 880 4.4-1яе Основанная на микроядре, распределенная, реального времени, Устойчивая к сбоям, поддерживающая стандарт РО81Х операционная система для хбб Производная ат ОМХ 880 4.4-1ае операционная система реального времени Распределенная операционная система 710 Приложение Б.
Сокеты Б.2. Сокеты, дескрипторы сокетов, порты и соединения 711 Здесь будут описываться исключительно сокеты на языке С, но интерфейс ЪЪ'!п5ос(с АР1 также может использоваться в большинстве других языков программирования, таких ссак С++, ЪДяиа1 Вая!с и РА5САЕ и т.д. Единственное требование заключается в том, что язык должен предоставлять возможность обращения к динамически подключаемым библиотекам (Вупаш!с Ып1с 1.!Ьгагу, 1НЛ.). В 32-разрядной ЪЪ'1пс!олчя-среде вам потребуется импортировать библиотеку чсяос!с32.НЬ, чтобы использовать преимущество интерфейса ЪЧ!п5ос(с. Эта библиотека должна быть скомпонована с программой, чтобы при запуске загрузилась динамическая библиотека свяос!с32.с!П.
Динамическая библиотека»«яос!с32.Й1 работает поверх стека протоколов ТСР/1 Р. В операционные системы ЪЪ! пс1оъчя ХТ, ЪЪ(пс1отчя 2000 и ЪЪс!пс!олчя 95 файл счяос!с32.48 включается по умолчанию. Если во время создания исполняемый файл колшонуется вместе с библиотекой свяос!с32.НЬ, тем самым неявно присоединяется динамическая библиотека вяос!«32 4Н, загружаемая при запуске программы.
То есть для обращения к динамической библиотеке счяос!с32.с!Н не потребуется добавлять строки к исходному файлу. Документацию, статьи, программное обеспечение и примеры программ по интерфейсу ЪЪ'!пяос1с 1.1 и 1.2 люжно найти по адресу Ьсср://исччлясасопяс.соса/. Также много полезного по данной теме можно найти на веб-сайте ЪЪ'!пс!ос«я 5ос!се1я Хе1«чог)с Ргойгашпппй» Боба Кунина (ВоЬ Оп!пп) по адресу Ьссрс// сч»чсч.яос!се!я.сот/а д.пглс. Программистам, пишущим программы на языке Ъ'!япа! Вая!с, стоит прочитать книгу «С1!еп1/5егчег Ргойгапип! п8 тч!1Ь М!сгояо(1 Ъс1япа! Вая!с», написанную Кеннетолс Л. Спенсером (КеппесЬ 1.
5репсег) и Кеном Миллером (Кеп Мс11ег). Кроме того, коллекцию сетевых компонентов и библиотек для разработчиков програлсм на языке Ъс!япа! Ваксе можно найти на сайте Ь11рс// с«чс»ч.саса1уяс.сот/. Старую, но хорошо известную статья~ Ральфа Дэвиса (На!рЬ 1)еч!я) по языку С++ «ЪЪсш32 Хеслчос(с Ргойгашпс!пй: ЪЪ'!пс!олчя 95 апс! ЪЪ'!пс(ос«я ХТ Хегччог1с Ргойгашш!пй 1!я!пй МРС» вместе с библиотекой классов можно найти на сайте Ьссрс//сяепй.асч.сот./Ьоо!с/аи1Ьос/0,3832,0201489309,00.
ЬсасЬ Исчерпывающие сведения о родословных операционных систелс семейств ()Х1Х и ЪЪс!пс!отчя можно найти на сайтах Ы1р://регяо/с«апазов.(с/1ечепег/ип!х/ и Ь11р://ресяо/чсападоо.(с/!ечепег/сч!пс!ос«я. Б.2. Сокеты, дескрипторы сокетов, порты и соединения Сокеты представляют собой конечные точки связи, обращение к которым осуществляется при помощи соответствующих дескрипторов сокетов или слов естественного языка, описывающих связь сокета с определенной машиной или приложением (например, мы будем обозначать сокет сервера как яесчес я). Соединение (или пара сокетов) состоит из пары 1Р-адресов, обладатели которых общаются друг с другом, а также пары номеров портов, где номер порта представляет собой 32-разрядное целое без знака, как правило, в десятичной системе счисления.
Неко- торые номера портов назначения, называемые хорошо известными портами (сче11- (сполчп рогся), закреплены за популярными службами и определяют тип службы, с которой осуществляется соединение. Протоколы ТСР/1Р ориентируются на то, что приложениями для общения друг с другом используются хо1юшо известные порты. При этом клиентские приложения предполагают, что соответствующее серверное приложение прослушивает свой хорошо известный порт, ассоциированный с этим приложением.
Например, для протокола НТТР (НурегТех1 Тгапя1ег Рготосо! — протокол передачи гипертекста) используется ТСР-порт с номером 80. По умолчанию веб-браузер будет пыгаться установить соединение с ТСР-портом 80 хоста назначения, если в 1)й1.-адресе не указан другой номер порта (например, 8000 или 8080). Порт (рогг) идентифицирует точку соединения в локальном стеке (например, порт с номером 80, как правило, используется веб-сервером). Совет (яос1сес) идентифицирует пару, состоящую из 1Р-адреса и нолсера порта (например, 192.168.1.20:80 обозначает порт веб-сервера на хосте 192.168.1.20).
Пара сокетов (яос1сес ра!г) идентифицирует все четыре компонента (адреса и номера портов отправителя и получателя). Поскольку хорошо известные порты уникальны, иногда они используются для обозначен»и определенного приложения на любом хосте, на котором может быть запущено это приложение. Однако употребление слова «сокет» подразумевает конкретное приложение на конкретном хосте. Соединение, или пара сокетов, означает соединение сокетов между двумя конкретными взаимодействующими системами. Протокол ТСР позволяет одновременно устанавливать несколько соединений для одного и того же локального порта, если у этих соединений отличаются удаленные 1Р-адреса или номера портов. Номера портов разделяются на три категории: + Номера от 0 до 1023 зарезервированы для хорошо известных портов.
Они ассоциированы со службами на постоянной основе, Например, НТТР-серверы всегда принимают запросы к порту 80. + Порты с нолсерами от 1024 до 49 151 являются регистрируемыми. Они используются для различных целей. + Порты с нолсерами от 49 151 до 65 535 представляют собой динамические и частные порты. С ними не должны ассоциироваться службы. В реальности машины начинают назначение динамических портов, начиная с номера 1024. Если вы разрабатываете протокол или приложение, для которого требуется канал связи, сонет, порт, протокол и т. д., свяжитесь с управлением 1АХА (1псегпес Аяя!8пес! ХшпЬегя Апбйоп1у — уполномоченная организация по выделению номеров Интернета).
1АХА располагается в институте кибернетики (1п1оппас!оп 5с!епсея 1пяс!сисе, 151) университета Южной Калифорнии. Рекомендация цГС «Аяя(япес! ХшпЬегя», опубликованная организацией 1АХА, является официальной спецификацией, в которой перечисляются назначения портов. Вы лшжете найти ее по адресу Ь(ср://чав«с.!апа.ос9/аяя!дптептя/росс-пипсЬеся, Список номеров портов со ссылкалси на информацию о связанных с ними приложениях предоставляется по адресу Ьсср://ас!ч!се.песпог!с!се.сопс/адч!се/схр1о!ся/Росся/. 712 Приложение Б.
Сокеты Бий Элементы бекетов 713 В обеих операционных системах, 1)Н1Х и 1)(Г(пг)отче, для проверки состояния всех активных локальных сокетов может использоваться команда пе)з(эС На рис. Б,1 показан примерный результат работы команды петэтэй фкувв;:,;.,1т1эвнЭ щЬенв . звухеХчл.)т(ббквве ',,, екв1е э:"':эйдфйв' ущ~5 уу Ъг/ гэ ';'., -'.: ':,„'".;,;.".ьт(этеывп фв,",' э':(кэвл(вг)иэв, ' ': (йуалвр:е, ',,::::,;,: ':::ьтэйквтйе... = тсэ."-""в'.'и сл$~г(вээе :., ',!йу<сбнр б' ' " " ' '.' "";" " " Тьтзтввтва " ", 'тсв"Т .'::я''номе,»эввт-' '-,.'ссенгл'ое,' '-''".::,'.'::, ':: ':' (втзтвнтва БАКР:.',т Ямы~~:~~зв',: '' -; вэ((сойр ызв'.:: '.:::::: :- ',::1ттикЭввтт.
; т г(йф.'у.-';-;;Мувокухитрщ- ',. „.'. Тэвггезэ7,-'млу,. слег ее бт„=: - .*кйтввьтэнво ° )т)1в(;, у)кс)хцг(мф6';. ' *4всэтэ.елу,есиыэвэй ' ',' (вэтвввтэякп Рис. Б.т. Пример вывода команды пе1в1в1 Б.З. Коммуникационная модель клиент-сервер Сервер ф соппесц) с)о вО для ОЩХ или с!оэевосхв10 для Уэ! обоев сЬвв0 для Ог1ГХ или с(овввос1гв10 для У)Г)обоев Рив. Б.в. Блок-схема взаимодействия потоковых соквгов Приложение, использующее сокеты, состоит из программы, исполняемой на обоих концах канала связи. Программу, инициирующую передачу, часто называют клиентом (с)(еп().