Може хтось мені пояснить, що таке розетка? Я бачу це в багатьох абревіатурах в контексті SSL тощо.
Крім того, чому його називають розеткою? Це суто тому, що це було ім'я, яке вони вигадали? Або це було ім'я, яке вони придумали?
Може хтось мені пояснить, що таке розетка? Я бачу це в багатьох абревіатурах в контексті SSL тощо.
Крім того, чому його називають розеткою? Це суто тому, що це було ім'я, яке вони вигадали? Або це було ім'я, яке вони придумали?
Відповіді:
Розетка - лише логічна кінцева точка для спілкування. Вони існують на транспортному шарі. Ви можете надсилати та отримувати речі в сокет, ви можете зв’язувати та слухати розетку. Сокет специфічний для протоколу, машини та порту і адресований як такий у заголовку пакету.
Посібники Beej щодо мережевого програмування та міжпроцесорної комунікації мають хорошу інформацію про те, як користуватися сокетами, і навіть відповідають на це точне запитання .
Найпростіше кажучи, сокет - це псевдофайл, який представляє мережеве з'єднання. Після створення сокета (використовуючи належні примітиви та належні параметри для ідентифікації іншого хоста), записи в сокет перетворюються на мережеві пакети, які надсилаються, і дані, отримані з мережі, можуть зчитуватися з сокета.
З одного боку, сокети дуже схожі на труби: вони виглядають так само, як файли програм, що їх використовують, але не призводять до читання чи запису на диск; скоріше вони дозволяють спілкуватися з іншою програмою (локальною у випадку з трубами та, можливо, віддаленою у разі розеток). Вони також пропонують, як ви вже згадували, двосторонній зв'язок (подібно до того, як могла б пара правильно підключених труб).
Нарешті, звичайно, щоб програми на одній машині спілкувалися за допомогою стандартних мережевих протоколів, таких як TCP; марно було б пройти весь шлях до мережевого обладнання (якщо воно є!), обчислити контрольні суми тощо, тільки щоб повернутися до того самого хоста: саме там надходять розетки для доменів Unix. Вони дуже схожі на звичайні сокети, за винятком вони підключають процеси на одному хості, а не віддалені, і взагалі не намагаються використовувати жодні мережеві ресурси. Таким чином вони є середовищем міжпроцесорного спілкування.
Як згадувало триплеє, в ході історії BSD труби були введені раніше, ніж розетки, і повторно застосовувалися за допомогою розеток, коли вони існували. У цій же посиланні "Проектування та впровадження операційної системи FreeBSD" зазначається, що труби потім були повернені до нерозетної реалізації з міркувань продуктивності: це, безумовно, підкреслює той факт, що труби мають подібність.
Розетка абстракція. Він надає інтерфейс для додатків для використання системного ресурсу (у цьому випадку підключення до мережі) таким чином, що дозволяє операційній системі опосередковувати та організовувати використання обмеженого ресурсу будь-якою кількістю програм.
Якщо дані, що надсилаються через сокет, можна вважати конвертами пошти, то сокет буде вашою поштовою скринькою. Ви приєднуєте до свого будинку (програми) поштову скриньку (розетку) і вкладаєте в неї свою вихідну пошту (дані). У запланований час пошта (операційна система) приходить разом із собою, забирає вашу вихідну пошту та видаляє будь-яку вхідну пошту в тій же поштовій скриньці. Ваша вихідна пошта передається від вашого імені одержувачу через вантажівку поштової пошти (підключення до мережі) разом з усією поштою ваших сусідів. Це дозволяє вам листуватися з далекими людьми, не потребуючи витрат, часу, труднощів тощо, щоб самостійно доставити лист.
Що стосується того, чому їх добре називають «розетками», то тут, мабуть, велику роль відіграє думка, що винахідники називають це все, що хочуть. Хоча, на мою думку, це не погане ім’я :)
Сокет або "сокет" може бути декількома речами:
Перш за все, це продумана модель та інтерфейс прикладного програмування (API) . Це означає, що у вас є набір правил, яких потрібно дотримуватися, і набір функцій, які ви можете використовувати для написання програм, які щось роблять, відповідно до точно визначеного договору. У цьому конкретному випадку щось означає обмін даними з іншою програмою.
API sockets широко резюмує деталі "спілкування" загалом. Він описує, з ким ви спілкуєтесь і як, через одну (майже) послідовну та однакову форму для вирізання файлів cookie.
Ви можете створювати сокети в різних "доменах" (наприклад, "unix socket" або "internet socket") і різних типах зв'язку (наприклад, "datagram" socket або "stream") і спілкуватися з різними одержувачами , і все працює точно так само (ну 99%, очевидно, є хвилинні розбіжності, які вам доведеться враховувати).
Вам не потрібно знати (і ви навіть не хочете знати!), Чи спілкуєтесь ви з іншою програмою на тому ж комп’ютері чи на іншому комп'ютері, чи є між цими комп'ютерами мережа IPv4 або IPv6, чи, можливо, якийсь інший протокол, про який ви ніколи не чули.
socket
також назва бібліотечної функції (або syscall), яка створює "сокет ", який є спеціальним видом файлу (все в Unix - це файл).
розетки потрапляють у ту ж категорію, що і труби та назви труб
Труба - це засіб однобічної комунікації між читачем і письменником (обидва програми) на одному комп’ютері. Він імітує потік даних (як, наприклад, TCP).
Тобто ніяких окремих "повідомлень" або "блоків даних" не існує з точки зору труби. Ви можете скопіювати будь-яку кількість даних у "один кінець", а хтось ще може прочитати будь-який обсяг даних (не обов'язково однаковий, а не обов'язково за один перехід) на "інший кінець" у тому ж порядку, що і у вас штовхнув його.
Ім'я труба, ну, просто труба , яка має ім'я в файлової системі . Тобто це щось, що виглядає і веде себе так само, як файл, він відображається в списку каталогів, і ви можете його відкрити, записати в нього і т.д. і т.д. .
З іншого боку, сокет - це засіб двостороннього ("дуплексного") зв’язку, це означає, що ви можете писати і читати з одного роз'єму, і вам не потрібно два окремі розетки для двостороннього зв'язку.
Також сокет може діяти як потік (ідентичний трубі), або він може надсилати дискретні, недостовірні повідомлення, або він може надсилати дискретні, впорядковані повідомлення (перші два працюють на будь-якому домені, останнє - лише на "домен Unix" ). Він може надсилати повідомлення (або імітувати потік) комусь на зовсім іншому комп'ютері. Сокет може навіть за певних умов виконувати форму комунікації (багатоадресна передача).
Зважаючи на це, зрозуміло, що розетки роблять щось набагато складніше і, як правило, мають більше накладних витрат, ніж труби (які в основному не більше, ніж прості memcpy
до буфера і з них!), Але якщо ви створюєте локальні розетки (тобто на тих же комп'ютер), операційна система зазвичай застосовує сильно оптимізований швидкий шлях, тому різниці дійсно не так багато.
міжпроцесовий зв'язок, який іноді згадується стосовно мереж
Так, розетки - це один із можливих способів міжпроцесорної комунікації (спільна пам'ять і канали є прикладом альтернатив). У той же час вони використовуються для "мережевого зв'язку", як пояснено вище.
Для udp або tcp через IP,
Адреса сокета - це комбінація IP-адреси та номера порту.
IP-адреса - це адреса машини в Інтернеті, наприклад unix.stackexchange.com has address 198.252.206.140
Однак кожна машина повинна мати можливість надавати більше однієї послуги, тому більшість машин надаватимуть http (веб-сторінки) на порт 80 і ssh на порт 22 тощо.
Тому unix.stackexchange.com:80
порт 80
з unix.stackexchange.com
(гніздо) є точкою доступу даного веб - сайту.
Однак є й інші типи розетки, дивіться коментарі нижче.
AF_INET
сокетами IP ( ).
Я вважаю, ви запитали про створення мережі. Таким чином, TCP-сервіси використовують сокети як точки зв'язку та складаються з IP-адреси, протоколу та номера порту.