Вам так хочется поговорить за историю и протоколы? Ну давайте поговорим. Начнем с открытия IEN2 от далекого 1977 года и увидим там следующее:
Addresses are variable length strings of 4 bit chunks prefixed by a
length. As address chunks are processed they are removed from their
position at the head of the address chunk string and placed at the
end of the string. This chunk by chunk circular shifting of the
address allows each node in the hop by hop processing of a message
to examine the part of the address it consumes with out knowing how
much address preceeds or follows that part.Никаких октетов или современного поля на 32 бита. Позже спецификация изменялась. В IEN41, который впервые говорит о IPv4, адреса по прежнему не имеют фиксированной длины, но уже их длина выражается в количестве октетов, а не тетрад. В IEN44 об октетах не говорится, там идет разбиение на 8 bit сетку и 24 bit хост. В IEN54 адреса описываются "fixed length of 4 octets (32bits)", причем по прежнему первый октет это сетка, а три следующий это хост. Наконец в rfc791 идет просто поле 32 bits, которое в зависимости от старших бит представляет собой одно из четырех возможных разбиений на сетку и хост, опять таки битовое разбиение, никаких октетов:
Address Formats:
High Order Bits Format Class
--------------- ------------------------------- -----
0 7 bits of net, 24 bits of host a
10 14 bits of net, 16 bits of host b
110 21 bits of net, 8 bits of host c
111 escape to extended addressing mode
Ну и уже значительно позже серия RFC определила произвольное бесклассовое разбиение этих 32 бит на сетку и хост. Там само собой тоже никаких октетов.
Как легко заметить, массивы из 4 октетов нигде не фигурировали.
А теперь после ностальгических воспоминаний давайте вернемся к изначальному вопросу "как хранить ip в базе?". Какие есть рациональные альтернативы числу, не привязанные к конкретной СУБД?