1 / 38

Основные задачи и функции протоколов транспортного уровня стека TCP / IP

Основные задачи и функции протоколов транспортного уровня стека TCP / IP. Дроздов Алексей Владимирович БГТУ 2008. Транспортный уровень.

wren
Download Presentation

Основные задачи и функции протоколов транспортного уровня стека TCP / IP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Основные задачи и функции протоколов транспортного уровня стека TCP/IP Дроздов Алексей Владимирович БГТУ 2008

  2. Транспортный уровень Протоколы транспортного уровня обеспечивают прозрачную доставку данных между двумя прикладными процессами. Процесс, получающий или отправляющий данные с помощью транспортного уровня, идентифицируется на этом уровне номером, который называется номером порта. Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняет номер порта. Анализируя заголовок своего пакета, полученного от межсетевого уровня (IP), транспортный модуль определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу.

  3. Задачи транспортного уровня Транспортный протокол должен решать следующие проблемы: • Адресация: как адресовать прикладной процесс, с которым надо установить соединение? • Как корректно установить соединение? Ведь пакеты могут теряться. Как отличить пакеты нового соединения от повторных пакетов, оставшихся от старого? • Как корректно разрывать соединение? • Управление потоком и буферизацией. • Восстановление после сбоев

  4. Базовыепротоколы транспортного уровня • UDP - User Datagram Protocol — протокол пользовательских датаграмм • TCP - Transmission Control Protocol — протокол управления передачей • SCTP - Stream Control Transmission Protocol — «протокол передачи с управлением потоком» Поддержка протоколов транспортного уровня чаще всего осуществляется ядром ОС. Прикладные программы могут использовать возможности этих протоколов.

  5. Адресация на транспортном уровне

  6. Понятие портов Порт – это параметр протоколов TCP и UDP, определяющий пункт назначения для данных, принимаемых по сети. Порту сопоставляется номер от 1 до 65535, позволяющие различным программам, выполняемым на одном хосте, получать данные независимо друг от друга. В этом случае каждая из них обрабатывает данные, поступающие на определённый порт. Иногда говорят, что программа «прослушивает» тот или иной порт.

  7. Протокол UDP Является одним из самых простых протоколов стека TCP/IP. UDP не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как «Unreliable Datagram Protocol». Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных. Описание протокола UDP дано в RFC 768

  8. Основные особенности UDP • Реализует взаимодействие в режиме без установлением логического (виртуального) соединения; • организует поблочный (дэйтаграммный, пакетный) тип передачи данных; • для идентификации партнеров по взаимодействию на транспортном уровне использует 16-битовые «номера портов»; • не гарантирует надежной передачи данных (возможна как потеря UDP-пакетов, так и их дублирование); • не имеет средств уведомления источника UDP-пакета о правильности/ошибочности в его приеме адресатом; • не обеспечивает правильный порядок доставки UDP-пакетов от источника к приемнику; • может гарантировать целостность данных в UDP-пакете за счет использования контрольной суммы; • очень прост.

  9. Формат заголовка UDP

  10. Применимость UDP Протокол UDP используют следующие широко распространенные службы: • DNS • RTP и RTCP • TFTP • SNTP • NTP • Высокоинтерактивные сетевые игры

  11. Протокол TCP TCP — это транспортный механизм, предоставляющий поток данных, с предварительной установкой соединения, за счёт этого дающий уверенность в безошибочности получаемых данных, осуществляет повторный запрос данных в случае потери пакетов и устраняет дублирование при получении двух копий одного пакета. В отличие от UDP, TCP гарантирует, что приложение получит данные точно в такой же последовательности, в какой они были отправлены, и без потерь. Описание протокола TCP дано в RFC 793

  12. Основные особенности TCP • Реализует взаимодействие в режиме с установлением логического (виртуального) соединения; • обеспечивает двунаправленную дуплексную связь; • организует потоковый (с точки зрения пользователя) тип передачи данных; • дает возможность пересылки части данных, как «экстренных»; • для идентификации партнеров по взаимодействию на транспортном уровне использует 16-битовые «номера портов»; • реализует принцип «скользящего окна» (sliding window) для повышения скорости передачи; • поддерживает ряд механизмов для обеспечения надежной передачи данных.

  13. Формат заголовка TCP

  14. Применимость TCP Протокол TCP используют следующие широко распространенные службы: • HTTP • FTP • SMTP, POP3, IMAP • DNS • ICQ, Jabber • Сетевые СУБД • И т.д.

  15. Протокол SCTP SCTP работает аналогично TCP или UDP. Но на самом деле SCTP имеет ряд концептуальных расширений: • многопоточность; • защита от SYN-flood атак; • синхронное соединение между двумя хостами по двум и более независимым физическим каналам (multi-homing). Описание протокола SCTP дано в RFC 3286

  16. Протокол SCTP: 2 Часть достоинств вытекает из того факта, что изначально разработчики SCTP проектировали протокол под нужды передачи телефонии

  17. Использование множественных интерфейсов

  18. Применимость SCTP Возможна реализация практических всех сервисов, поддерживающих TCP

  19. Сравнение возможностей протоколов транспортного уровня

  20. Пропускная способность протоколов Под номинальной пропускной способностью обычно понимается битовая скорость передачи данных, поддерживаемая на интервале передачи одного пакета. Эффективная пропускная способность протокола – это средняя скорость передачи пользовательских данных, то есть данных, содержащихся в поле данных каждого пакета. В общем случае эффективная пропускная способность протокола будет ниже номинальной из-за наличия в пакете служебной информации, а также из-за пауз между передачей отдельных пакетов.

  21. Пропускная способность протоколов: 2 Каждый протокол имеет свои особенности, предпочтительные области применения и настраиваемые параметры, что и дает возможность за счет выбора и настройки протокола влиять на производительность и надежность сети. Настройка протокола может включать в себя изменение таких параметров как: • максимально допустимый размер кадра, • величины тайм-аутов (в том числе время жизни пакета), • для протоколов, работающих с установлением соединений размер окна неподтвержденных пакетов, • а также некоторых других.

  22. Пропускная способность протоколов: 3 Расширение пропускной способности и надежности телекоммуникационных каналов делает актуальной совершенствование протоколов. Так как TCP является основным транспортным протоколом, попытки усовершенствовать его предпринимаются, начиная с 1992 года (RFC-1323, Якобсон, Браден и Борман). Целью этих усовершенствований служит повышение эффективности и пропускной способности канала, а также обеспечение безопасности.

  23. Программирование сетевого взаимодействия Как использовать программисту возможности сетевого стека ОС для организации взаимодействия приложений по сети?

  24. Понятие сокетов Основные операционные среды (*nix и Windows 2000+) содержат базовый механизм межсетевого взаимодействия на идеологии соединителей (socket). Эта технология была разработана в университете г. Беркли (США) для системы Unix, поэтому соединители иногда называют соединителями Беркли (BerkeleySockets). Соединители реализуют механизм взаимодействия не только партнеров по телекоммуникациям, но и процессов в ЭВМ вообще.

  25. Понятие сокетов: 2 Сокеты предоставляют весьма мощный и гибкий механизм межпроцессного взаимодействия (IPC – Inter-Process communication). Они могут использоваться для организации взаимодействия программ (процессов) в рамках локального компьютера, локальной сети или посредством Internet.

  26. Понятие сокетов: 3 В общем случае сокеты поддерживают многие стандартные сетевые протоколы (конкретный их список зависит от реализации) и предоставляют унифицированный интерфейс для работы с ними. Наиболее широко распространены сокеты для работы в IP-сетях.

  27. Интерфейс сокетов (Socket API) Socket API был впервые реализован в операционной системе Berkeley UNIX. Сейчас этот программный интерфейс доступен практически в любой модификации Unix (в том числе в Linux), Windows. Реализации часто отличаются друг от друга, но основной набор функций в них совпадает. Изначально интерфейс сокетов был доступен, в основном, для программ на языках C, C++ В настоящее время средства для работы с ними предоставляют многие языки (Perl, PHP, Python, Java и др.).

  28. Сокеты для программистов Сокет (Socket) – это конечная точка сетевых коммуникаций. Он является чем-то вроде «портала», через которое можно отправлять байты во внешний мир. Приложение просто пишет поток данных в сокет; их дальнейшая буферизация, отправка и транспортировка осуществляется используемым стеком протоколов и сетевой аппаратурой. Чтение данных из сокета происходит аналогичным образом. В программе сокет идентифицируется дескриптором. Программа получает дескриптор от операционной системы при создании сокета, а затем передаёт его сервисам Socket API для указания сокета, над которым необходимо выполнить то или иное действие.

  29. Сетевой порядок байт При передаче целой числовой информации от машины, имеющей один порядок байт, к машине с другим порядком байт мы можем неправильно истолковать принятую информацию. Для того чтобы этого не произошло, было введено понятие сетевого порядка байт, т.е. порядка байт, в котором должна представляться целая числовая информация в процессе передачи ее по сети. Сетевым порядком байт считается big-endian byte order.

  30. Клиент-серверное взаимодействие Механизм установления соединения между двумя сетевыми процессами является клиент-серверным. В начальный момент времени один из процессов готов принимать соединение (сервер), а другой готов инициировать соединение (клиент). Реализации на программном уровне клиента и сервера отличаются.

  31. Пример организации взаимодействия по TCP

  32. Принцип установление TCP-соединения Пара сокетов (sockets pair) для соединения TCP – это кортеж (группа взаимосвязанных элементов данных или записей) из 4-х элементов, определяющих две конечные точки соединения: локальный IP-адрес, локальный порт, удаленный IP-адрес и удаленный порт. Два значения, идентифицирующих конечную точку, – IP-адрес и номер порта – часто называют просто сокетом (TCP, UDP, SCTP).

  33. Сервер с пассивным открытием на порте 80 • Запрос на установление соединения от клиента192.168.1.11 Принцип установление TCP-соединения: 2

  34. Принцип установление TCP-соединения: 3 Создание присоединенного сокета

  35. Работа с двумя клиентами одновременно Принцип установление TCP-соединения: 4

  36. Функции для работы с сокетами #include <Winsock2.h> int gethostname (char * name, int namelen); SOCKET socket (int af, int type, int protocol); int bind (SOCKET s, const struct sockaddr *addr, int namelen); int listen (SOCKET s, int backlog); SOCKET accept(SOCKET s, struct sockaddr *addr, int *addrlen); int connect (SOCKET s, const struct sockaddr *name, int namelen); int recv (SOCKET s, char * buf, int len, int flags); int recvfrom (SOCKET s, char * buf, int len, int flags, struct sockaddr *from, int * fromlen); int send (SOCKET s, const char * buf, int len, int flags);

  37. Функции для работы с сокетами: 2 int sendto (SOCKET s, const char * buf, int len, int flags, const struct sockaddr *to, int tolen); int setsockopt (SOCKET s, int level, int optname, const char * optval, int optlen); int shutdown (SOCKET s, int how); int closesocket (SOCKET s); unsigned long inet_addr (const char * cp); char * inet_ntoa (struct in_addr in); u_long htonl (u_long hostlong); u_short htons (u_short hostshort); u_long ntohl (u_long netlong); u_short ntohs (u_short netshort); int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); Для успешной линковки программ необходимо подключать библиотеку Ws2_32.lib (для ОС Windows)

  38. ?

More Related