Python 에서 ipaddress 네트워크 주소 처리

머리말
ipaddress 라 이브 러 리 는 IPv 4 와 IPv 6 네트워크 주 소 를 처리 하 는 클래스 를 제공 합 니 다.이러한 종 류 는 인증 을 지원 하고 네트워크 의 주소 와 호스트 를 찾 으 며 다른 일반적인 작업 을 지원 합 니 다.
이 편 은 Python 에서 ipaddress 라 이브 러 리 의 사용 규칙 을 상세 하 게 소개 합 니 다.(내용 은 많은 컴퓨터 네트워크 지식 과 관련 되 어 있 으 며,모 르 면 책 인 을 참고 할 수 있다.
주소.
일반적으로 우리 가 ipaddress 라 이브 러 리 를 사용 하 는 것 은 ipaddress()함수 가 주소 대상 을 만 듭 니 다.IPv4Address 나 IPv6Address 인 스 턴 스 를 되 돌려 줍 니 다.실례 는 다음 과 같다.

import ipaddress
import binascii

addresses = [
    '121.63.3.59',
    '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b'
]

for ip in addresses:
    address = ipaddress.ip_address(ip)
    print("IP  :", address)
    print("IP Version:", address.version)
    print("       :", address.is_private)
    print("       :", address.is_global)
    print("       :", address.is_multicast)
    print("       :", address.is_loopback)
    print("   link-local  :", address.is_link_local)
    print("         :", address.is_unspecified)
    print("IP  16  :", binascii.hexlify(address.packed))
실행 후 효 과 는 다음 과 같 습 니 다.
效果如下
네트워크
네트워크 주 소 는 보통 하나의 기본 주소 와 하나의 마스크 로 표시 하 는데 마스크 가 주 소 를 가리 키 는 어떤 부분 은 네트워크 를 표시 하고 어떤 부분 은 이 네트워크 의 주 소 를 표시 합 니까?마스크 를 표시 할 수도 있 고 접두사 길이 값 을 사용 할 수도 있 습 니 다.예 를 들 어 다음 과 같 습 니 다.

import ipaddress

addresses = [
    '192.168.1.0/24',
    '2001:0db8:3c4d:0015::/64'
]

for n in addresses:
    net = ipaddress.ip_network(n)
    print("       :", net.is_private)
    print("        :", net.broadcast_address)
    print("IP       :", net.compressed)
    print("           :", net.with_netmask)
    print("         :", net.with_hostmask)
    print("        :", net.num_addresses)
    print()
실행 후 효 과 는 다음 과 같 습 니 다.
效果如图
IP 주소 와 서브 넷 마스크,방송 주소 등 지식 과 관련 되 므 로 독 자 는 을 참고 할 수 있다.
네트워크 주 소 를 인쇄 하 는 데 사용 할 수 있 는 IP 가 얼마나 됩 니까?
IPv 4 의 네트워크 주소 에서 우 리 는 보통 이 를 A,B,C 류 로 나 누 는데 위 에서 우리 가 제공 하 는 192.168.1.0 은 C 류 주소 이다.인터넷 을 배 운 적 이 있 는 사람 은 한눈 에 알 수 있 을 것 이다.호스트 주 소 는 254 개 이 고 기본 주 소 는 192.168.1.0 이 며 방송 주 소 는 192.168.1.255 이다.전체 256 개.
이것 은 C 류 주소 이기 때문에 수학 이 조금 좋 은 것 은 손 쉽게 잡 을 수 있 을 것 입 니 다.그러나 제 가 IPv 6 나 IPv 4 의 A 류 주 소 를 드 리 겠 습 니 다.계산 할 수 있 는 것 이 많 지 않 을 것 입 니 다.ipaddress 라 이브 러 리 는 직접 인쇄 할 수 있 습 니 다.예 를 들 어 다음 과 같 습 니 다.

import ipaddress

n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
for ip in zip(net):
    print(ip)
실행 후 효 과 는 다음 과 같 습 니 다.
效果
이곳 은 여러 번 반복 되 어 모든 주 소 를 열거 하 였 다.사용 가능 한 호스트 주소 만 표시 하고 zip(net)을 zip(net.hosts()로 바 꾸 면 됩 니 다.
물론,만약 당신 이 단지 하나의 주소 가 네트워크 에 있 는 지 확인 하고 싶다 면,직접 in 을 사용 하여 판단 할 수 있 습 니 다.예 는 다음 과 같다.

import ipaddress

n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
ip=ipaddress.ip_address('192.168.1.233')
if ip in net:
    print("   ")
인터페이스
네트워크 인 터 페 이 스 는 네트워크 의 특정한 주 소 를 표시 하고 호스트 주소 와 네트워크 접두사 나 네트워크 마스크 로 표시 할 수 있다.예 는 다음 과 같다.

import ipaddress

addresses = [
    '192.168.1.251/24',
    '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b/64'
]

for ip in addresses:
    iface = ipaddress.ip_interface(ip)
    print(iface)
    print("    :", iface.network)
    print("ip  :", iface.ip)
    print("       :", iface.with_prefixlen)
    print("       :", iface.with_netmask)
    print("      :", iface.with_hostmask)
실행 후 효 과 는 다음 과 같 습 니 다.
效果号
파 이 썬 에서 ipaddress 네트워크 주 소 를 처리 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 ipaddress 네트워크 주소 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기