programing

IPv4, IPv6 주소를 문자열로 저장하는 크기

shortcode 2023. 1. 8. 15:03
반응형

IPv4, IPv6 주소를 문자열로 저장하는 크기

IPv4, IPv6 주소를 MySQL 데이터베이스에 문자열로 저장하는 데 이상적인 크기입니다.varchar(32)로 충분할까요?

문자열로 텍스트 표현을 가정하면 다음과 같습니다.

  • 의 경우는 15 (IPv4 의 15 문자)xxx.xxx.xxx.xxx 구분자 12+3 구분자)
  • IPv6 의 경우는 45 문자

이것들은 문자열의 최대 길이입니다.

문자열로 저장하는 방법:

  • 이므로, IPv4의 할 수 MySQL의 를 사용할 수 .INT UNSIGNED 볼 수 있습니다.INET_ATON ★★★★★★★★★★★★★★★★★」INET_NTOA에서
SELECT INET_ATON('209.207.224.40');
        -> 3520061480

SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
  • 의 , 바이트의 만, 를 , 2 개의 IPv6 로 할 수 .MySQL 는 16 、 만만만만만만 、 IPv6 。BIGINT(8시) 아, 2시입니다.

비트 패턴이 아닌 문자열로 저장하는 경우:

는, 3 개의 IPv4 「」, 3 개의 「10」의 「의 「4」의 「10」의 「4」를 4 자리수의 10 됩니다..수 있습니다(예: 15자만 할 수 있습니다.255.255.255.255.

는, 7 개의 IPv6 「」, 8 의 4 의 16 자리수의 16 자리수의 16 자리수의 8 문자로 됩니다.:즉예: 39자를 할 수 있습니다.0123:4567:89ab:cdef:0123:4567:89ab:cdef.

수치적으로는, IPv4 주소는 32비트, IPv6 주소는 128비트입니다.따라서 최소 16바이트의 스토리지가 필요합니다.

보존하는 「문자열」이 바이트 형식의 주소의 부호화일 경우, 16이면 충분합니다.

VARB를 사용할 수 있습니다.INARY(16): IPv6 주소를 바이너리 형식으로 저장합니다.

이 데이터를 사용해야 하는 응용 프로그램은 inet_pton/ntop 구현을 사용하여 이 데이터를 조작하거나 http://labs.watchmouse.com/2009/10/extending-mysql-5-with-ipv6-functions/에서와 같은 UDF를 설치할 수 있습니다.

ipv6 주소는 약 46글자입니다.

레퍼런스: IPv4 매핑 IPv6 주소 하이브리드듀얼 스택 IPv6/IPv4 실장에서는, IPv4 매핑 IPv6 주소라는 특수한 클래스의 주소가 인식됩니다.이러한 주소에서는, 최초의 80비트는 제로, 다음의 16비트는 1비트, 나머지 32비트는 IPv4 주소입니다.이러한 주소는, 표준의 IPv6 포맷으로 써진 최초의 96 비트와 IPv4 의 통상의 닷 10 진표기로 써진 나머지 32 비트로 표시됩니다.예를 들어, ::fff:192.0.2.128 은 IPv4 주소 192.0.2.128 을 나타냅니다.IPv4 호환 IPv6 주소의 권장되지 않는 형식은:192.0.2.128이었습니다.[61]

네트워크 정보(LL 식별자, 클래스, CIDR 마스크 등)가 접속되어 있지 않은 경우, IPv4 주소는 최대 15 문자(4x3 숫자+3 마침표), IPv6 주소는 최대 39 문자입니다.

이미 말한 것 외에 Link-Local IPv6 주소가 있습니다.스트링을 사용하여 연결을 작성할 수 있도록 주소를 유지할 경우 스코프 ID도 유지해야 합니다.Windows 에서는 16비트 숫자이고 Linux 에서는 string - interface name 이 될 수 있습니다.인터페이스 이름의 최대 길이를 찾을 수 없습니다.

언급URL : https://stackoverflow.com/questions/3455320/size-for-storing-ipv4-ipv6-addresses-as-a-string

반응형