Цитата | 2.3. Абстракция сокетов Сокет можно рассматривать как конечный пункт передачи данных по сети. Сетевое взаимодействие — это процесс передачи данных по сети между двумя или более компьютерами или процессами, а сокет — конечный пункт передачи данных. Другими словами, когда программы используют сокет, для них он является абстракцией, представляющий одно из окончаний сетевого взаимодействия. По сути дела нет единственного программного объекта, который может быть назван сокетом, потому что сокет – это логическое понятие, объединяющее в себе несколько элементов различной природы – структуры, указатели, записи в таблицах, принимающие и передающие буфера и т. д. В связи с этим, несмотря на тривиальность внешнего вида функции создания сокета, эта операция в любой операционной системе считается достаточно ресурсоемкой, особенно для серверов с большим потоком заявок на обслуживание. Для установления соединения в абстрактной модели сокетов необходимо, чтобы каждая из сетевых программ могла формировать свои собственные сокеты. Связь между двумя сокетами может быть ориентирована на соединение, а может быть и нет. Несмотря на то, что разработчики модифицировали системный код UNIX, интерфейс сокетов по-прежнему использует основы концепции ввода-вывода данных UNIX. Примечание: К сожалению, до сих пор и в литературе, и в жизни часто путают три понятия – сокет, адрес сокета и порт. Например, даже в основополагающем документе по TCP – RFC 793, раздел 2.7 – в английском оригинале можно прочесть фразу "well-known sockets", в то время как существует понятие "well-known numbers", которое относят к "хорошо известным номерам портов"- см. раздел 1.7.2. Чтобы открыть или создать файл в UNIX (и в большинстве других ОС), в программе его необходимо тем или иным способом описать (например, имя файла, права доступа, тип открытия, как он будет использоваться: записывать или считывать). Затем у операционной системы запрашивается дескриптор файла, соответствующий описанию. Не существует каких-либо ограничений на то, когда запрашивать дескриптор. Как только файл становится нужным, то запрашивается его дескриптор. В один и тот же момент времени может быть открыто несколько файлов. В любом случае операционная система возвращает дескриптор (описатель), однозначно соответствующий указанному файлу или устройству. Интерфейс сокетов работает точно так же. Когда программе нужен сокет, она формирует его характеристики и обращается к API, запрашивая у системы его дескриптор. Структура записи в таблице с описанием параметров сокета отличается от структуры записи в таблице с описанием параметров файла. Однако это отличие принципиально.
|
|