- •Список вопросов на экзамен
- •Часть 1. Сети. 3
- •Часть 2. Сокеты. 26
- •Часть 1. Сети.
- •Классификация ip-адресов. Понятие номера сети и номера узла.
- •255.255.255.0 - Маска для сети класса с.
- •1.2. Модель osi. Физический уровень.
- •1.3. Модель osi. Канальный уровень.
- •1.4. Модель osi. Сетевой уровень.
- •1.5. Модель osi. Транспортный уровень.
- •1.6. Модель osi. Сеансовый уровень.
- •1.7. Модель osi. Уровень представления.
- •1.8. Модель osi. Прикладной уровень.
- •1.9. Адресация в ip-сетях.
- •1.10. Протоколы arp и rarp. Их место в стеке протоколов ip.
- •1.11. Маршрутизация в ip-сетях.
- •1.12. Структуризация ip-сетей с помощью масок.
- •255.255.255.0 - Маска для сети класса с.
- •1.13. Протокол tcp. Его место в стеке протоколов tcp/ip.
- •1.14. Протокол udp. Его место в стеке протоколов tcp/ip.
- •1.15. Протоколы надёжной доставки пакетов. Концепция квитирования.
- •1.16. Маршрутизаторы. Их место в сетевой модели osi.
- •1.17. Понятие маршрута. Принципы построения таблиц маршрутизации.
- •1.18. Понятие топологии сети. Средства объединения сетей с произвольной топологией.
- •1.19. Понятие стека сетевых протоколов. Стек протоколов tcp/ip.
- •1.20. Понятие сетевого интерфейса. Модель сетевого интерфейса для ip-сети.
- •Часть 2. Сокеты.
- •2.1. Технология клиент-сервер.
- •2.2. Событийная модель соединения сокетов.
- •2.3. Особенности программирования сетевого приложения.
- •2.4. Этапы организации соединения сокетов.
- •2.5. Организация сетевого соединения со стороны клиента.
- •2.10. Сокеты, как средство межпрограммного взаимодействия.
- •2.11. Сокеты. Их место в сетевой модели osi.
- •2.12. Сокеты. Их место в стеке протоколов ip.
- •2.13. Сокеты в ос Windows. Технология Windows Sockets.
- •2.14. Средства библиотеки mfc для работы с сокетами.
- •2.16. Передача данных через сокет.
- •2.17. Приём данных через сокет.
- •2.18. Способы закрытия сетевого соединения между сокетами.
- •2.19. Типы сокетов. Область их применения.
- •2.20. Понятие номера порта для протоколов транспортного уровня сетевой модели osi.
2.2. Событийная модель соединения сокетов.
Класс WinSock позволяет работать с сокетами в рамках трех подходов, против двух классических. А именно, обычная блокирующая передача данных, неблокирующая передача данных, событийно ориентированная передача данных.
При 3 подходе создаваемый сокет имеет ряд связанных с ним событий, реакцию на которые определяет пользователь.
Общеизвестный факт, что все ПО развивается в сторону унификации интерфейса, это позволяет значительно упростить и ускорить его использование для пользователя. Вполне логично, что унификация программного API приводит к более эффективному и грамотному его использованию программистами, которые выступают в роли потребителей API. В событийном подходе мы исходим от события, мы знаем для какого сокета есть новости.
Если задуматься на тему что такое поступление новых данных в сокет или, например, что такое закрытие сокета с другой стороны. Можно придти к простому выводу - это события. Такие же события, как наступления времени Х или любое другое событие в программе. Более того, абсолютно законна постановка вопроса: "ждем пока произойдет какое-нибудь событие или пока придут данные от сокета". Поэтому это правильно и логично, что и работа с сокетами должна строится на событиях.
Для работы с сокетами в ходе лаб использовался класс CAsyncSocket, который инкапсулирует возможности работы с WinSock. Основными событиями в данном классе являются следующие:
OnAccept |
Уведомляет слушающий сокет (сервера) о приходе запроса на установление соединения от удаленного сокета (клиента; метод Accept). |
OnClose |
Уведомляет сокет о разрыве соединения с ним. |
OnConnect |
Уведомляет сокет, пытающийся установить соединение, о том, что попытка соединения завершена (как успешно, так и с ошибкой). |
OnReceive |
Уведомляет сокет о наличии в буфере принятых данных, которые могут быть прочитаны с помощью вызова Receive. |
OnSend |
Уведомляет сокет о возможности передачи данных с помощью вызова Send. |
Источники:
http://www.kalinin.ru/programming/network/12_12_00.shtml
http://msdn2.microsoft.com/en-us/library/09353w3t(VS.80).aspx
2.3. Особенности программирования сетевого приложения.
Чтобы две программы могли общаться друг с другом через сеть, каждая из них должна создать сокет. Каждый сокет обладает двумя основными характеристиками: протоколом и адресом, к которым он привязан. Протокол задаётся при создании сокета и не может быть изменён впоследствии. Адрес сокета задаётся позже, но обязательно до того, как через сокет пойдут данные. Формат адреса сокета определяется конкретным протоколом. В частности, для протоколов TCP и UDP адрес состоит из IP-адреса сетевого интерфейса и номера порта.
При использовании TCP сервер сам не является инициатором подключения, но может работать с любым подключившимся клиентом, какой бы у него ни был адрес. Для сервера принципиально, какой порт он будет использовать - если порт не определён заранее, клиент не будет знать, куда подключаться. Поэтому номер порта является важным признаком для сервера. С другой стороны, клиенту обычно непринципиально, какой порт будет у его сокета, поэтому чаще всего сервер использует фиксированный порт, а клиент оставляет выбор системе.
Протокол UDP не поддерживает соединение, но при его использовании часто одно приложение тоже можно условно назвать сервером, а другое - клиентом. Сервер создаёт сокет и ждёт, когда кто-нибудь что-нибудь пришлёт и высылает что-то в ответ, а клиент сам отправляет что-то куда-то. Поэтому, как и в случае TCP, сервер должен использовать фиксированный порт, а клиент может выбирать любой свободный.
В программе-сервер закладывается способность ожидать появления запроса от клиента на определенном порту. Для этого используется отдельный сокет. Для установления соединения с каждым клиентом сервер выделяет один сокет. Клиенту для организации взаимодействия с сервером необходим один сокет. Таким образом для создания Nсоединений будет задействован 2N+ 1 сокет.
Источники:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021
http://home.tula.net/angel/les15.html