Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управления и радиоэлектроники (тусур)↑ Стр 1 из 11Следующая ⇒ Содержание книги
Поиск на нашем сайте
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра автоматизированных систем управления (АСУ)
А.Я. Суханов Сети ЭВМ и телекоммуникации.
Учебное методическое пособие по лабораторным занятиям, самостоятельной и индивидуальной работе студентов направления 230100 Информатика и вычислительная техника
Суханов А.Я. Сети ЭВМ и телекоммуникации: Учебное методическое пособие по лабораторным занятиям, самостоятельной и индивидуальной работе студентов – 65 с.
Учебное методическое пособие содержит программу и задания для лабораторных занятий, а так же все необходимые формы документов для выполнения лабораторных заданий.
Ó Суханов А.Я., 2012
Содержание Введение.. 4 1. ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ, ЕЕ МЕСТО В УЧЕБНОМ ПРОЦЕССЕ.. 5 1.2. Задачи изучения сетей и телекоммуникаций. 5 1.3. Перечень дисциплин, усвоение которых студентами необходимо для изучения баз данных и экспертных систем. 5 2. Содержание курса.. 5 2.1 Лекции (54 часа) 5 2.2 Темы для самостоятельного изучения. Отчет в виде рефератов и докладов. 7 2.3 Экзаменационные вопросы.. 8 2.3.1 Экзаменационные билеты.. 9 3. Лабораторные работы... 12 3.1 Работа с WinSocket. 12 3.1.1 Определения. 12 3.1.2 Создание сервера. 12 3.1.3 Создание клиента. 15 3.2 Лабораторная работа №1 Работа с сокетами Беркли.. 16 Протокол передачи времени Time. 17 Протокол Finger. 18 Задание на лабораторную работу: 19 3.3 Лабораторная работа №2 Протоколы SMTP и POP3. 19 3.4 Лабораторная работа №3 Моделирование протоколов канального уровня. 24 3.5 Лабораторная работа №4 Браузер и FTP-клиент. 29 3.6 Лабораторная работа №5. HTML, Javascript технология PHP. 30 HTML и Javascript 30 Технология PHP.. 34 3.7 Лабораторная работа № 6. Технология XML.. 36 3.8 Лабораторная работа №7 Маршрутизация в ВС.. 40 3.9 Лабораторная работа №8 Кэширующий HTTP прокси-сервер и SOCKS5 прокси-сервер. 46 3.10 Лабораторная работа №9 распределенный UDP сервер/ UDP клиент. 58 3.11 Лабораторная работа 10. Перехват сетевых пакетов. 60 3.12 Лабораторная работа 11. SASL аутоинтефикация. 64 ЛИТЕРАТУРА.. 65
Введение Методическое пособие предназначено для студентов направления 230100 очной формы обучения и содержит рабочую программу дисциплины «Сети и телекоммуникации», руководство для выполнения лабораторных работ, задания для контрольной работы по вариантам, экзаменационные вопросы по дисциплине. Выполнение заданий поможет лучше усвоить теоретический материал и получить практические навыки при работе с базами данных и экспертными системами. Лабораторные работы по дисциплине «Сети ЭВМ и телекоммуникации» у студентов направления бакалавриата 230100 «Информатики и вычислительная техника» проводятся в пятом семестре четырехлетнего учебного цикла. Учитывая специфику направления, основной акцент сделан на программном обеспечении для сетей ЭВМ. Базовой, но не единственной, технологией программирования на сетевом и транспортном уровне эталонной модели взаимодействия открытых систем (ISO/OSI) являются сокеты (socket) Беркли. Сокеты Беркли в настоящее время реализованы в виде прикладного интерфейса (API) практически во всех современных операционных системах. В связи с широким распространением сетей ЭВМ и телекоммуникаций на сегодняшний день знание этой технологии является необходимым для специалиста в области программного обеспечения. Мировые тенденции развития сетевых технологий указывают на то, что технология программирования сокетов эволюционирует, становится протоколо- и платформонезависимой и имеет широкие перспективы в будущем. В тоже время программирование сокетов является достаточно низкоуровневой технологией, сосредотачивающей внимание на транспортировке данных безотносительно их пользовательской семантики. Для реализации законченных пользовательских приложений требуется применение более эффективных высокоуровневых технологий передачи гипертекста, бинарных данных (HTTP, FTP), и организации логики клиент-серверного взаимодействия (веб-технологии). Также мощной тенденцией развития программного обеспечения вообще и сетевого в частности является создание технологий программирования максимально независимых от программного и аппаратного окружения. Ярчайшим примером здесь является технология Java корпорации Sun Microsystems (США) и свободно распространяемая среда разработки Eclipse, продвигаемая одноименным сетевым сообществом (community). Студент должен обладать некоторым набором знаний и навыков для выполнения данного лабораторного практикума. Так, для работы с сокетами в ОС MS Windows и Unix-подобных системах, требуется знание языка программирования C, а также основ работы в соответствующих ОС. Язык программирования Java является развитием ЯП C++, и для освоения Java необходимо владеть методами объектно-ориентированного проектирования и программирования. Теоретические знания о построении сетей ЭВМ приобретаются в ходе лекционных занятий и при изучении основной и дополнительной литературы. Программное обеспечение, а также справочная информация, используемые в данном практикуме, являются свободно распространяемыми и доступны для загрузки из сети Интернет. Для экономии времени всё обеспечение загружено, упорядочено в структуру и размещено на локальных и публичных сетевых ресурсах. Одним из таких ресурсов является веб-узел афедры АСУ ТУСУР http: //www.asu.tusur.ru (раздел методического обеспечения.
Можно указать то место, где установлена IDE Eclipse.
ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ, ЕЕ МЕСТО В УЧЕБНОМ ПРОЦЕССЕ
1.1. Цели преподавания дисциплины Целью дисциплины является обучение студентов основам построения и функционирования вычислительных сетей (ВС) и телекоммуникационных систем (ТКС). На материале этой дисциплины базируются практически все дисциплины связанные с применением технологий вычислительных сетей.
Задачи изучения сетей и телекоммуникаций. Основной задачей изучения дисциплины является приобретение студентами прочных знаний и практических навыков в области, определяемой основной целью курса. В результате изучения дисциплины студенты должны усвоить следующие понятия и определения: классификация информационно-вычислительных сетей, способы коммутации, взаимодействие программного и аппаратного обеспечения сетей, протоколы и интерфейсы, эталонная модель взаимосвязи открытых систем, аналоговые и цифровые каналы передачи данных, модемы, базовые технологии локальных сетей, глобальные сети, технологии современных телекоммуникаций. В части организации программного обеспечения сетей изучаются способы адресации в протоколах TCP/IP, алгоритмы маршрутизации, протоколы файлового обмена, электронной почты, дистанционного управления, Web-технологии, способы организации распределенных вычислений, основные возможности сетевых операционных систем. Рассматриваются как низкоуровневые (сокеты) так и высокоуровневые программные технологии (технология Java,.Net) для работы в вычислительных сетях. 1.3. Перечень дисциплин, усвоение которых студентами необходимо для изучения баз данных и экспертных систем. Дисциплина «Сети и телекоммуникации» относится к профессиональному циклу базовой (обязательной) части дисциплин. Изучение данной дисциплины необходимо для учебно-исследовательской работы и при изучении GRID-технологий. Для изучения данной дисциплины необходимо изучение таких дисциплин на младших курсах таких как: «Математика», «Физика», «Информатика», «Программирование», «Дискретная математика», «ЭВМ и периферийные устройства», «Объектно-ориентированное программирование», «Структуры и алгоритмы обработки данных», «Основы разработки программного обеспечения».
Содержание курса 2.1 Лекции (54 часа)
2.2 Темы для самостоятельного изучения. Отчет в виде рефератов и докладов. Темы рефератов 1. Протокол шифрования WEP. Взлом WEP. FMS Атака. 2. Протокол IPSec. 3. Протокол сетевого уровня IPv6. 4. Протокол SSL/TLS. 5. Технологии глобальных сетей. 6. Сотовая связь. Основные технологии. 7. Современные технологии локальных сетей. 8. Спутниковая связь, спутниковый Интернет. 9. Методы мультиплексирования применяемые в сотовой связи. 10. Телекоммуникационные технологии будущего. 11. Квантовые криптографические алгоритмы и протоколы для передачи данных. 12. Квантовая телепортация. 13. Безопасность в Wi - Fi сетях. 14. Стек протоколов OSI. 15. Сети ЭВМ будущего. 16. Протоколы групповой маршрутизации. 17. Защищенные каналы в сети Интернет. 18. Безопасность в сети Интернет. Основные угрозы. 19. DDoS атака. DoS атака. 20. Облачные сервисы. 21. Сети WiMAX.
2.3 Экзаменационные вопросы 1. Виды сервисов, предоставляемых современными сетями. Привести примеры существующих технологий. 2. Глобальные и локальные сети. Современные тенденции развития. 3. Необходимость стандартизации сетей ЭВМ. Источники официальных стандартов и рекомендаций. Источники стандартов Интернет. 4. Модель взаимодействия открытых систем. Принцип построения. Понятия: протокол, интерфейс. 5. Понятие среды передачи данных. Шкала электромагнитного спектра. Достоинства и недостатки каждого из диапазонов. 6. Проводные технологии передачи данных. Основные характеристики. 7. Беспроводные технологии передачи данных. Основные характеристики. 8. Спутниковые системы передачи данных. Низко- и высокоорбитальные системы. VSAT. Iridium. GlobalStar. Глонасс. GPS. 9. Телефония и магистральные каналы связи. Технологии T1, E1, T3, X.25, Frame Relay, ISDN, ATM. 10. Аппаратное обеспечение сетей ЭВМ (сетевые карты, мосты, коммутаторы, маршрутизаторы, модемы, мультиплексоры). Разделение устройств по уровням OSI. 11. Понятие стека протоколов. Существующие стеки протоколов (назвать не менее 4-5 стеков). Стеки TCP/IP и IPX/SPX. Принципиальное отличие этих стеков. 12. Пример взаимодействие двух компьютеров в сети. Клиент и сервер. Задачи решаемые, сетевыми операционными системами. Обзор сетевых операционных систем. Основные критерии оценки. 13. Коммутация пакетов и коммутация каналов. Сравнительная характеристика, области и технологии применения. 14. Аналоговое и цифровое кодирование. Связь частоты, методов кодирования и информационной скорости передачи сигнала, энтропия: формула Шеннона. 15. Физический уровень модели OSI. Единицы данных физического уровня. Методы синхронизации бит. Физическая топология. Достоинства и недостатки различных топологий. Мультиплексирование физического уровня: методы мультиплексирования, области применения. Методы помехоустойчивого кодирования. 16. Канальный уровень модели OSI. Логическая топология сетей. Единицы данных канального уровня. Методы доступа к среде передачи данных. Синхронизация байт. Сервис соединений. 17. Технологии канального уровня: Ethernet, Token Ring. 18. Технология 100 VG-AnyLAN, FDDI. 19. Сетевой уровень модели OSI. Единицы данных, адресация сетевого уровня. Сервис шлюзов. Маршрутизация. Коммутация. 20. Транспортный уровень модели OSI. Сервис транспортного уровня. Сегменты. 21. Сеансовый, уровень представления и прикладной уровни. 22. Адресация в сетях. Адресация в сетях TCP/IP. Протоколы ARP, DHCP. 23. Алгоритм Дейкстры нахождения кратчайшего пути. Метод заливки. 24. Маршрутизация по вектору расстояний. Достоинства и недостатки методов. 25. Маршрутизация с учетом состояния линий. 26. Протокол IP. Назначение. Принцип действия. Формат заголовка. 27. Протоколы: UDP, ICMP, TCP, ICMP v6. 28. Протокол SOCKS5. Цепочки прокси. 29. Система DNS. Записи ресурсов в DNS. Серверы имен. Зоны DNS. 30. Электронная почта. К какому виду сетевого сервиса она относится? Стандарты e-mail. Почему неудобно использовать IP адреса в качестве адресов электронной почты? 31. Архитектура и службы электронной почты. Пользовательский агент и агент передачи сообщения. Перечислите протоколы электронной почты Internet. 32. Форматы сообщений. RFC822. MIME. Правила кодировки base64, quoted-printable. 33. Протоколы SMTP, POP3, IMAP4. Назначение. Основные отличия. Веб-почта. 34. Всемирная паутина WWW. История развития. Архитектура и принцип действия. Вопросы, рассматриваемые W3C. 35. Клиентское ПО в WWW. Действия выполняемые браузером. Способы расширения возможностей браузеров. 36. ПО веб-сервера. Действия сервера. Способы увеличения производительности серверов. Популярное ПО для веб-серверов (Apache и т.д.) 37. Протокол HTTP. 38. URL. URN. Технология cookie. Достоинства и недостатки. 39. Статические веб-документы. HTML – основные свойства. Сравнение возможностей различных версий HTML. Формы в HTML. 40. XML, XSL. XHTML. 41. Динамические веб-документы на стороне сервера. Назначение. Примеры реализации. Технологии CGI, ISAPI, PHP, ASP, JSP. Примеры кода. Достоинства и недостатки. 42. Динамические веб-документы на стороне клиента. JavaScript, Java, ActiveX, SWF. Примеры реализации. Достоинства и недостатки. 43. Описание сервиса в модели OSI. Функции уровней. 44. Представление сервиса в модели OSI. Правила описания сервиса. Взаимосвязь в режиме без соединения. Описание сервисов физического и канального уровней. Граф последовательности канальных сервисных примитивов. 45. Описание сервисов сетевого и транспортного уровней. 46. Описание сервисов сеансового уровня. 47. Описание сервисов уровней представления и прикладного уровня. Синтаксис ASN.1 48. Сети Gigabit, 10,40, 100 Gigabit Ethernet. 49. Сети SONET/SDH. 50. Протокол маршрутизации OSPF. 51. Протокол маршрутизации NLSP. 52. Протокол маршрутизации RIP. 53. Протокол IP версии 6. Отличия от версии 4. IP адреса v6. 54. Способы расширения адресного пространства IP v4. Устройства NAT. 55. Протоколы групповой маршрутизации. 56. Протокол групповой маршрутизации MOSPF. 57. Протокол IGMP. 58. Беспроводные сети. Wi-Fi, WiMax, Bluetooth. 59. Протоколы беспроводных сетей. WEP. 60. Протоколы беспроводных сетей. WPA. 61. Безопасность в беспроводных сетях. 62. Сотовая связь. CDMA, TDMA, FDMA. 63. Сотовая связь. UMTS, GSM. 64. Безопасность беспроводных сетей. Атаки на WEP. 65. Квантовые криптографические алгоритмы и протоколы. 66. Безопасность в сети. SSL 2.0. TLS (SSL 3.0). 67. Безопасность в сети. IPSec. 68. Безопасность в сети. SASL.
Экзаменационные билеты 1. Виды сервисов, предоставляемых современными сетями. Привести примеры существующих технологий. 2. Пример взаимодействие двух компьютеров в сети. Клиент и сервер. Задачи решаемые, сетевыми операционными системами. Обзор сетевых операционных систем. Основные критерии оценки. 3. Протоколы SMTP, POP3, IMAP4. Назначение. Основные отличия. Веб-почта. –-------------------------------------------- 4. Электронная почта. К какому виду сетевого сервиса она относится? Стандарты e-mail. Почему неудобно использовать IP адреса в качестве адресов электронной почты? 5. Протоколы беспроводных сетей. WEP. 6. Динамические веб-документы на стороне сервера. Назначение. Примеры реализации. Технологии CGI, ISAPI, PHP, ASP, JSP. Примеры кода. Достоинства и недостатки. –--------------------------------------------- 7. Технологии канального уровня: Ethernet, Token Ring. 8. Маршрутизация с учетом состояния линий. 9. Архитектура и службы электронной почты. Пользовательский агент и агент передачи сообщения. Перечислите протоколы электронной почты Internet. –------------------------------------------------- 10. Транспортный уровень модели OSI. Сервис транспортного уровня. Сегменты. 11. Сетевой уровень модели OSI. Единицы данных, адресация сетевого уровня. Сервис шлюзов. Маршрутизация. Коммутация. 12. Протокол маршрутизации OSPF. –---------------------------------------------------- 13. Протокол маршрутизации NLSP. 14. Беспроводные сети. Wi-Fi, WiMax, Bluetooth. 15. Канальный уровень модели OSI. Логическая топология сетей. Единицы данных канального уровня. Методы доступа к среде передачи данных. Синхронизация байт. Сервис соединений. –----------------------------------------------------- 16. Беспроводные технологии передачи данных. Основные характеристики. 17. Физический уровень модели OSI. Единицы данных физического уровня. Методы синхронизации бит. Физическая топология. Достоинства и недостатки различных топологий. Мультиплексирование физического уровня: методы мультиплексирования, области применения. Методы помехоустойчивого кодирования. 18. Технология 100 VG-AnyLAN, FDDI. –----------------------------------------------------------------- 19. Описание сервиса в модели OSI. Функции уровней. 20. Представление сервиса в модели OSI. Правила описания сервиса. Взаимосвязь в режиме без соединения. Описание сервисов физического и канального уровней. Граф последовательности канальных сервисных примитивов. 21. Безопасность в сети. SSL 2.0. TLS (SSL 3.0). –-------------------------------------------------------------------- 22. Аппаратное обеспечение сетей ЭВМ (сетевые карты, мосты, коммутаторы, маршрутизаторы, модемы, мультиплексоры). Разделение устройств по уровням OSI. 23. Аналоговое и цифровое кодирование. Связь частоты, методов кодирования и информационной скорости передачи сигнала, энтропия: формула Шеннона. 24. Система DNS. Записи ресурсов в DNS. Серверы имен. Зоны DNS. ---------------------------------------------------------------------- 25. Протокол SOCKS5. Цепочки прокси. 26. ПО веб-сервера. Действия сервера. Способы увеличения производительности серверов. Популярное ПО для веб-серверов (Apache и т.д.) 27. Описание сервисов сеансового уровня. –------------------------------------------------------------
28. Сеансовый, уровень представления и прикладной уровни. 29. Понятие среды передачи данных. Шкала электромагнитного спектра. Достоинства и недостатки каждого из диапазонов. 30. Спутниковые системы передачи данных. Низко- и высокоорбитальные системы. VSAT. Iridium. GlobalStar. Глонасс. GPS. –---------------------------------------------------------------------- 31. URL. URN. Технология cookie. Достоинства и недостатки. 32. Динамические веб-документы на стороне клиента. JavaScript, Java, ActiveX, SWF. Примеры реализации. Достоинства и недостатки. 33. Описание сервисов сетевого и транспортного уровней. –------------------------------------------------------------------------ 34. Безопасность в сети. SASL. 35. Протоколы беспроводных сетей. WPA. 36. Форматы сообщений. RFC822. MIME. Правила кодировки base64, quoted-printable. –------------------------------------------------------------------- 37. Протокол IP. Назначение. Принцип действия. Формат заголовка. 38. Адресация в сетях. Адресация в сетях TCP/IP. Протоколы ARP, DHCP. 39. Понятие стека протоколов. Существующие стеки протоколов (назвать не менее 4-5 стеков). Стеки TCP/IP и IPX/SPX. Принципиальное отличие этих стеков. –------------------------------------------------------------------------ 40. Глобальные и локальные сети. Современные тенденции развития. 41. Алгоритм Дейкстры нахождения кратчайшего пути. Метод заливки. 42. Клиентское ПО в WWW. Действия выполняемые браузером. Способы расширения возможностей браузеров. –-------------------------------------------------------------------------------- 43. Статические веб-документы. HTML – основные свойства. Сравнение возможностей различных версий HTML. Формы в HTML. 44. Сети Gigabit, 10,40, 100 Gigabit Ethernet. 45. Протокол IP версии 6. Отличия от версии 4. IP адреса v6. –----------------------------------------------------------------------------- 46. Протокол групповой маршрутизации MOSPF. 47. Безопасность беспроводных сетей. Атаки на WEP. 48. Протоколы: UDP, ICMP, TCP, ICMP v6. ------------------------------------------------------------------------------ 49. Всемирная паутина WWW. История развития. Архитектура и принцип действия. Вопросы, рассматриваемые W3C. 50. Необходимость стандартизации сетей ЭВМ. Источники официальных стандартов и рекомендаций. Источники стандартов Интернет. 51. Модель взаимодействия открытых систем. Принцип построения. Понятия: протокол, интерфейс. –------------------------------------------------------------------------------ 52. Коммутация пакетов и коммутация каналов. Сравнительная характеристика, области и технологии применения. 53. Маршрутизация по вектору расстояний. Достоинства и недостатки методов. 54. Протокол HTTP. –------------------------------------------------------------------------------------ 55. Протокол IGMP. 56. Квантовые криптографические алгоритмы и протоколы. 57. XML, XSL. XHTML. –------------------------------------------------------------------------------------ 58. Описание сервисов уровней представления и прикладного уровня. Синтаксис ASN.1 59. Способы расширения адресного пространства IP v4. Устройства NAT. 60. Телефония и магистральные каналы связи. Технологии T1, E1, T3, X.25, Frame Relay, ISDN, ATM. –--------------------------------------------------------------------------------- 61. Проводные технологии передачи данных. Основные характеристики. 62. Сети SONET/SDH. 63. Сотовая связь. CDMA, TDMA, FDMA. –---------------------------------------------------------------------------------- 64. Сотовая связь. UMTS, GSM. 65. Безопасность в сети. IPSec. 66. Протоколы групповой маршрутизации. –-------------------------------------------------------------------------------------- 67. Протокол маршрутизации RIP. 68. Безопасность в беспроводных сетях. 69. Коммутация пакетов и коммутация каналов. Сравнительная характеристика, области и технологии применения. Лабораторные работы Работа с WinSocket Определения Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной программе конечной точки канала связи с коммуникационной средой, образованной вычислительной сетью. При использовании протоколов TCP/IP можно говорить, что socket является средством подключения прикладной программы к порту локального узла сети. Создание сервера Для создания сокета в операционной системе служит системный вызов socket(). Для транспортных протоколов семейства TCP/IP существует два вида сокетов: UDP-сокет – сокет для работы с датаграммами, и TCP сокет – для работы с каналами. При создании сокета необходимо точно специфицировать его тип. Эта спецификация производится с помощью трех параметров вызова socket(). Первый параметр указывает, к какому семейству протоколов относится создаваемый сокет, а второй и третий параметры определяют конкретный протокол внутри данного семейства. Создание сокета осуществляется следующим системным вызовом: #include <sys/types.h> #include <sys/socket.h> int socket (int domain, int type, int protocol) Аргумент domain задает используемый для взаимодействия набор протоколов (вид коммуникационной области), для стека протоколов TCP/IP он должен иметь символьное значение AF_INET или PF_INET. Аргумент type задает режим взаимодействия: SOCK_STREAM - с установлением соединения; SOCK_DGRAM - без установления соединения. Аргумент protocol задает конкретный протокол транспортного уровня (из нескольких возможных в стеке протоколов). Если этот аргумент задан равным 0, то будет использован протокол "по умолчанию" (TCP для SOCK_STREAM и UDP для SOCK_DGRAM при использовании комплекта протоколов TCP/IP). При удачном завершении своей работы данная функция возвращает дескриптор сокета - целое неотрицательное число, однозначно его идентифицирующее. При обнаружении ошибки в ходе своей работы функция возвращает число "-1". Прежде чем воспользоваться функцией socket необходимо проинициализировать процесс библиотеки wsock32.dll вызвав функцию WSAStartup например: WSADATA WsaData; int err = WSAStartup (0x0101, &WsaData); if (err == SOCKET_ERROR) { printf ("WSAStartup() failed: %ld\n", GetLastError ()); return 1; } Здесь 0х0101 версия библиотеки которую следует использовать. Кроме того, не забудьте подключить к проекту библиотеку ws2_32.lib. Теперь объявить переменную типа SOCKET можно следующим образом:
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
Далее следует задать параметры для сокета (сервера) для этого нам необходимо объявить структуру SOCKADDR_IN sin примерно следующим образом:
SOCKADDR_IN sin;
sin.sin_family = AF_INET; sin.sin_port = htons(80); sin.sin_addr.s_addr = INADDR_ANY; Структура SOCKADDR_IN используется несколькими системными вызовами и функциями socket-интерфейса, ее определение в файле in.h выглядит следующим образом: struct SOCKADDR_IN { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; };
Поле sin_family определяет используемый формат адреса (набор протоколов), в нашем случае (для TCP/IP) оно должно иметь значение AF_INET. Поле sin_addr содержит адрес (номер) узла сети. Поле sin_port содержит номер порта на узле сети. Поле sin_zero не используется. Определение структуры in_addr (из того же файла in.h) таково: struct in_addr { union { u_long S_addr; /* другие (не интересующие нас) члены объединения */ } S_un; #define s_addr S_un.S_addr };
Структура SOCKADDR_IN должна быть полностью заполнена перед выдачей системного вызова bind. При этом, если поле sin_addr.s_addr имеет значение INADDR_ANY, то системный вызов будет привязывать к сокету c номером (адресом) локального узла сети. Для подключения сокета к коммуникационной среде, образованной вычислительной сетью, необходимо выполнить системный вызов bind, определяющий в принятом для сети формате локальный адрес канала связи со средой. В сетях TCP/IP socket связывается с локальным портом. Системный вызов bind имеет следующий синтаксис: int bind (SOCKET s, SOCKADDR_IN *addr, int addrlen) Пример: err = bind(s, (LPSOCKADDR)&sin, sizeof(sin)); Аргумент s задает дескриптор связываемого сокета. Аргумент addr в общем случае должен указывать на структуру данных, содержащую локальный адрес, приписываемый сокету. Для сетей TCP/IP такой структурой является SOCKADDR_IN. Аргумент addrlen задает размер (в байтах) структуры данных, указываемой аргументом addr. В случае успеха bind возвращает 0, в противном случае - "-1". Для установления связи "клиент-сервер" используются системные вызовы listen и accept (на стороне сервера), а также connect (на стороне клиента). Для заполнения полей структуры sockaddr_in, используемой в вызове connect, обычно используется библиотечная функция gethostbyname, транслирующая символическое имя узла сети в его номер (адрес). Системный вызов listen выражает желание выдавшей его программы- сервера ожидать запросы к ней от программ-клиентов и имеет следующий вид: int listen (SOCKET s, int n); Пример: err = listen(s, SOMAXCONN); Аргумент s задает дескриптор сокета, через который программа будет ожидать запросы к ней от клиентов. Socket должен быть предварительно создан системным вызовом socket и обеспечен адресом с помощью системного вызова bind. Аргумент n определяет максимальную длину очереди входящих запросов на установление связи. Если какой-либо клиент выдаст запрос на установление связи при полной очереди, то этот запрос будет отвергнут. Признаком удачного завершения системного вызова listen служит нулевой код возврата. Перед тем как воспользоваться функцией accept, необходимо объявить ещё одну переменную типа SOCKET, например s1. SOCKADDR_IN from; int fromlen=sizeof(from); s1 = accept(s,(struct sockaddr*)&from,&fromlen); Это сделано для того, что бы узнать IP адрес и порт удаленного компьютера. Для приема запросов от программ-клиентов на установление связи в программах-серверах используется системный вызов accept, имеющий следующий прототип: int accept (SOCKET s, sockaddr_in *addr, int *p_addrlen; Аргумент s задает дескриптор сокета, через который программа-сервер получила запрос на соединение (посредством системного запроса listen). Аргумент addr должен указывать на область памяти, размер которой позволял бы разместить в ней структуру данных, содержащую адрес сокета программы-клиента, сделавшей запрос на соединение. Никакой инициализации этой области не требуется. Аргумент p_addrlen должен указывать на область памяти в виде целого числа, задающего размер (в байтах) области памяти, указываемой аргументом addr. Системный вызов accept извлекает из очереди, организованной системным вызовом listen, первый запрос на соединение и возвращает дескриптор нового (автоматически созданного) сокета с теми же свойствами, что и socket, задаваемый аргументом s. Этот новый дескриптор необходимо использовать во всех последующих операциях обмена данными. Если очередь запросов на момент выполнения accept пуста, то программа переходит в состояние ожидания поступления запросов от клиентов на неопределенное время (хотя такое поведение accept можно и изменить). Признаком неудачного завершения accept служит отрицательное возвращенное значение (дескриптор сокета отрицательным быть не может). После установления соединения с клиентом можно передавать и получать данные. Для этого в операционной системе Window используются системные вызовы recv для чтения и send для записи. Системные вызовы recv и send имеют следующие прототипы: int recv (SOCKET s, void *buf, size_t len, int flags); int send (SOCKET s, const void *buf, size_t len, int flags); Возвращаемое значение: число принятых или переданных байтов в случае успеха или -1 в случае ошибки Аргумент s задает дескриптор сокета, через который принимаются данные. Аргумент buf для вызова recv указывает на область памяти, предназначенную для размещения принимаемых данных, а для вызова send - область памяти, содержащая передаваемые данные. Аргумент len задает размер (в байтах) области buf. Аргумент flags зависит от системы, но и UNIX, и Windows поддерживают следующие флаги: MSG_OOB – следует послать или принять срочные данные. MSG_PEEK – используется для просмотра поступивших данных без их удаления из приемного буфера. После возврата из системного вызова данные еще могут быть получены при последующем вызове recv. MSG_DONTROUTE – сообщает ядру, что не надо выполнять обычный алгоритм маршрутизации. Как правило, используется программами маршрутизации или для диагностических целей. При работе с протоколом TCP вам ничего больше не понадобиться. Но при работе с UDP нужны еще системные вызовы recvfrom и sendto. Они очень похожи на recv и send, но позволяют при отправке датаграммы задать адрес назначения, а при приеме – получить адрес источника. Системные вызовы recvfrom и sendto имеют следующие прототипы: int recvfrom (SOCKET s, void *buf, size_t len, int flags, struct socketaddt *from, int *fromlen); int sendto (SOCKET s, const void *buf, size_t len, int flags, const struct sockaddr *to, int tolen); Возвращаемое значение: число принятых или переданных байтов в случае успеха или -1 в случае ошибки Первые четыре аргумента – s, buf, len и flags – такие же, как и в вызовах recv и send. Аргумент from в вызове recvfrom указывает на структуру, в которую ядро помещает адрес источника пришедшей датаграммы. Длина этого адреса хранится в целом числе, на которое указывает аргумент fromlen. Обратите внимание, что fromlen – это указатель на целое. Аналогично аргумент to в вызове sendto указывает на адрес структуры, содержащей адреса назначения датаграммы, а аргумент tolen – длина этого адреса. Заметьте, что to - это целое, а не указатель. Для закрытия ранее созданного сокета в системе Windows используется системный вызов closesocket, а в UNIX – системный вызов close. Прототипы системных вызовов close и closesocket имеют следующий вид: int close(SOCKET s); int closesocket(SOCKET s); Аргумент s задает дескриптор ранее созданного сокета. Создание клиента Программа клиента делается аналогично до момента создания сокетов. Cоздайте сокет так, как описано выше, но не пользуйтесь командой bind: SOCKADDR_IN anAddr; anAddr.sin_family = AF_INET; anAddr.sin_port = htons(80); anAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); Заполнение структуры производится почти также но во время инициализации переменной anAddr необходимо указать IP-адрес сервера (пример 127.0.0.1). Для обращения программы-клиента к серверу с запросом на установление логической соединения используется системный вызов connect, имеющий следующий прототип: int connect(SOCKET s, const struct sockaddr *peer, int peer_len)); Аргумент s задает дескриптор сокета, через который программа обращается к серверу с запросом на соединение. Аргумент addr должен указывать на структуру данных, содержащую адрес, приписанный сокету программы-сервера, к которой делается запрос на соединение. Для сетей TCP/IP
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-10; просмотров: 225; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.218.206 (0.011 с.) |