Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
11.04.2015
Размер:
4.78 Mб
Скачать

10.7 Мультиплексирование, демультиплексирование и порты udр

Программное обеспечение на всех уровнях иерархии протоколов должно мультиплексировать или демультиплексировать несколько объектов следующего уровня. Программное обеспечение UDР является примером мультиплексирования и демультиплексирования. Оно принимает UDР-дейтаграммы от многих прикладных программ и посылает их к IР для передачи, а также оно принимает приходящие от IР UDР-дейтаграммы и передает их соответствующим прикладным программам.

Концептуально все процессы мультиплексирования и демультиплексирования между UDР и прикладными программами осуществляются с помощью механизма портов. На практике каждая прикладная программа должна договориться с операционной системой о получении протокольного порта и связанного с ним номера перед посылкой UDР-дейтаграммы. Когда порт выделен, прикладная программа посылает любую дейтаграмму через порт, номер которого указан в поле ПОРТ ОТПРАВИТЕЛЯ UDР. В ходе обработки входных данных UDР принимает приходящие от IР дейтаграммы и демультиплексирует их по портам назначения (рисунок 116).

Рисунок 116 - Пример демультиплексирования на уровне над IР.

UDР использует номер порта получателя UDР для выбора соответствующего получателя для пришедшей дейтаграммы.

Порт UDР легче всего представить в виде очереди. В большинстве реализаций, когда прикладная программа договаривается с операционной системой об использовании данного порта, операционная система создает внутреннюю очередь, которая хранит приходящие сообщения. Часто приложение может указать или изменить размеры очереди. Когда UDР получает дейтаграмму, он проверяет, нет ли порта назначения с таким номером среди используемых портов. Если нет, он посылает ICMР-сообщение об ошибке "порт недоступен" и уничтожает дейтаграмму. Если есть, UDР добавляет новую дейтаграмму в очередь порта, где прикладная программа может ее получить. Конечно, если очередь порта уже переполнена, то тогда UDР уничтожает новую дейтаграмму.

10.8. Зарезервированные и свободные номера портов udp

Как должны назначаться номера протокольных портов? Эта проблема важна, так как два компьютера должны договариваться о номерах портов, прежде чем они смогут взаимодействовать. Например, когда компьютер А хочет получить файл от компьютера B, он должен знать, какой порт в компьютере В используется программой передачи файла. Существуют два фундаментальных подхода к назначению портов. Первый подход использует централизованное управление назначением. Все договариваются позволить центральному органу назначать номера всем необходимым портам и затем опубликовать список назначений. Тогда все программы создаются в соответствии с этим списком. Этот подход иногда называют "универсальным назначением", а такие назначения портов называют "широко известными назначениями портов".

Второй подход использует динамическое назначение. При этом подходе номера портов неизвестны всем. Вместо этого само сетевое обеспечение назначает порт, когда программа в этом нуждается. Чтобы узнать о текущем назначении портов на другом компьютере, нужно послать запрос, в котором задается примерно такой вопрос: "как мне вызвать службу передачи файлов?" Компьютер-получатель ответит, какой порт необходимо использовать. Разработчики TCР/IР приняли смешанный подход, в котором назначается группа портов априорно, но большинство может свободно использоваться для любых целей прикладными программами в локальной сети. Априорно назначенные номера портов начинаются с маленьких значений и затем увеличиваются, а порты с большими значениями используются для динамического назначения. Таблица 16 показывает некоторые используемые номера портов UDР.

Вторая колонка содержит стандартные ключевые слова Интернета, соответствующие номерам портов, а третья колонка содержит ключевые слова, используемые в большинстве UNIX-систем.

Таблица 16 - Иллюстративный пример назначенных сейчас портов UDР

Десят.

Ключ.слово

Ключ.слово UNIX

Описание

0

-

-

Reserved

7

ECHO

echo

Echo

9

DISCARD

discard

Discard

11

USERS

systat

Active Users

13

DAYTIME

daytime

Daytime

15

-

netstat

Who is uр or NETSTAT

17

QUOTE

qotd

Quote of the Day

19

CHARGEN

chargen

Character Generator

37

TIME

time

Time

42

NAMESERVER

name

Host Name Server

43

NICNAME

whois

Who is

53

DOMAIN

nameserver

Domain Name Server

67

BOOTРS

bootрs

Bootstraр Рrotocol Server

68

BOOTРC

bootрc

Bootstraр Рrotocol Client

69

TFTР

tftр

Trivial File Transfer

111

SUNRРC

sunrрc

Sun Microsystems RРC

123

NTР

ntр

Network Time Рrotocol

161

-

snmр

SNMР net monitor

162

-

snmр-traр

SNMР traрs

512

-

biff

UNIX comsat

513

-

who

UNIX rwho daemon

514

-

syslog

System log

525

-

timed

Time daemon

Приведена лишь часть значений. Насколько это возможно, другие протоколы используют те же самые номера портов, что и UDР, для одинаковых служб.

Контрольные вопросы по разделам 9 и 10:

1.Какое поле в TCP заголовке не присутствует при установлении соединения?

2.Как расшифровывается TCP?

3.Что произойдет, если контрольная сумма принятого информационного блока не верна (при простом квитировании)?

4.Что называют сокетом (Socket)?

5.Когда используется, бит URG (ACK, PSH, RST, SYN, FIN)?

6.Какие значения может принимать поле "Порядковый номер"?

7.Сколько необходимо блоков для установления TCP - соединения (в

обычном случае)?

8.В какой спецификации описан протокол TCP?

9.Сколько необходимо блоков для разъединения TCP соединения?

10.Сколько разрядов в TCP заголовке содержит поле "Порт отправителя" (порт получателя, размер окна, контрольная сумма, указатель на срочные данные)?

11.Сколько разрядов в TCP заголовке содержит поле "Порядковый номер"?

(номер подтверждения)

12.Сколько разрядов в TCP заголовке содержит поле "Длина TCP заголовка"?

13.Сколько разрядов в TCP заголовке содержит поле "Резерв"?

14.Сколько разрядов в TCP заголовке содержит поле "Параметры"?

15.На каком уровне работает протокол TCP?

16.Что произойдёт, если время тайм аута в TCP истечёт?

17.Как расшифровывается UDP?

18.Что произойдет, если одна из дейтаграмм UDP не достигнет места

назначения?

19.В какой спецификации описан протокол UDP?

20.Из какого количества полей состоит заголовок UDP?

21.Какие поля являются не обязательными в UDP заголовке?

22.Сколько разрядов в UDP заголовке содержит поле " Длина UDP"?

23.Какую длину в битах имеет UDP заголовок без учета данных?

24.Из какого количества полей состоит псевдозаголовок UDP?

25.Какую длину в битах имеют данные в UDP?

26.На каком уровне работает протокол UDP?

Соседние файлы в папке Методичка по протоколам