3.4.1. Использование сервера времени

Установив TCP-соединение на порту 37, сервер возвращает 32-битное число, которое представляет текущее значение даты и времени. Затем сервер инициирует активное закрытие TCP-соединения. Если сервер времени не может определить текущее время на своем компьютере, то, согласно протоколу, сервер должен либо отказать в соединении, либо закрыть соединение без возврата какого-либо значения. При использовании TCP происходит следующая последовательность событий:

1. Сервер времени следит за состоянием порта 37.

2. Клиент времени соединяется с портом 37.

3. Сервер времени посылает 32-битное число, представляющее текущее значение даты и времени.

4. Клиент времени получает это 32-битное число.

5. Сервер времени инициирует активное закрытие.

6. Клиент времени инициирует пассивное закрытие.

Если сервер времени фиксирует приход датаграммы на порт 37, то он возвращает в ответ датаграмму с тем же 32-битным значением времени. Если сервер времени не может определить текущее время на своем компьютере, то, согласно протоколу, он должен отбросить датаграмму и ничего не посылать в ответ. При использовании UDP происходит следующая последовательность событий:

7. Сервер времени следит за состоянием порта 37.

8. Клиент времени посылает пустую датаграмму на порт 37.

9. Сервер времени получает пустую датаграмму.

10. Сервер времени посылает датаграмму, содержащую 32-битное число, представляющее текущее значение даты и времени.

11. Клиент времени получает датаграмму.

Обратите внимание, что последовательность событий в случае работы по протоколу UDP не включает в себя фазу активного или пассивного соединения.

Запомните, что UDP — это протокол, не требующий установки или разрыва соединения. Никакой прямой связи между портом программы сервера времени и программой клиента времени не устанавливается. Поэтому при обслуживании клиентов по протоколу UDP, сервер не должен заботиться о закрытии какого-либо соединения.