IP 주소를 저장하려면 mysql 테이블에 필드를 만들어야 합니다. IP 주소의 최대 문자 수를 알아야 합니다. ipv4, ipv6 또는 유효한 IP 주소를 비정상적으로 길게 렌더링할 수 있는 다른 유형인지 여부. 그럼 글자 수 제한은 어떻게 설정해야 할까요?
나는 "foo"라는 단어가 바이트 단위나 그와 유사한 것이 아닌 3개의 문자를 갖는다는 의미에서 길이를 요구하고 있습니다.
답변1
IPv6 주소는 최대 4자로 구성된 8개 세트(총 32개)이며, 각 세트는 콜론으로 구분됩니다. 그러면 39자가 됩니다.
IPv4 주소는 최대 4개의 3개 숫자 세트(12자)이며 각 세트는 점(.)으로 구분됩니다. 그러면 15자가 됩니다.
이 모든 것은 IP 주소가 사람이 읽을 수 있는 형식으로 저장되어야 한다고 가정합니다. 나는 IP 주소가 어떻게 사용될지 모르기 때문에 십진수 형식으로 저장하는 것을 선호합니다. 귀하의 마일리지가 다를 수 있습니다.
답변2
이것은 생각만큼 쉽지 않습니다.
대부분의 경우 안전합니다.45.
일반 IPv6 주소
0000:0000:0000:0000:0000:0000:0000:0000
8 * 4 + 7 =39
IPv4 매핑 IPv6 주소
보다RFC4291
0000:0000:0000:0000:0000:ffff:192.168.100.228
(6 * 4 + 5) + 1 + (4 * 3 + 3) = 29 + 1 + 15 =45
헤더 파일INET6_ADDRSTRLEN을 다음과 같이 정의합니다.46
범위 영역이 있는 IPv6
보다RFC4007
범위 영역은 숫자 또는 문자열(인터페이스 이름)일 수 있습니다.
ff02::5678%5
ff08::9abc%interface10
인터페이스 이름의 길이는 시스템에 따라 다릅니다. Linux에서는 IFNAMSIZ 상수로 정의됩니다. 16은 일반적인 값입니다. 위의 45자를 사용하면 다음과 같습니다.
45 + 1 + 16 =62