Читайте также: |
|
Как было показано в предыдущем разделе, с точки зрения процессов взаимодействие
по протоколу TCP выполняется через канал, который существует до тех пор,
пока один из процессов не закроет его. Передача процессом информации сводится
к тому, что процесс «сбрасывает» байты непосредственно в канал, при этом нет
необходимости снабжать байты адресом назначения, поскольку канал логически
связан с адресатом. Кроме того, передача по каналу является надежной, то есть
принимаемая последовательность байтов в точности соответствует передаваемой
последовательности.
Протокол UDP, как и TCP, реализует взаимодействие между двумя процессами,
выполняющимися на разных хостах; тем не менее UDP-взаимодействие принципиально
отличается от TCP-взаимодействия. Во-первых, логическое соединение
между хостами отсутствует, поскольку не существует процедуры рукопожатия,
в ходе которой устанавливался бы канал. Во-вторых, любая передаваемая последовательность
байтов должна снабжаться адресом назначения, представляющим
собой совокупность IP-адреса хоста и номера порта процесса. IP-адрес, номер порта
и последовательность информационных байтов мы будем называть пакетом. Передачу
по протоколу U DP можно сравнить с поездкой на такси: первым делом нужно
сообщить водителю адрес дома, к которому мы хотим добраться.
После того как пакет создан, процесс отправляет его адресату через свой сокет.
Транспортный уровень (протокол UDP) предпринимает действия для доставки
пакета по адресу назначения, однако не дает относительно доставки никаких гарантий.
Другими словами, протокол UDP обеспечивает ненадежную передачу данных
между процессами.
В этом разделе в качестве примера мы модифицируем предыдущее приложение
для протокола UDP. Как вы увидите, коды программ для протоколов TCP и UDP
значительно различаются. Во-первых, из-за отсутствия процедуры рукопожатия
нет необходимости во впускающем сокете; во-вторых, входные и выходные потоки
данных не связаны с сокетами; в-третьих, при пересылке каждой группы байтов
указывается IP-адрес хоста-получателя и номер порта сервера; в-четвертых,
принимающей стороне приходится выделять информационные байты из принятых
пакетов. Напомним порядок действий, выполняемых нашим приложением.
1. Клиент считывает со стандартного устройства ввода (клавиатуры) строку символов
и посылает эту строку серверу через свой сокет.
2. Сервер принимает строку через свой сокет.
3. Сервер переводит все символы строки в верхний регистр.
4. Сервер отсылает модифицированную строку клиенту.
5. Клиент получает строку и печатает ее с помощью стандартного устройства вывода
(монитора).
На рис. 2.22 приведена схема взаимодействия клиента и сервера при использовании протокола UDP.
Дата добавления: 2015-08-17; просмотров: 99 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
При помощи ТСР-сокетов | | | КОНТРОЛЬНАЯ РАБОТА |