কম্পিউটার

ipaddress - পাইথনে IPv4/IPv6 ম্যানিপুলেশন লাইব্রেরি


ইন্টারনেট প্রোটোকল বর্তমানে সংস্করণ 4 থেকে সংস্করণ 6-এ যাওয়ার প্রক্রিয়াধীন রয়েছে৷ এটি প্রয়োজনীয় কারণ 4 সংস্করণ ইন্টারনেটের সাথে সরাসরি সংযোগ সহ ক্রমবর্ধমান সংখ্যক ডিভাইসগুলি পরিচালনা করার জন্য পর্যাপ্ত ঠিকানা প্রদান করে না৷

একটি IPv4 ঠিকানা 32 বিট দ্বারা গঠিত, যাকে "অক্টেটস" বলা হয় চারটি আট বিট গ্রুপে উপস্থাপন করা হয়। এটি একটি "ডটেড দশমিক" ফর্ম্যাট যেখানে প্রতিটি আট-বিট অক্টেটের দশমিক মান 0 থেকে 255 হতে পারে৷

উদাহরণস্বরূপ :192.168.1.1

CIDR স্বরলিপি সহ IPv4 ঠিকানা:192.168.1.1/24 যেখানে 24 মানে প্রথম তিনটি অক্টেট নেটওয়ার্ক সনাক্ত করে এবং শেষ অক্টেট নোড সনাক্ত করে৷

একটি IPv6 ঠিকানা 128 বিট দীর্ঘ। এটি হেক্সাডেসিমেল নোটেশন ব্যবহার করে। একটি IPv6 ঠিকানার প্রতিটি অবস্থান 0 থেকে f পর্যন্ত মান সহ চারটি বিটের প্রতিনিধিত্ব করে। 128 বিটগুলিকে 16 বিটের 8টি গ্রুপে ভাগ করা হয়েছে প্রতিটি কোলন দ্বারা পৃথক করা হয়েছে৷

উদাহরণ: 2001:db8:abcd:100::1/64

সমস্ত IPv6 ঠিকানাগুলি নেটওয়ার্ক সনাক্তকরণের জন্য কতগুলি অগ্রণী বিট ব্যবহার করা হয় এবং হোস্ট/ইন্টারফেস সনাক্তকরণের জন্য বাকিগুলি নির্ধারণ করতে CIDR স্বরলিপি ব্যবহার করে৷

পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে ipaddress মডিউল রয়েছে যা IPv4 এবং IPv6 ঠিকানা এবং নেটওয়ার্ক তৈরি, ম্যানিপুলেট এবং পরিচালনা করার ক্ষমতা প্রদান করে৷

মডিউলটি সুবিধাজনকভাবে আইপি ঠিকানা, নেটওয়ার্ক এবং ইন্টারফেস তৈরি করতে নিম্নলিখিত ফ্যাক্টরি ফাংশন সরবরাহ করে:

ip_address()

আর্গুমেন্ট হিসাবে পাস করা IP ঠিকানার উপর নির্ভর করে একটি IPv4Address বা IPv6Address অবজেক্ট ফেরত দিন। হয় IPv4 বা IPv6 ঠিকানা সরবরাহ করা হতে পারে৷

>>> import ipaddress
>>> ipaddress.ip_address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.ip_address('2001:ab7::')
IPv6Address('2001:ab7::')

ip_network()

যুক্তি হিসাবে পাস করা IP ঠিকানার উপর নির্ভর করে একটি IPv4Network বা IPv6Network অবজেক্ট ফেরত দিন৷

>>> ipaddress.ip_network('192.168.100.0/24')
IPv4Network('192.168.100.0/24')
>>> ipaddress.ip_network('2001:db8:abcd:100::/64')
IPv6Network('2001:db8:abcd:100::/64')

ip_interface()

যুক্তি হিসাবে পাস করা IP ঠিকানার উপর নির্ভর করে একটি IPv4Interface বা IPv6Interface অবজেক্ট ফেরত দিন৷

>>> ipaddress.ip_interface('192.168.100.10/24')
IPv4Interface('192.168.100.10/24')
>>> ipaddress.ip_interface('2001:db8:abcd:100::1/64')
IPv6Interface('2001:db8:abcd:100::1/64')

ipaddress মডিউল নিম্নলিখিত ক্লাসগুলিকে সংজ্ঞায়িত করে:

IPv4Address(ঠিকানা)

এই কনস্ট্রাক্টর একটি IPv4 ঠিকানা বস্তু প্রদান করে।

বৈধ IPv4 ঠিকানা নিম্নলিখিত দ্বারা চিহ্নিত করা হয়:

দশমিক-বিন্দু স্বরলিপিতে একটি স্ট্রিং, যার মধ্যে চারটি দশমিক পূর্ণসংখ্যা রয়েছে 0-255, বিন্দু দ্বারা পৃথক করা (যেমন 192.168.0.1)।

একটি পূর্ণসংখ্যা যার বাইনারি সমতুল্য 32 বিট।

4 দৈর্ঘ্যের একটি বাইট অবজেক্টে প্যাক করা একটি পূর্ণসংখ্যা (প্রথমে সবচেয়ে গুরুত্বপূর্ণ অক্টেট)।

>>> ipaddress.IPv4Address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.IPv4Address(3162581505)
IPv4Address('188.129.42.1')
>>> ipaddress.IPv4Address(b'\xC0\xA8\x00\x01')
IPv4Address('192.168.0.1')

IPv6Address()

একটি IPv6 ঠিকানা তৈরি করুন৷

বৈধ IPv6 ঠিকানা নিম্নরূপ গঠিত হয়:

চারটি হেক্সাডেসিমেল সংখ্যার আটটি গ্রুপ নিয়ে গঠিত একটি স্ট্রিং, প্রতিটি গ্রুপ 16 বিট প্রতিনিধিত্ব করে। দলগুলো কোলন দ্বারা বিভক্ত।

একটি পূর্ণসংখ্যা যা 128 বিটে ফিট করে।

16 দৈর্ঘ্যের একটি বাইট অবজেক্টে প্যাক করা একটি পূর্ণসংখ্যা, বড়-এন্ডিয়ান।

>>> ipaddress.IPv6Address('2001:db8::1000')
IPv6Address('2001:db8::1000')
>>> ipaddress.IPv6Address("::abc:7:def")
IPv6Address('::abc:7:def')

সংস্করণ

উপযুক্ত সংস্করণ নম্বর প্রদান করে

>>> add = ipaddress.IPv4Address('192.168.0.1')
>>> add.version
4
>>> ip = ipaddress.IPv6Address('2001:db8::1000')
>>> ip.version
6

  1. কিভাবে Bokeh লাইব্রেরি Python এ টুইন অক্ষ কল্পনা করতে ব্যবহার করা যেতে পারে?

  2. পাইথন সিবোর্ন লাইব্রেরিতে ডেটা ভিজ্যুয়ালাইজ করতে কীভাবে ফেসেটগ্রিড ব্যবহার করা যেতে পারে?

  3. পাইথনে সিবোর্ন লাইব্রেরিতে বার প্লট কীভাবে ব্যবহার করা যেতে পারে?

  4. স্কিট-লার্নে শেখার মডেল বিল্ডিং:একটি পাইথন মেশিন লার্নিং লাইব্রেরি