Федеральное государственное автономное образовательное учреждение высшего образования
«Нижегородский государственный университет им. Н.И. Лобачевского»
Институт информационных технологий, математики и механики
Кафедра информатики и автоматизации научных исследований
Направление подготовки:
«Прикладная информатика»
ОТЧЕТ ПО КУРСОВОМУ ПРОЕКТУ
ТЕМА
КЛИЕНТ-СЕРВЕРНАЯ РЕАЛИЗАЦИЯ
УДАЛЕННЫХ ВЫЧИСЛЕНИЙ
Выполнил:
студент группы 0837-1
Буяков Дмитрий Владимирович
подпись
Научный руководитель:
Кумагина Елена Александровна
подпись
Нижний Новгород
Оглавление
Введение. 3
Теория. 4
Модель OSI 4
Модель TCP/IP. 6
Реализация транспортного уровня: TCP и UDP. 6
Сокеты.. 8
Программная реализация и эксперимент. 9
Заключение. 10
Литература. 11
Введение
В последние время все больший объем информации и вычислений выполняется на удаленных серверах. Существует множество сервисов, предоставляющих либо вычислительные мощности сервера, либо пространство «в облаке» за очень доступные цены (а иногда и вовсе бесплатно).
В связи с этим стоит отметить востребованность в понимании того, как работает взаимодействие между компьютерами в сети, что такое модель «клиент-сервер» и насколько сложно реализовать эту систему.
//вступление насчет того, как и почему удаленные вычисления более востребованные, нежели локальные
Теория
Как обеспечить канал передачи данных между двумя компьютерами? Сейчас – это довольно тривиальная, решающаяся Ethernet-кабелем. Один конец в компьютер A, другой – в компьютер B, остальное за нас сделают операционная система и сетевой адаптер. Однако, что же происходит на этом уровне?
|
Что бы как можно вернее ответить на данный вопрос, стоит обратиться к теории построения модели сетевого взаимодействия между несколькими машинами.
Модель OSI
В начале 80-х годов ряд международных организаций по стандартизации (ISO, ITU-T) разработали OSI Reference Model – модель взаимодействия открытых систем (Open Systems Interconnection).
Прикладной |
Представления |
Сеансовый |
Транспортный |
Сетевой |
Канальный |
Физический |
Рис 1. Уровни модели OSI
Модель OSI имеет семь уровней. Появление именно такой структуры было обусловлено следующими соображениями.
1. Уровень должен создаваться по мере необходимости отдельного уровня абстракции.
2. Каждый уровень должен выполнять строго определенную функцию.
3. Выбор функций для каждого уровня должен осуществляться с учетом создания стандартизированных международных протоколов.
4. Границы между уровнями должны выбираться так, чтобы поток данных между интерфейсами был минимальным.
5. Количество уровней должно быть достаточно большим, чтобы различные функции не объединялись в одном уровне без необходимости, но не слишком высоким, чтобы архитектура не становилась громоздкой.
Физический уровень занимается реальной передачей необработанных битов по каналу связи.
Канальный уровень разбивает "сырые" данные на кадры, также производя контроль корректности передачи.
Сетевой уровень занимается управлением операциями подсети - определяет маршруты пересылки пакетов от источника до пункта назначения.
Транспортный уровень принимает данные от сеансового уровня, разбивает их при необходимости на небольшие части, передает их сетевому уровню и гарантирует, что эти части в правильном виде прибудут по назначению.
|
Сеансовый уровень позволяет пользователям различных компьютеров устанавливать сеансы связи друг с другом для последующей передачи данными.
Уровень представления занимается преобразованиями над данными (в т.ч. шифрование), предоставляя возможность определения и изменения структур передаваемой информации более высокого уровня.
Прикладной уровень содержит набор популярных протоколов, необходимых пользователям. (HTTP, FTP, SMTP) [1]
Однако у такой модели сетевых протоколов выделили несколько существенных проблем, в том числе:
· спецификации OSI были в некоторых случаях неполными;
· по своим функциональным возможностям OSI уступали другим протоколам;
· наличие многочисленных уровней сделало OSI медлительным и трудным для реализации.
Посему, от реализации сетей передачи данных по модели OSI отказались еще в 90-ые и стали продвигаться другие модели сетевого взаимодействия. [2]
//теория насчет того, как передать информацию с одного компа на другой
Модель TCP/IP
Transmission Control Protocol/Internet Protocol (TCP/IP) - это промышленный стандарт стека протоколов, разработанный для глобальных сетей. Первое его описание встречается в книге Cerf и Kahn (1974). [1]
Прикладной |
Транспортный |
Сетевой |
Канальный |
Рис 2. Уровни модели TCP/IP
Стек протоколов TCP/IP включает в себя четыре уровня:
Канальный уровень соответствует канальному и физическому уровням модели OSI.
|
Сетевой уровень соответствует сетевому уровню модели OSI.
Транспортный уровень соответствует транспортному уровню модели OSI.
Прикладной уровень соответствует сеансовому, прикладному и уровню представления в модели OSI.
Реализация транспортного уровня: TCP и UDP
TCP (Transmission Control Protocol) — ориентированный на соединение протокол, что означает необходимость «рукопожатия» для установки соединения между двумя хостами. Как только соединение установлено, пользователи могут отправлять данные в обоих направлениях.
· Надёжность — TCP управляет подтверждением, повторной передачей и тайм-аутом сообщений. Производятся многочисленные попытки доставить сообщение. Если оно потеряется на пути, сервер вновь запросит потерянную часть. В TCP нет ни пропавших данных, ни (в случае многочисленных тайм-аутов) разорванных соединений.
· Упорядоченность — если два сообщения последовательно отправлены, первое сообщение достигнет приложения-получателя первым. Если участки данных прибывают в неверном порядке, TCP отправляет неупорядоченные данные в буфер до тех пор, пока все данные не могут быть упорядочены и переданы приложению.
· Тяжеловесность — TCP необходимо три пакета для установки сокет-соединения перед тем, как отправить данные. TCP следит за надёжностью и перегрузками.
· Потоковость — данные читаются как поток байтов, не передается никаких особых обозначений для границ сообщения или сегментов.
UDP (User Datagram Protocol) — более простой, основанный на сообщениях протокол без установления соединения. Протоколы такого типа не устанавливают выделенного соединения между двумя хостами. Связь достигается путём передачи информации в одном направлении от источника к получателю без проверки готовности или состояния получателя. В приложениях для голосовой связи через интернет-протокол (Voice over IP, TCP/IP) UDP имеет преимущество над TCP, в котором любое «рукопожатие» помешало бы хорошей голосовой связи.
· Ненадёжный — когда сообщение посылается, неизвестно, достигнет ли оно своего назначения — оно может потеряться по пути. Нет таких понятий, как подтверждение, повторная передача, тайм-аут.
· Неупорядоченность — если два сообщения отправлены одному получателю, то порядок их достижения цели не может быть предугадан.
· Легковесность — никакого упорядочивания сообщений, никакого отслеживания соединений и т. д. Это небольшой транспортный уровень, разработанный на IP.
· Датаграммы — пакеты посылаются по отдельности и проверяются на целостность только если они прибыли. Пакеты имеют определенные границы, которые соблюдаются после получения, то есть операция чтения на сокете-получателе выдаст сообщение таким, каким оно было изначально послано.
· Нет контроля перегрузок — UDP сам по себе не избегает перегрузок. Для приложений с большой пропускной способностью возможно вызвать коллапс перегрузок, если только они не реализуют меры контроля на прикладном уровне. [3]
//описание того, как связать 2 компьютера (tcp udp + что они делают внутри), каким требованиям должна обладать эта система связи
Сокеты
Сокеты Беркли — интерфейс программирования приложений, представляющий собой библиотеку на языке С для разработки приложений, часто применяемый в компьютерных сетях.
Фактически – это прослойка между транспортным и прикладным уровнями TCP стека протоколов.
Современные реализации сокетов Беркли не зависят от платформы и языка программирования и реализуют передачу данных по двум реализациям транспортного уровня - “SOCK_STREAM” (соответствует TCP) и “SOCK_DGRAM” (соответствует UDP). [4]
//сокеты. Что они делают, как и зачем. + winsock2