Наверное, некоторые знают такую штуку, но думаю, далеко не все.
Как мы все знаем, адрес IPv4 представляет собой 32-битное число. Традиционно IP-адрес записывается в виде 4-х октетов, разделенных точкой, в десятичной системе счисления. Например: 77.88.21.8
. Однако существуют и другие, менее распространенные варианты записи.
Во-первых, каждый из 4-х октетов можно записать в восьмеричной или шестнадцатеричной системах счисления:
77.88.21.8
= 0x4d.0x58.0x15.0x8
= 0115.0130.025.010
, или даже можно смешивать 77.88.0x15.010
.
Во-вторых, адрес можно записывать в виде числа:
77 * 2563 + 88 * 2562 + 21 * 2561 + 8 * 2560 = 1297618184.
Аналогично п.1 это число можно записывать в восьмеричной и шестнадцатеричной системах счисления: 1297618184
= 011526012410
= 0x4D581508
.
Ну и наконец ещё один способ записи IPv4 адресов: через их отображение в IPv6 адреса. Естественно, он будет работать только на dual-stack хостах (последние версии винды и линукса поддерживают, макось тоже, наверное). Ну и распознаёт такие адреса ещё меньшее количество ПО (проксей, блог-парсеров и т.п.).
Так, приведённый в примере 77.88.21.8
может быть записан как:
::ffff:77.88.21.8
или ::ffff:4D58:1508
. В виде URL это будет: http://[::ffff:77.88.21.8]/ или http://[::ffff:4D58:1508]/
Причём вначале можно указать до 5 ноликов, причём как сначала, так и с конца пропуска:
::0:0:ffff:77.88.21.8
, 0:0::ffff:4D58:1508
, …, 0:0:0:0:0:ffff:77.88.21.8
.