Общ преглед на програмирането на сокет за компютърна мрежа

Едно гнездо е една от най-фундаменталните технологии за програмиране на компютърни мрежи. Sockets позволява на мрежовите софтуерни приложения да комуникират посредством стандартни механизми, вградени в мрежовия хардуер и операционни системи.

Въпреки че може да звучи като просто друга характеристика на разработката на софтуер за интернет, технологията socket съществуваше много преди интернет. И много от днешните най-популярни мрежови софтуерни приложения разчитат на гнезда.

Какво могат да правят сокетите за вашата мрежа

Съединител представлява единична връзка между точно две части от софтуера (така наречената връзка от точка до точка ). Повече от два продукта могат да комуникират с клиент / сървър или разпределени системи, като използват множество контакти. Например, много уеб браузъри могат едновременно да комуникират с един уеб сървър чрез група от гнезда, направени на сървъра.

Софтуерът, базиран на сокет, обикновено се изпълнява на два отделни компютъра в мрежата, но и сокетите могат да се използват за комуникация на място ( междупроцес ) на един компютър. Съдовете са двупосочни , което означава, че и двете страни на връзката могат да изпращат и получават данни. Понякога едно приложение, което инициира комуникация, се нарича "клиент", а другото приложение "сървър", но тази терминология води до объркване в партньорската мрежа и като цяло трябва да се избягва.

Приложни програмни интерфейси за Socket и библиотеки

Няколко библиотеки, които изпълняват стандартни интерфейси за програмиране на приложения (API), съществуват в Интернет. Първият основен пакет - библиотеката Socket Berkeley все още се използва широко в системите на UNIX. Друг много често използван програмен интерфейс (API) е библиотеката на Windows Sockets (WinSock) за операционни системи на Microsoft. Относно други компютърни технологии, socket API са съвсем зрели: WinSock се използва от 1993 г. насам и Berkeley sockets от 1982 г. насам.

Приложните програмни интерфейси за socket са сравнително малки и прости. Много от функциите са подобни на тези, използвани в програмите за въвеждане / извеждане на файлове, като read () , write ()

Типове интерфейс на сокет

Socket интерфейсите могат да бъдат разделени на три категории:

  • Контейнерите за потоци , най-често срещаният тип, изискват от двете комуникиращи страни първо да установят връзка за сокет, след което всички данни, преминали през тази връзка, ще бъдат гарантирани, че ще пристигнат в същия ред, в който са изпратени - т.нар. модел.
  • Захранващите гнезда на Datagram предлагат семантика "без връзка". С дейтаграми връзките са имплицитни, а не изрични, както при потоците. Всяка от страните просто изпраща дейтаграмите според нуждите и чака другият да отговори; съобщенията могат да бъдат загубени в предаването или получени от ред, но отговорността на приложението е, а не гнездата, за да се справят с тези проблеми. Внедряването на сокет за дейтаграми може да даде на някои приложения повишаване на производителността и допълнителна гъвкавост в сравнение с използването на поточни гнезда, което оправдава тяхното използване в някои ситуации.
  • Третият тип гнездо - суровият гнездо - заобикаля вградената поддръжка на библиотеката за стандартни протоколи като TCP и UDP . Суровите гнезда се използват за разработване на потребителски протоколи на ниско ниво.

Поддръжка на Socket в мрежови протоколи

Модерните мрежови контакти обикновено се използват заедно с интернет протоколите - IP, TCP и UDP. Библиотеките, използващи сокет за Internet Protocol, използват TCP за потоци, UDP за дейтаграми и самият IP за сурови контакти.

За да комуникират през интернет, библиотеките с IP сайтове използват IP адреса, за да идентифицират конкретни компютри. Много части на интернет работят с имена, така че потребителите и сокет програмистите да могат да работят с имената на компютрите ( напр . "Thiscomputer.wireless.about.com"), а не чрез адрес ( напр . 208.185.127.40). Контейнерите за потоци и дейтаграми също използват номера на IP портове, за да разграничат множество приложения един от друг. Например, уеб браузърите в Интернет знаят, че използват порт 80 като по подразбиране за сокет комуникации с уеб сървъри.