Unix socket что это
Сокеты обеспечивают двухстороннюю связь типа «точка-точка» между двумя процессами. Они являются основными компонентами межсистемной и межпроцессной связи. Каждый сокет представляет собой конечную точку связи, с которой может быть совмещено некоторое имя. Он имеет определенный тип, и один процесс или несколько, связанных с ним процессов.
Класс сокетов UNIX обеспечивает их адресное пространство для отдельной вычислительной системы. Сокеты области UNIX называются именами файлов UNIX. Сокеты также можно использовать, чтобы организовать связь между процессами на различных системах. Адресное пространство сокетов между связанными системами называют доменом Интернета. Коммуникации домена Интернета используют стек протоколов TCP/IP.
Типы сокетов определяют особенности связи, доступные приложению. Процессы взаимодействуют только через сокеты одного и того же типа. Основные типы сокетов:
| Сервер | Клиент | |
| Установка сокета socket () | Установка сокета socket () | |
![]() | ![]() | |
| Присвоение имени bind () | ![]() | |
![]() | ![]() | |
| Установка очереди запросов listen () | ![]() | |
![]() | ![]() | |
| Выбор соединения из очереди accept () | ![]() | Установка соединения connect () |
![]() | ![]() | |
| read () | ![]() | write() |
![]() | ![]() | |
| write() | ![]() | read () |
В чем разница между сокетом Unix и сокетом TCP / IP?
Это из этого ответа:
Доменные сокеты UNIX знают, что они выполняются в одной и той же системе, поэтому они могут избежать некоторых проверок и операций (например, маршрутизации); что делает их быстрее и легче, чем IP-сокеты. Поэтому, если вы планируете взаимодействовать с процессами на одном хосте, это лучший вариант, чем IP-сокеты.
Редактирование: Согласно комментарию Нильса Тедтманна : сокеты домена UNIX подчиняются разрешениям файловой системы, в то время как сокеты TCP можно контролировать только на уровне фильтра пакетов.
Вы можете перечислить локальные unix-сокеты своего компьютера с помощью следующей команды:
В чем разница между сокетом Unix и сокетом TCP / IP?
Разъем TCP / IP используется для связи по сетям TCP / IP. Подключенный TCP-сокет идентифицируется по комбинации локального IP-адреса, локального порта, удаленного IP-адреса и удаленного порта. Прослушивающий сокет TCP определяется локальным портом и, возможно, локальным IP. AIUI по крайней мере в сокетах Linux / TCP / IP всегда приводит к генерации и декодированию пакетов TCP / IP, даже если клиент и сервер находятся на одном компьютере.
Сокет домена unix (иногда сокращенный до сокета unix), с другой стороны, работает на одном компьютере. Прослушивающие сокеты живут в иерархии файловой системы, и доступ к ним может контролироваться разрешениями файловой системы.
Кроме того, процесс, принимающий соединение через сокет Unix, может определить идентификатор пользователя процесса, который подключается. Это может избежать необходимости в шаге аутентификации. Вместо того, чтобы генерировать пароль для вашего сервера базы данных и включать его копию в код вашего веб-приложения, вы можете просто сообщить серверу базы данных, что пользователь, выполняющий веб-приложение, имеет доступ к соответствующей учетной записи пользователя в базе данных.
TCP-сокеты тоже обрабатываются Unix?
TCP-сокеты являются частью спецификации протокола TCP
Спецификации интернет-протокола имеют тенденцию касаться только того, что происходит в сети, спецификация TCP содержит определение Socket, но это определение не совпадает с тем, как термин используется в «API сокетов».
«API сокетов», как мы знаем, было введено BSD, но позже было скопировано повсеместно и включено как часть стандарта posix. Основные вещи для сокетов TCP и UDP, как правило, одинаковы для разных платформ, но более сложные вещи и вещи, взаимодействующие с другими частями ОС, различаются, например, в Unix-подобных системах сокет идентифицируется дескриптором файла и может быть прочитанным / записанным файловыми API, это не относится к Windows.
Некоторые расширения API сокетов были задокументированы в rfcs, но эти RFC являются только «информационными».
или любой протокол может использовать IP-сокеты?
Когда приложение явно создает сокет, используя функцию «сокет» (сокеты также создаются функцией accept), он передает три параметра: «домен», «тип» и «протокол». Между ними эти три параметра могут использоваться для выбора множества различных типов сокетов.
Русские Блоги
[Linux] [гнездо] Unix сокет подробно
содержание
1. Что такое сокет?
Розетка обеспечивает связь между двумя различными процессами на одних и тех же или разных машинах. Точнее, это способ общения с другими компьютерами с помощью стандартных дескрипторов файлов UNIX. В UNIX, каждая операция ввода / вывода выполняется запись или чтение дескриптора файла. Дескриптор файла является только целое число, связанное с открытым файлом, который может быть сетевым соединением, текстовый файл, терминал или другое содержимое.
Для программистов, внешний вид и поведение сокета очень похож на дескриптор файла низкого уровня. Это потому, что команды, такие как чтение () и Write () () используются вместе с гнездами вместе с обработкой файлов и трубопроводов.
Сокет впервые введена в 2.1BSD, а затем усовершенствовать в текущей форме в 4.2BSD. Большинство последних версий системы UNIX теперь доступны.
РазъемГде она используется?
Сокет UNIX используется в рамках Application Client Server. Сервер основан на процессе выполнения определенных функций, основанных на клиенте. Большинство протоколов прикладного уровня (например, FTP, SMTP и POP3) использование гнезд, чтобы установить соединение между клиентом и сервером, а затем обмениваться данными.
Разъемтип
Пользователи могут использовать четыре типа сокетов. Первые два наиболее часто используется, а затем два редко используются.
Предположим, что процесс только связи между тем же типом сокета, но не существует никаких ограничений, чтобы предотвратить взаимодействие между различными типами розеток.
Какой следующий шаг?
Следующая глава предназначена для улучшения основы и подготовить фундамент, а затем Разъем Запись программы сервера и клиента. Если вы хотите, чтобы перейти непосредственно увидеть, как писать клиент и серверные программы, вы можете сделать это, но не рекомендуется. Настоятельно рекомендуется, чтобы вы выполнили эти начальные главы шаг за шагом, чтобы заложить фундамент перед продолжением программы.
2. Резюме
Это список всех функций, связанных с программированием сокетов.
Порт и сервисные функции
UNIX предоставляет следующие возможности, чтобы получить имя сервиса из файла и т.д. / / услуг.
Byte функция сортировки
Функция IP-адрес
Функция Разъем ядра
Функция помощника Оправа
void * memset(void * s,int c,int nbyte)-memset Функция также используется, чтобы установить структурные переменные таким же образом, как Bzero.
3.адрес веб-сайта
адреса хоста IP или более распространенными являются IP-адреса для идентификации хостов, подключенных к Интернету. IP-представляет собой интернет-протокол, относится к Интернету слою всей сетевой архитектуры Интернета.
IP-адрес 32-битные числа, которые могут быть истолкованы как четыре 8-разрядных или восемь-битовых байтов. Каждый IP-адрес однозначно идентифицирует участвующие сети пользователя, хост в сети, а также категорию пользователей сети.
IP-адрес обычно записываются в виде десятичной формы кубиков, в котором каждый Ni является десятичным числом (от 00 до FF шестнадцатеричного) в диапазоне от 0 до 255.
Адрес категории
айпи адрес Интернет агентство номер распределения (IANA) управление и создание. Есть пять различных категорий адресов. Вы можете определить, к какому классу принадлежит IP-адрес, проверяя первые четыре бита IP-адреса.
Класс AАдрес0xxxИли десять вОт 1 до 126начало.
Класс BАдрес10xxИли десять в128 до 191начало.
Класс CАдрес110xИли десять в223 192-начало.
Класс DАдрес1110Или десять в224 до 239начало.
класс EАдрес1111Или десять вОт 240 до 254начало.
к01111111В начале или десять127Начало адреса сохраняет внутренние тесты на шлейф и локальные компьютеры [Вы можете проверить это: вы всегда должны быть пингом127.0.0.1(Указывая вы сами)]; Класс D адрес зарезервирован для многоадресной рассылки; E-адрес зарезервирован для использования в будущем. Они не должны использоваться в качестве адреса хоста.
пример
| Добрый | Крайний левый бит | начальный адрес | Полный адрес |
| A | 0xxx | 0.0.0.0 | 127.255.255.255 |
| B | 10xx | 128.0.0.0 | 191.255.255.255 |
| C | 11000 раз | 192.0.0.0 | 223.255.255.255 |
| D | 1110 | 224.0.0.0 | 239.255.255.255 |
| E | 1111 | 240.0.0.0 | 255.255.255.255 |
Subnet разрыв
Subnet подразделения или подсеть подразделение в основном относится к сети филиала. Эта операция может быть сделана по ряду причин, такие, как сеть в ткани, с использованием различных физических носителей (например, Ethernet, FDDI, WAN и т.д.), зарезервированное адресного пространства и безопасности. Наиболее распространенной причиной является контроль сетевого трафика.
Например, формат адрес В общем классе n1.n2.sh, где n1.n2 идентифицирует класс В-сеть, 8-битового поле идентификации S подсеть, и 8-битовое поле Н идентифицирует хосты в подсети.
4. Имя хоста сети
Трудно вспомнить, с именем хоста, представленные номерами, так именования с нормальными именами (например, Takshila или Наландом). Мы пишем программные приложения, чтобы найти точки IP-адрес, соответствующий заданное имя.
Найдите процесс поиска IP-адрес на основе заданного буквенно-цифрового имя хостаАнализ имя хоста。
Разрешение имен хоста осуществляется с помощью специального программного обеспечения для систем с высокой пропускной способностью. Эти системы называются системами доменных имен (DNS), который сохраняет IP-адрес и соответствующее нормальное отображение имен.
/ И т.д. файл / хостов
Соответствие между именем хоста и IP-адрес сохраняется в имениhostsВ файле. В большинстве систем, этот файл находится/ etcСправочник.
Запись в этом файле выглядит следующим образом:
Обратите внимание, что данный IP-адрес может быть связан с несколькими именами. Используйте этот файл при преобразовании из IP-адреса по имени хоста, наоборот.
У Вас не будет никакой необходимости редактировать этот файл, так что если вы хотите поставить любое имя хоста и IP-адрес, вам нужно иметь привилегии суперпользователя.
5. Модель клиент-сервер
Большинство NET приложения используют архитектуру клиент-сервер, который относится к приложениям, которые являются два процесса или две взаимной связи для обмена определенной информации. Один из этих двух процессов выступают в качестве клиентского процесса, а другой процесс действует как сервер.
процесс клиента
Это процесс, как правило, предлагается представить информацию. Этот процесс может прекратить или может выполнить некоторую другую обработку после получения ответа.
НапримерИнтернет-браузер использует в качестве клиентского приложения, которое посылает запрос на веб-сервер, чтобы получить веб-страницу HTML.
Серверный процесс
Это процесс получения запроса от клиента. После получения запроса от клиента, этот процесс будет выполнить необходимую обработку, собирать необходимую информацию, и отправить его клиенту реквестере. После того, как это делается, вы можете предоставлять услуги другим клиентам. Серверный процесс всегда бдительный и входящий запрос может быть обработан в любое время.
Пример-Web сервер постоянно ждет запроса от интернет-браузера, и как только он получает любой запрос от браузера, он будет получать HTML-страницу запроса и отправить его обратно в браузер.
Обратите внимание, что клиент должен знать адрес сервера, но сервер не должен знать адрес или наличие клиента перед установлением соединения. После установления соединения, обе стороны могут отправлять и получать информацию.
2 этажа и архитектура 3-слойный
Архитектура 2-слойный— В этой архитектуре клиент взаимодействует непосредственно с сервером. Этот тип архитектуры может иметь некоторые уязвимости в системе безопасности и проблемы с производительностью. Internet Explorer и веб-сервер работает на архитектуре два слоя. Вопросы безопасности могут быть решены с помощью Secure Socket Layer (SSL).
Архитектура 3-слойный— В этой архитектуре, есть программное обеспечение, между клиентом и сервером. Промежуточное программное обеспечение называется «промежуточным слоем». Промежуточный используются для выполнения всех проверок безопасности и балансировки нагрузки без нагрузки. Промежуточный принимают все запросы от клиента и передает запрос на сервер после выполнения требуемой аутентификации. Затем сервер выполняет требуемую для обработки и передает ответ обратно промежуточное программное обеспечение, и, наконец, промежуточное программное обеспечение передает этот ответ обратно клиенту. Если вы хотите реализовать архитектуру 3-слоя, вы можете сохранить любое промежуточное программное обеспечение между веб-сервером и веб-браузером, например, веб-логики или программного обеспечения WebSphere.
Тип сервера
Итерационный сервер— Это самый простой вид сервера, где серверный процесс является клиентом, а после завершения первого запроса, он получит запрос от другого клиента. В то же время, другой клиент всегда ждет.
Параллельный сервер— Этот тип сервера запускает несколько параллельных процессов для обработки нескольких запросов в то время, так как процесс может занять больше времени, а другой клиент не может ждать в течение длительного времени. Самый простой способ, чтобы написать параллельные серверы под UNIX являетсяВыводитьДочерний процесс обрабатывает каждый клиент.
Как сделать клиентов
Для клиентов и серверов, системных вызовов для установления соединения несколько отличаются, но оба включают основные конструкции розеток. Оба процесса построить свой собственный сокет.
использоватьsocket()Системный вызов Создание сокета.
использоватьconnect()Системный вызов связывает сокет с адресом сервера.
Передача и прием данных. Есть много способов сделать это, но самый простой способ заключается в использованииread()с участиемwrite()Системный вызов.
Как сделать сервер
использоватьsocket()Системный вызов Создание сокета.
использоватьbind()Системный вызов будет привязать сокет к адресу. Для серверных сокетов в Интернете, адрес состоит из номера порта на хосте.
Слушатьlisten()Подключение к системному вызову.
Принятоaccept()Подключение к системному вызову. Этот вызов обычно блокирует подключение до клиента подключается к серверу.
использоватьread()с участиемwrite()Системные вызовы отправки и получения данных.
Взаимодействие с клиентом и сервером
6. Структура
Разнообразие конструкций используются в программировании сокетов UNIX, чтобы сохранить информацию об адресах и портах и другой информации. Большинство функций сокетов требует указатель на сокет структуры адреса в качестве параметра. Структура, определенная в этой главе относится к интернет-протоколу.
sockaddr
| Атрибуты | Ценности | описывать |
|---|---|---|
| sa_family | Он представляет собой семейство адресов. В большинстве интернет-приложений, мы используем AF_INET. | |
| sa_data | Протокол выделенный адрес | Содержание 14 байтов конкретного адреса протокола объясняется в соответствии с типом адреса. Для серии Internet, мы будем использовать IP-адрес номер порта, который определен нижеsockaddr_inСтруктура представления. |
В SOCKADDR
| Атрибуты | Ценности | описывать |
|---|---|---|
| sa_family | Он представляет собой семейство адресов. В большинстве интернет-приложений, мы используем AF_INET. | |
| sin_port | Сервисный порт | 16-битный номер порта сетевого порядка байтов. |
| sin_addr | айпи адрес | 32-битный IP-адрес сетевого порядка байт. |
| sin_zero | неиспользуемый | Вам нужно только установить это значение NULL, поскольку это значение не используется. |
По адресу
Эта структура используется в качестве структурного поля только в описанной выше конфигурации и имеет 32-битный NetID / HOSTID.
| Атрибуты | Ценности | описывать |
|---|---|---|
| s_addr | Сервисный порт | 32-битный IP-адрес сетевого порядка байт. |
Владелец
Эта структура используется для сохранения информации, связанной с хостом.
| Атрибуты | Ценности | описывать |
|---|---|---|
| h_name | Ti.com и т.д. | Это официальное имя хоста. Например, tutorialspoint.com, google.com и т.д. |
| h_aliases | TI | Он содержит список имен хостов. |
| h_addrtype | AF_INET | Он содержит адреса семей, которые всегда будут AF_INET для интернет-приложений. |
| h_length | 4 | Она сохраняет длину IP-адрес, для интернет-адреса 4. |
| h_addr_list | in_addr | Для Интернет-адреса, то h_addr_list массив указателей [0], h_addr_list [1], и т.д., и т.д., относится к структуре in_addr. |
Примечание— h_addr определяется как h_addr_list [0] для сохранения обратной совместимости.
служащий
Эта конкретная структура используется для сохранения информации, относящейся к услуге и связанных с ним портов.
| Атрибуты | Ценности | описывать |
|---|---|---|
| s_name | http | Это официальное название сервиса. Например, SMTP, FTP POP3 и т.д. |
| s_aliases | кличка | Он содержит список псевдонимов услуг. В большинстве случаев он будет установлен в NULL. |
| спортивный | 80 | Он будет иметь соответствующий номер порта. Например, для HTTP, это значение равно 80. |
| s_proto | Установите протокол, используемый для использования. Интернет-сервис предоставляется с использованием протокола TCP или UDP. |
Набор интерфейсных навыков структуры
Адрес сокета структура является неотъемлемой частью каждой сетевой программы. Мы выделяем их, заливку в них, и передать указатели на их указатели на различные функции сокетов. Иногда мы укажем на одну из этих структур к функции сокета и заполнить содержимое.
Мы всегда проходят эти структуры по ссылке (т.е. мы передаем указатель на структуру, а не саму структуру), и мы всегда передать размер структуры в качестве другого параметра.
Когда функция сокет заполняет, длина передается по ссылке, поэтому функция может обновить свою ценность. Мы называем эти значения как результат параметров.
Всегда используйте MemSet () использовать MemSet () должен быть установлен в NULL (т.е. «\ 0»), в противном случае он может получить неожиданные значения мусора в структуре.




