Установив 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, сервер не должен заботиться о закрытии какого-либо соединения.