Лекции по курсу "Системное программирование для UNIX". Литвинов Д.Г. - 39 стр.

UptoLike

Составители: 

39
Гнезда
Гнездо является обобщенным межпроцессным каналом взаимодействия. Как и
каналы, гнезда представляются файловым дескриптором, но в отличие от каналов
поддерживают взаимодействие между несвязанными процессами и даже между
процессами, работающими на различных машинах, связанных в вычислительную сеть.
Основная цель использования гнездвзаимодействие между различными
компьютерами. Такие распространенные программы, как telnet, rlogin, ftp, talk
используют гнезда.
Основные концепции использования гнезд
При создании гнезда необходимо указать способ взаимодействия, который
будет использоваться, и тип протокола, обеспечивающего это взаимодействие. Способ
взаимодействия гнезда определяет семантику уровня пользователя передачи данных
через гнездо. Выбор способа взаимодействия определяется ответами на следующие
вопросы:
Каков размер передаваемых блоков данных? Некоторые способы
взаимодействия рассматривают передаваемые данные как
последовательность битов не большую определенного размера,
другие группируют байты в записи или пакеты;
Могут ли данные быть потеряны при выполнении операции?
Некоторые способы взаимодействия гарантируют, что все
посланные данные достигают пункта назначения. Другие способы
могут рассматривать потерю данных как нормальное завершение
операции. В этом случае один и тот же пакет данных может
передаваться более одного раза или доходить до получателя в
неправильном порядке;
Выполняется ли взаимодействие только с одним удаленным
гнездом или одновременно с несколькими?
Необходимо также выбрать так называемоепространство имен для
именования гнезда. Имя гнезда (адрес) означает что-то конкретное только в контексте
выбранного пространства имен. От выбранного пространства имен зависит и тип
данных, которым представляется имя гнезда. Каждое пространство имен имеет
соответствующее символьное имя, которое начинается с символов ‘PF_’.
Соответствующее ему символьное имя, начинающееся с ‘AF_’ определяет формат
адреса, связанный с пространством имен.
Последнее, что необходимо выбратьпротокол, по которому выполняется
взаимодействие. Протокол определяет то, какой низкоуровневый механизм
используется для передачи и получения данных. Каждый протокол соответствует
выбранному способу взаимодействия и пространству имен. Пространство имен иногда
называется семейством протоколов.
Правила, по которым работает протокол, определяют формат данных, которые
передаются между двумя программами, расположенными, возможно, на различных
компьютерах. Большая часть правил скрывается операционной системой и в их знании
нет необходимости. О протоколах необходимо знать следующее:
1. для того, чтобы обмениваться данными две программы должны работать с
одним и тем же протоколом;
2. каждый протокол имеет дело только с конкретным способом взаимодействия
и пространством имен. Например, протокол TCP работает только с байтовым
потоком данных и пространством имен Интернет;
       Гнезда
       Гнездо является обобщенным межпроцессным каналом взаимодействия. Как и
каналы, гнезда представляются файловым дескриптором, но в отличие от каналов
поддерживают взаимодействие между несвязанными процессами и даже между
процессами, работающими на различных машинах, связанных в вычислительную сеть.
Основная цель использования гнезд – взаимодействие между различными
компьютерами. Такие распространенные программы, как telnet, rlogin, ftp, talk
используют гнезда.

         Основные концепции использования гнезд
         При создании гнезда необходимо указать способ взаимодействия, который
будет использоваться, и тип протокола, обеспечивающего это взаимодействие. Способ
взаимодействия гнезда определяет семантику уровня пользователя передачи данных
через гнездо. Выбор способа взаимодействия определяется ответами на следующие
вопросы:
         •          Каков размер передаваемых блоков данных? Некоторые способы
                    взаимодействия рассматривают передаваемые данные как
                    последовательность битов не большую определенного размера,
                    другие группируют байты в записи или пакеты;
         •          Могут ли данные быть потеряны при выполнении операции?
                    Некоторые способы взаимодействия гарантируют, что все
                    посланные данные достигают пункта назначения. Другие способы
                    могут рассматривать потерю данных как нормальное завершение
                    операции. В этом случае один и тот же пакет данных может
                    передаваться более одного раза или доходить до получателя в
                    неправильном порядке;
         •          Выполняется ли взаимодействие только с одним удаленным
                    гнездом или одновременно с несколькими?
         Необходимо также выбрать так называемое “пространство имен” для
именования гнезда. Имя гнезда (адрес) означает что-то конкретное только в контексте
выбранного пространства имен. От выбранного пространства имен зависит и тип
данных, которым представляется имя гнезда. Каждое пространство имен имеет
соответствующее символьное имя, которое начинается с символов ‘PF_’.
Соответствующее ему символьное имя, начинающееся с ‘AF_’ определяет формат
адреса, связанный с пространством имен.
         Последнее, что необходимо выбрать – протокол, по которому выполняется
взаимодействие. Протокол определяет то, какой низкоуровневый механизм
используется для передачи и получения данных. Каждый протокол соответствует
выбранному способу взаимодействия и пространству имен. Пространство имен иногда
называется семейством протоколов.
         Правила, по которым работает протокол, определяют формат данных, которые
передаются между двумя программами, расположенными, возможно, на различных
компьютерах. Большая часть правил скрывается операционной системой и в их знании
нет необходимости. О протоколах необходимо знать следующее:
   1.      для того, чтобы обмениваться данными две программы должны работать с
           одним и тем же протоколом;
   2.      каждый протокол имеет дело только с конкретным способом взаимодействия
           и пространством имен. Например, протокол TCP работает только с байтовым
           потоком данных и пространством имен Интернет;


                                                                                39