MySQL протокол
Сижу, разбираюсь с протоколом MySQL по forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol
итак, начинаем. Коннектимся, в случае доступности сервера, как и положено, получаем
34 00 00 00 0A 34 2E 31 2E 32 32 00…
( 34 00 00) первые 3 байта — длина пакета
( 00 ) четвертый байт — номер пакета.
далее — версия сервера и прочая инфа по конфигу сервера.(строка с нулём на конце)
НО если вдруг превышен лимит коннектов к серверу — мы получаем от него ошибку «Host '***' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts', то есть такой пакет:
7C 00 00 00 FF 69 04 48 6F 73 74 20
тут так же, 4 байта — заголовок (длина пакета + номер пакета), но что дальше за три байта?
Как именно отделять пакеты с подобными ошибками от нормальных? откуда эти байты „FF 69 04“? где вообще можно найти полную инфу по всем возможным вариантам ответов сервера? Есть ли opensource проекты реализации mysql протокола? Или может я что-то пропустил когда читал по ссылке выше? Помогите пожалуйста.
p.s. да, я изобретаю велосипед, но он мне сейчас очень нужен :)
итак, начинаем. Коннектимся, в случае доступности сервера, как и положено, получаем
34 00 00 00 0A 34 2E 31 2E 32 32 00…
( 34 00 00) первые 3 байта — длина пакета
( 00 ) четвертый байт — номер пакета.
далее — версия сервера и прочая инфа по конфигу сервера.(строка с нулём на конце)
НО если вдруг превышен лимит коннектов к серверу — мы получаем от него ошибку «Host '***' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts', то есть такой пакет:
7C 00 00 00 FF 69 04 48 6F 73 74 20
тут так же, 4 байта — заголовок (длина пакета + номер пакета), но что дальше за три байта?
Как именно отделять пакеты с подобными ошибками от нормальных? откуда эти байты „FF 69 04“? где вообще можно найти полную инфу по всем возможным вариантам ответов сервера? Есть ли opensource проекты реализации mysql протокола? Или может я что-то пропустил когда читал по ссылке выше? Помогите пожалуйста.
p.s. да, я изобретаю велосипед, но он мне сейчас очень нужен :)
Похожие публикации
MySQL: пользователь root без GRANT, что делать?
Ошибка при обращении sl «SQLSERVER:\». Как исправить?
MySQL запрос или вина хостера. Кто прав?
Как добавить свою колонку в раздел пользователи isp manager?
Почему падает mysql и поднять помогает только ребут, иначе daemon failed?
Нет комментариев