Синхронизация времени

Если время клиента сильно расходится со временем сервера, сервер может начать игнорировать сообщения клиента, или наоборот, из-за недействительного идентификатора сообщений (который тесно связан со временем создания). В этих условиях, сервер будет отправлять клиенту специальное сообщение, содержащее правильное время, и определённая 128-битная соль (salt) (или эксплицитно предоставленный клиентом в специальном запросе RPC синхронизации, или эквивалентный ключу последнего полученного от клиента сообщения за текущую сессию). Это сообщение может быть первым в контейнере, который включает другие сообщения (если расхождение времени значительно, но не ведёт к игнорированию сообщений клиента).

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

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

Транспорт (передача)

Включает доставку зашифрованных контейнеров вместе с внешним заголовком (здесь и далее - Payload) от клиента к серверу и обратно. Есть три типа передачи:

- HTTP

- TCP

- UDP

Мы исследуем первые два типа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: