Как SOCKS5 использует всего 4 байта для описания хоста и порта?
Я изучаю протокол socks5 и пытаюсь написать свой собственный сервер socks5 на основе TCP, опираясь на документацию RFC 1928 (https://www.rfc-editor.org/rfc/rfc1928). Я использую python для обработки всей сети. Моя цель - проверить весь http-трафик, идущий из моего браузера, и просто перенаправить его туда, куда ему нужно.
Как это происходит до сих пор (байты представлены в виде десятичных чисел):
- Клиент просит установить соединение (я настроил свой браузер на использование localhost в качестве сервера SOCKS5): 5 1 0
- Я принимаю соединение: 5 0
- Ответ клиента: 5 1 0 1 2 19 112 1
Согласно RFC 1928:
+----+-----+-------+------+----------+----------+
|VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
+----+-----+-------+------+----------+----------+
| 1 | 1 | X'00' | 1 | Variable | 2 |
+----+-----+-------+------+----------+----------+
Насколько я понимаю, у меня порт 112 1 (два байта, что нормально), а адрес 2 19 (тоже два байта, что не нормально). Что мне не хватает?