Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Что такое сокет?


Автор: ksili 26.2.2008, 06:04
Я конечно уже много раз сталкивался с этим понятием. И у меня сформировалось некоторое понятие этого термина, но оно неполное и очень субъективное, т.к. нигде не встречал определения сокета.
Объясните мне вкратце, что это такое.

Автор: Lazin 26.2.2008, 08:43
Это высокоуровневая абстракция smile

Автор: ksili 26.2.2008, 09:19
Однако я думал, что это наоборот, что-то более-менее низкоуровневое. Т.к. пишу в Билдере, и если что-то при помощи Indy сделать невозможно, мне говорят, а вот на сокетах это реально сделать

Автор: Lazin 26.2.2008, 10:36
Цитата(ksili @  26.2.2008,  09:19 Найти цитируемый пост)
Однако я думал, что это наоборот, что-то более-менее низкоуровневое.

Сокет, AFAIK, это файловая абстракция сетевого соединения, низкоуровневое или нет, это смотря с чем сравнивать, пайпы к примеру более высокоуровневая вещь, что там есть еще более низкоуровневое я не знаю, http://www.citforum.ru/book/cook/winsock.shtml smile

Автор: MAKCim 26.2.2008, 10:55
Цитата(Lazin @  26.2.2008,  10:36 Найти цитируемый пост)
низкоуровневое или нет, это смотря с чем сравнивать, пайпы к примеру более высокоуровневая вещь, что там есть еще более низкоуровневое я не знаю, 

сокет - это фундаментальный примитив для построения сетевых приложений пользовательского уровня
на этом уровне сокет - самая низкоуровневая абстракция

Автор: ksili 26.2.2008, 10:56
Аффтар жжот:
Цитата

В технической литературе встречаются различные переводы этого слова - их называют и гнездами, и соединителями, и патронами, и патрубками, и т .д.

Автор: Lazin 26.2.2008, 12:29
А еще среди админов сокетом принято называть комбинацию IP:port

Автор: nerezus 9.4.2008, 06:53
Сокет - абстракция для идентификации источника/приемника для взаимодействия по сети.
Может быть как сетевого, так и юникс-типа.

Для юникс-типа идентификатором является адрес, а для сетевого - протокол(почему все его забывают?), хост и порт.

Автор: baldina 9.4.2008, 10:06
не обязательно по сети.
сокет это одновременно абстракция точки соединения и программного интерфейса для информационного взаимодействия процессов. процессы могут располагаться как на одном компьютере, так и на разных. Часто бывает файловой абстракцией (POSIX).

Автор: bomberman 28.4.2008, 09:34
Абстракция... абстракция - заладили!

Есть два определения сокетов: для харда и софта.

Так вот, софтвенное определение звучит так:
Со́кет есть имя программного интерфейса для обмена информацией между процессами

Автор: baldina 28.4.2008, 19:18
bomberman, нового ты ничего не сообщил... а чем тебе слово абстракция не нравится? 

Автор: Олег2005 30.4.2008, 16:21
Цитата

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)