IPv4, IPv6 주소를 문자열로 저장하기위한 크기
MySQL 데이터베이스에 IPv4, IPv6 주소를 문자열로 저장하는 데 이상적인 크기가되어야합니다. varchar (32)이면 충분합니까?
문자열의 텍스트 표현 가정 :
- IPv4의 경우 15 자 (
xxx.xxx.xxx.xxx
형식, 12 + 3 구분 기호) - IPv6의 경우 39 자 (32 + 7 구분 기호)
그것들은 문자열의 최대 길이입니다.
문자열로 저장하는 대안 :
- IPv4는 32 비트이므로 4 바이트를 저장할 수있는 MySQL 데이터 유형
INT UNSIGNED
은 일반적으로 사용INET_ATON
하며INET_NTOA
주소에서 숫자로, 숫자에서 주소로의 변환을 처리합니다.
SELECT INET_ATON('209.207.224.40'); -> 3520061480 SELECT INET_NTOA(3520061480); -> '209.207.224.40'
- IPv6의 경우 불행히도 MySQL에는 16 바이트의 데이터 유형이 없지만 IPv6를 표준 형식으로 만든 다음 2
BIGINT
(8 바이트) 로 구분할 수 있지만 두 필드를 사용합니다.
숫자 적으로 IPv4 주소는 32 비트이고 IPv6 주소는 128 비트입니다. 따라서 최소 16 바이트 의 저장소가 필요 합니다.
저장 한 "문자열"이 바이트 형식의 주소 인코딩이면 16이면 충분합니다.
비트 패턴이 아닌 문자열로 저장하는 경우 :
IPv4 주소는 3 개의 .
구분 기호 가있는 4 개의 3 자리 10 진수 문자로 구성 되므로 255.255.255.255
.
IPv6 주소는 7 개의 :
구분 기호 가있는 8 개의 4 자리 16 진수 문자로 구성 되므로 0123:4567:89ab:cdef:0123:4567:89ab:cdef
.
VARBINARY (16)를 사용하여 IPv6 주소를 바이너리 형식으로 저장할 수 있습니다.
이 데이터를 사용해야하는 애플리케이션은 inet_pton / ntop 구현을 사용하여이 데이터를 조작하거나 http://labs.watchmouse.com/2009/10/extending-mysql-5에있는 것과 같은 UDF를 설치할 수 있습니다. -ipv6- 함수 /
네트워크 정보 (예 : LL 식별자, 클래스 또는 CIDR 마스크)가 연결되어 있지 않다고 가정하면 IPv4 주소는 최대 15 자 (4x3 숫자 +3 마침표)이고 IPv6 주소는 최대 39 자입니다.
ipv6 주소는 46 자일 수 있습니다.
참조 : IPv4 매핑 된 IPv6 주소 하이브리드 이중 스택 IPv6 / IPv4 구현은 특수한 클래스의 주소 인 IPv4 매핑 된 IPv6 주소를 인식합니다. 이 주소에서 처음 80 비트는 0이고 다음 16 비트는 1이며 나머지 32 비트는 IPv4 주소입니다. 표준 IPv6 형식으로 작성된 처음 96 비트와 IPv4의 관례적인 점 십진 표기법으로 작성된 나머지 32 비트로 이러한 주소를 볼 수 있습니다. 예를 들어 :: ffff : 192.0.2.128은 IPv4 주소 192.0.2.128을 나타냅니다. IPv4 호환 IPv6 주소의 더 이상 사용되지 않는 형식은 :: 192.0.2.128입니다. [61]
이미 말한 것 외에도 Link-Local IPv6 주소가 있습니다. 문자열을 사용하여 연결을 만들 수 있도록 주소를 유지하려면 범위 ID도 유지해야합니다. Windows에서는 16 비트 숫자이고 Linux에서는 문자열 일 수 있습니다. 인터페이스 이름, 인터페이스 이름의 최대 길이를 찾지 못했습니다.
참고 URL : https://stackoverflow.com/questions/3455320/size-for-storing-ipv4-ipv6-addresses-as-a-string
'IT박스' 카테고리의 다른 글
java.sql.Timestamp와 함께 Joda-Time을 사용하는 방법 (0) | 2020.11.28 |
---|---|
SQL Server에서 varchar를 datetime으로 변환 (0) | 2020.11.28 |
DOM 속성 변경시 이벤트 발생 (0) | 2020.11.28 |
C에서 문자열과 정수를 연결하는 방법은 무엇입니까? (0) | 2020.11.28 |
목표 C : NSString에서 NSMutableString 변환 (0) | 2020.11.28 |