chào mọi người. Hôm nay chúng ta sẽ tìm hiểu về module ipaddress trong Python. Vì vậy, không có bất kỳ rắc rối nào nữa, hãy bắt đầu
Địa chỉ IP là gì?
IP là viết tắt của giao thức internet. Nó được sử dụng để xác định một nút trên bất kỳ mạng nào. Vì vậy, bất kỳ thiết bị nào kết nối với internet, cần phải có địa chỉ IP
Có hai phiên bản địa chỉ IP. IPv4 và IPv6. IPv4 hiện đang được sử dụng trong khi IPv6 đang được các nhà cung cấp mạng lớn chấp nhận chậm do thiếu địa chỉ IPv4 so với các thiết bị trên mạng
Để tìm hiểu thêm về địa chỉ IP, hãy xem trang Wiki tại đây
Làm cách nào để sử dụng mô-đun ipaddress trong Python?
Hãy bắt đầu với việc sử dụng mô-đun ipaddress ngay bây giờ. Để đặt địa chỉ máy chủ, chúng tôi sử dụng ipaddress. địa chỉ IP[ ]
Hàm này tự động xác định phiên bản nào sẽ được sử dụng dựa trên các giá trị được truyền. Nó trả về địa chỉ IPv4 hoặc địa chỉ IPv6
1. Làm cách nào để tạo Địa chỉ IPv4 hợp lệ?
IPv4 xác thực các giá trị trong phạm vi từ 0 đến 255. Số nguyên phù hợp với 32 bit đại diện cho một octet trong địa chỉ. Một số nguyên được đóng gói thành đối tượng byte có độ dài 4
import ipaddress ipaddress.ip_address['199.138.0.1']
đầu ra
IPv4Address['199.138.0.1']
2. Làm cách nào để tạo Địa chỉ IPv6 hợp lệ?
IPv6 xác thực các giá trị từ phạm vi 0 đến ffff. Một số nguyên phù hợp với 128 bit. Một số nguyên được đóng gói vào một đối tượng byte có độ dài 16
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']
đầu ra
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']
Làm việc với Địa chỉ IP trong Python bằng mô-đun ipaddress
Địa chỉ IP được kèm theo một bộ quy tắc. Các dải địa chỉ IP được gán các chức năng khác nhau
Ví dụ: 127. 0. 0. 1 là địa chỉ vòng lặp được gán cho mô-đun mạng trên máy tính của bạn. Khi bạn gửi một gói ping đến địa chỉ IP này, về cơ bản bạn đang ping máy tính của chính mình
1. Các chức năng IP cơ bản
Hãy xem cách chúng ta có thể xác minh địa chỉ nào là loopback, multicast, liên kết cục bộ hoặc dành riêng bằng cách sử dụng mô-đun ipaddress trong Python
import ipaddress ipa = ipaddress.ip_address['199.138.0.1'] print[ipa.is_private] # Checks if address is private print[ipa.is_global] # Checks if address is global #If address is a loopback address print[ipaddress.ip_address["127.0.0.1"].is_loopback] #If address is reserved for multiclass use print[ipaddress.ip_address["229.100.0.23"].is_multicast] #If address is reserved for link local usage print[ipaddress.ip_address["169.254.0.100"].is_link_local] #True if the address is otherwise IETF reserved. print[ipaddress.ip_address["240.10.0.1"].is_reserved]
đầu ra
False True True True True True
2. Tra cứu IP đảo ngược
Hàm con trỏ đảo ngược yêu cầu DNS giải quyết địa chỉ IP được thêm làm đối số tại đây. Nếu DNS có thể phân giải IP, bạn sẽ nhận được đầu ra với tên được chỉ định
Nếu bạn ping một IP được gán cho một tên miền, bạn có thể sẽ nhận được tên của máy chủ chứa tên miền đó. Tuy nhiên, điều này có thể thay đổi tùy thuộc vào thiết lập tường lửa
ipaddress.ip_address["199.138.0.1"].reverse_pointer
đầu ra
'1.0.138.199.in-addr.arpa'Làm việc với Mạng IP bằng mô-đun ipaddress
Mạng IPv4 và Mạng IPv6 có thể giúp chúng tôi xác định và kiểm tra định nghĩa mạng IP
Chúng tôi có thể nhận mạng IP ở định dạng được yêu cầu mà không cần viết mã tùy chỉnh
- Prefix / denotes the number of high-order bits set in the network mask.
- 2. Mặt nạ mạng là một địa chỉ IP với một số bit bậc cao được đặt
- 3. Hostmask là nghịch đảo logic của netmask và được sử dụng trong danh sách kiểm soát truy cập của Cisco
________số 8
đầu ra
10.0.0.0/16 10.0.0.0/0.0.255.255 10.0.0.0/255.255.0.0
1. Kiểm tra xem địa chỉ IP là IPv4 hay IPv6
địa chỉ IP. Hàm ip_network[] được sử dụng để trả về loại mạng của địa chỉ. Nó xác nhận nếu một IP nằm trong mạng IP4 hoặc mạng IP6
IPv4Address['199.138.0.1']0
đầu ra
IPv4Address['199.138.0.1']1
2. Xác định máy chủ trên mạng IP
Máy chủ là tất cả các địa chỉ IP thuộc về một mạng ngoại trừ địa chỉ mạng và địa chỉ quảng bá mạng
máy chủ [] trả về trình vòng lặp trên các máy chủ có thể sử dụng được trong mạng
Các mạng có độ dài mặt nạ là 31, địa chỉ mạng và địa chỉ quảng bá mạng cũng được bao gồm trong kết quả và Các mạng có độ dài mặt nạ là 32 trả về danh sách trả về của địa chỉ máy chủ duy nhất
IPv4Address['199.138.0.1']2
đầu ra
IPv4Address['199.138.0.1']3
3. Xác định địa chỉ quảng bá cho các mạng
Với Broadcast_address, chúng ta có thể yêu cầu máy chủ DNS phản hồi bằng địa chỉ quảng bá trên mạng
IPv4Address['199.138.0.1']4
đầu ra
IPv4Address['199.138.0.1']5
4. Xác định chồng chéo mạng IP
Chức năng này cho chúng ta biết rằng nếu một mạng được chứa một phần hoặc toàn bộ trong một mạng khác. Nó trả về true hoặc false
IPv4Address['199.138.0.1']6
đầu ra
IPv4Address['199.138.0.1']7
5. Mạng con trên mạng IP
Nó trả về một trình vòng lặp của các đối tượng mạng. tiền tốlen_diff là độ dài tiền tố pf nên được tăng lên, new_prefix là tiền tố mới của mạng con và lớn hơn tiền tố của chúng tôi
IPv4Address['199.138.0.1']8
đầu ra
IPv4Address['199.138.0.1']9
6. Tạo siêu mạng với mô-đun ipaddress
Siêu mạng là sự kết hợp của một hoặc nhiều mạng con. Bạn có thể tìm hiểu thêm về siêu mạng tại đây. Với phương thức supernet trong mô-đun ipaddress, bạn có thể tạo mạng con bằng cách chỉ định thông tin theo yêu cầu
- tiền tốlen_diff là số lượng độ dài tiền tố của chúng tôi sẽ được tăng thêm
- new_prefix là tiền tố mới mong muốn của các mạng con phải lớn hơn tiền tố của chúng tôi
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']0
đầu ra
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']1
7. Kiểm tra xem một mạng IP có phải là siêu mạng/mạng con của một mạng IP khác không
Trả về true nếu một mạng là mạng con của mạng kia nếu một mạng là siêu mạng của mạng kia. Trả về đúng hoặc sai
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']2
đầu ra
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']3
8. Làm việc với các đối tượng IPv4Interface
Các đối tượng giao diện có thể được sử dụng làm khóa trong từ điển vì chúng có thể băm được
IPv4Interface kế thừa tất cả các thuộc tính từ IPv4Address vì IPv4Interface là lớp con của IPv4Address
Đây, 199. 167. 1. 6 Địa chỉ IP nằm trong mạng 199. 167. 1. 0/24
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']4
đầu ra
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']5
Chúng ta có thể biểu diễn giao diện mạng theo ký hiệu tiền tố, dưới dạng mặt nạ mạng và mặt nạ máy chủ
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']6
đầu ra
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']7
Hoạt động khác với địa chỉ IP
Bạn có thể kiểm tra cách so sánh địa chỉ IP với địa chỉ khác bằng cách sử dụng toán tử so sánh trong Python. Hãy xem ví dụ dưới đây
import ipaddress ipaddress.ip_address['2011:cb0::'] ipaddress.ip_address['FFFF:9999:2:FDE:257:0:2FAE:112D']8
đầu ra
IPv4Address['199.138.0.1']7
Chúng ta có thể cộng hoặc trừ các số nguyên từ các đối tượng địa chỉ IP
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']0
đầu ra
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']1
Địa chỉ có thể được chuyển đổi thành chuỗi hoặc số nguyên bằng cách sử dụng các hàm tích hợp sẵn str[] và int[]
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']2
đầu ra
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']3
Địa chỉ IPv6 được chuyển đổi thành chuỗi không có ID vùng
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']4
đầu ra
IPv6Address['2011:cb0::'] IPv6Address['ffff:9999:2:fde:257:0:2fae:112d']5
Phần kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu về địa chỉ, mạng và giao diện IPv4 và IPv6. Để biết thêm nội dung như vậy, hãy theo dõi. học tập vui vẻ. 🙂