개요
netmask 문자열(예: "255.255.255.0")을 CIDR 형식의 비트 개수(접두사 길이)를 얻는 방법을 정리해 둡니다.
CIDR 표기법이란?
CIDR(Classless Inter-Domain Routing) 형식은 IP 주소와 네트워크 마스크를 표현하는 간결하고 유연한 방법입니다. CIDR 표기법의 주요 특징은 다음과 같습니다.
- IP 주소와 접두사 길이로 구성: 예를 들어, 192.168.0.0/24 형태로 표현합니다.
- 접두사 길이: '/' 뒤의 숫자(0-32)로, 네트워크 부분의 비트 수를 나타냅니다.
- 유연한 네트워크 구분: 기존의 클래스 기반 주소 체계와 달리, 네트워크와 호스트 부분을 유연하게 정의할 수 있습니다.
- 효율적인 IP 주소 관리: 네트워크 주소 자원을 절약하고 효율적으로 할당할 수 있습니다.
- 라우팅 테이블 최적화: 주소 집약을 통해 라우팅 테이블의 크기를 줄이고 패킷 지연을 감소시킵니다.
CIDR 형식은 네트워크 관리자가 IP 주소 공간을 더 효율적으로 사용하고 관리할 수 있게 해주며, 인터넷의 확장성을 개선하는 데 중요한 역할을 합니다.
netmask 문자열로 CIDR의 접두사 길이 구하기
def get_cidr_bit_count_for_netmask(netmask: str) -> int:
""" netmask 문자열을 받아서 CIDR 형식으로 1 비트 개수를 반환합니다.
Returns:
int: netmask의 1 비트의 개수
"""
octets = netmask.split(".")
cidr = 0
for octet in octets:
# 10진수로 변환 후 이진수로 변환하여 1의 개수를 세기
cidr += bin(int(octet)).count("1")
return cidr
알아보기는 조금 어렵지만, 간략하게 다음과 같이 작성할 수도 있습니다.
def get_cidr_bit_count_for_netmask(netmask: str) -> int:
""" netmask 문자열을 받아서 CIDR 형식으로 1 비트 개수를 반환합니다.
Returns:
int: netmask의 1 비트의 개수
"""
return sum(bin(int(x)).count('1') for x in netmask.split('.'))
사용 예시
다음과 같이 간단한 사용 예제를 작성하여 실행합니다.
netmask = "255.255.255.0"
cidr = get_cidr_bit_count_for_netmask_old(netmask)
print(f'1. "{netmask}" CIDR bit count= {cidr}')
cidr = get_cidr_bit_count_for_netmask(netmask)
print(f'2. "{netmask}" CIDR bit count = {cidr}')
실행 결과는 다음과 같습니다.
1. "255.255.255.0" CIDR bit count= 24
2. "255.255.255.0" CIDR bit count = 24
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[python] RGBA 형식의 이미지 찾기 (0) | 2024.05.21 |
---|---|
[python] 아스키가 아닌 문자가 포함된 이미지 파일 로딩하기 (imread) (0) | 2024.05.13 |
[PyQt5] 사용자 위젯에서 배경 그리기 (0) | 2023.11.27 |
[Qt] 창을 전체화면으로 표시하기 (0) | 2023.11.25 |
[python] itertools.pairwise() 함수 사용법 (0) | 2023.11.21 |