
- •Програмні та апаратні засоби адміністрування комп’ютерних мереж
- •Задачі адміністрування комп’ютерних мереж.
- •3. Файли та права доступів до них
- •Зміна прав доступу до файлів.
- •Команди chown, chgrp.
- •Команда umask
- •7. Символічні вказівники
- •Команда find,xargs.
- •9.Виконання команд в фоновому режимі.
- •10. Команди cron, at, nohub, &.
- •11.Ввід та вивідданих в Shell.
- •12. Команда echo.
- •13. Команда read.
- •14.Koманда cat.
- •15. Канали.
- •16.Стандартні потоки вводу, виводу та помилок.
- •Стандартне введення Потік номер 0 (stdin) зарезервовано для читання команд користувача або вхідних даних.
- •Стандартне виведення
- •Стандартне виведення помилок
- •17. Порядок виконання команд
- •18. Регулярні вирази
- •19. Сімейство команд Grep
- •20. Утиліта awk
- •21. Редактор Sed
- •22.Команди sort, uniq, join, cut, paste, split
- •23. Процес реєстрації в Linux
- •26. ЗмінніінтерпритатораShell
- •27.Локальнізмінні
- •28. Вбудовані змінні інтерпретатора Shell.
- •29. Поняття Shell сценарію
- •35. Оператор Case.
- •36. Функції інтерпритатора Shell.
- •37. Файл функцій.
- •38. Передача параметрів сценарію через командну стрічку.
- •39. Команда shift.
- •40. Вбудовані команди інтерпритатора Shell.
- •Команди робот из мережею Ipconfig, route, ping.
- •Поняття сокета
- •Атрибути сокета
- •Іменування сокета
- •Встановлення зв’язку за допомогою сокета
- •Прив’язка сокета до локальних імен
- •Передача даних з допомогою сокета
- •Функції передачі даних з допомогою сокета
- •Функції прийому даних з допомогою сокета
- •Закриття сокета
- •55. Обмін дата грамами
- •56. Використання низькорівневих сокетів
- •57. Функції для роботи з dns та адресами
- •58. Доменна система імен
- •59. Опишіть шлях проходження даних від одного комп’ютера до іншого через механізм сокетів
- •60. Паралельне обслуговування запитів клієнтів
- •61. Робота на базі сокетів з стандартними протоколами
- •62. Особливості використання сокетів в різних ос
- •63. Описати різницю між tcp і udp пакетом
- •64. Особливості dhcp протоколу
- •65. Структура dhcp пакетів
- •67. Режими видачі ip-адрес
- •68.ОписатипослідовністьвидачідинамічноїIp- адреси
- •69.Dhcp - сервер
- •71. Поштові протоколи
- •72.Особливості pop3-протоколу
- •Особливості smtp пртоколу
- •Архітектура та формат повідомлень arp-протоколу
- •Написання cgi – програм
- •76. Метод Get
- •Метод Post
Встановлення зв’язку за допомогою сокета
Установка соединения на стороне сервера состоитизчетырёхэтапов, ни один изкоторых не можетбытьопущен. Сначаласокетсоздаётся и привязывается к локальному адресу. Есликомпьютеримеетнесколькосетевыхинтерфейсов с различными IP-адресами, вы можете приниматьсоединениятолько с одного из них, передав его адрес функцииbind. Если же выготовысоединяться с клиентами через любойинтерфейс, задайте в качестве адреса константуINADDR_ANY. Чтокасается номера порта, вы можете задатьконкретный номер или 0 (в этомслучае система сама выберетпроизвольныйнеиспользуемый в данный момент номер порта).
На следующемшагесоздаётсяочередьзапросов на соединение. При этомсокетпереводится в режим ожиданиязапросовсостороныклиентов. Всё этовыполняетфункция listen.
intlisten(intsockfd, intbacklog); |
Первый параметр - дескриптор сокета, а второйзадаётразмерочередизапросов. Каждый раз, когдаочереднойклиентпытаетсясоединиться с сервером, егозапросставится в очередь, так как сервер можетбытьзанятобработкой других запросов. Еслиочередьзаполнена, все последующиезапросыбудутигнорироваться. Когда сервер готов обслужить очереднойзапрос, он используетфункцію accept.
#include<sys/socket.h> intaccept(intsockfd, void *addr, int *addrlen); |
Функция accept создаёт для общения с клиентом новый сокет и возвращаетего дескриптор. Параметр sockfd задаёт слушающийсокет. Послевызова он остаётся в слушающемсостоянии и можетприниматьдругиесоединения. В структуру, на которуюссылается addr, записывается адрес сокетаклиента, которыйустановилсоединение с сервером. В переменную, адресуемуюуказателем addrlen, изначальнозаписываетсяразмерструктуры; функция accept записывает тудадлину, которая реально былаиспользована. Если вас не интересует адрес клиента, вы можете просто передать NULL в качествевторого и третьегопараметров.
На сторонеклиента для установлениясоединенияиспользуетсяфункция connect, котораяимеетследующий прототип.
#include<sys/types.h> #include<sys/socket.h> intconnect(intsockfd, structsockaddr *serv_addr, intaddrlen); |
Здесь sockfd - сокет, которыйбудетиспользоваться для обменаданными с сервером, serv_addr содержит указатель на структуру с адресом сервера, а addrlen - длинуэтойструктуры. Обычносокет не требуетсяпредварительнопривязывать к локальному адресу, так какфункция connect сделает это за вас, подобравподходящийсвободный порт. Вы можете принудительно назначить клиентскомусокетунекоторый номер порта, используя bind перед вызовом connect. Делатьэтоследует в случае, когда сервер соединяется с только с клиентами, использующимиопределённый порт (примерами таких серверовявляютсяrlogind и rshd).
Прив’язка сокета до локальних імен
Для явного связываниясокета с некоторым адресом используетсяфункция bind. Её прототип имеет вид:
#include<sys/types.h> #include<sys/socket.h> intbind(intsockfd, structsockaddr *addr, intaddrlen); |
В качествепервого параметра передаётся дескриптор сокета, которыймыхотимпривязать к заданному адресу. Второй параметр, addr, содержитуказатель на структуру с адресом, а третий - длинуэтойструктуры. Посмотрим, чтоонасобойпредставляет.
structsockaddr { unsignedshortsa_family; // Семействоадресов, AF_xxx charsa_data[14]; // 14 байтов для хранения адреса }; |