পাঠ ৩০ · ৫৭-এর মধ্যে · মডিউল ৬

DNS — ডোমেইন নেম সিস্টেম

DNS — the Domain Name System
৮ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • DNS কেন প্রয়োজন এবং এটি কী সমস্যা সমাধান করে
  • root/TLD/authoritative নেমসার্ভারের হায়ারার্কি কীভাবে কাজ করে
  • ক্যাশিং ও TTL কেন প্রতিটি লুকআপে পুরো হায়ারার্কি হাঁটার প্রয়োজন কমায়
  • সাধারণ DNS রেকর্ড টাইপ — Python দিয়ে একটি বহু-স্তরের ডোমেইন রেজোলিউশন সিমুলেট করা

১ · DNS কী সমস্যা সমাধান করে

DNSDomain Name Systemমানুষের পড়ার উপযোগী ডোমেইন নামকে IP অ্যাড্রেসে অনুবাদ করার একটি হায়ারার্কিক্যাল, ডিস্ট্রিবিউটেড ডেটাবেস সিস্টেম। মানুষের জন্য abcltech.com মনে রাখা সহজ, কিন্তু কম্পিউটার (M4) IP অ্যাড্রেস দিয়ে রাউট করে, নাম দিয়ে নয়। DNS এই ফাঁকটি পূরণ করে — একটি মানুষ-পঠনযোগ্য নামকে সংশ্লিষ্ট IP অ্যাড্রেসে রূপান্তর করে দেয়, যাতে আপনি 93.184.216.34 মুখস্থ না করেও একটি ওয়েবসাইটে পৌঁছাতে পারেন।

২ · হায়ারার্কিক্যাল, ডিস্ট্রিবিউটেড ডেটাবেস

DNS কোনো একক কেন্দ্রীয় ডেটাবেস নয় — এটি তিনটি স্তরে সংগঠিত —

  • Root সার্ভার — জানে কোথায় গেলে প্রতিটি টপ-লেভেল-ডোমেইনের (TLD) সার্ভার পাওয়া যাবে (.com, .org ইত্যাদির জন্য)।
  • TLD সার্ভার — জানে একটি নির্দিষ্ট ডোমেইনের authoritative নেমসার্ভার কোথায়।
  • Authoritative নেমসার্ভার — একটি নির্দিষ্ট ডোমেইনের প্রকৃত রেকর্ড ধরে রাখে (যেমন abcltech.com-এর A রেকর্ড)।

একটি রিজলভার এই হায়ারার্কি উপর থেকে নিচে হাঁটে — root থেকে শুরু করে, TLD-তে গিয়ে, তারপর authoritative নেমসার্ভারে পৌঁছে চূড়ান্ত উত্তর পায়।

Root সার্ভার TLD সার্ভার (.com) Authoritative নেমসার্ভার (abcltech.com)
রিজলভার প্রতিটি স্তরে জিজ্ঞেস করে "পরবর্তী কোথায় যাব", যতক্ষণ না চূড়ান্ত IP অ্যাড্রেস পাওয়া যায়।

৩ · ক্যাশিং ও TTL

বাস্তবে প্রতিটি লুকআপে পুরো হায়ারার্কি হাঁটার দরকার হয় না — ISP রিজলভার, অপারেটিং সিস্টেম, এমনকি ব্রাউজার নিজেও রেজাল্ট ক্যাশ করে রাখে। প্রতিটি রেকর্ডের একটি TTLTime To Liveএকটি DNS রেকর্ড কতক্ষণ ক্যাশে বৈধ থাকবে তার সময়সীমা (সেকেন্ডে) — এই সময় পার হলে রিজলভার পুনরায় হায়ারার্কি থেকে তাজা তথ্য আনে। (Time To Live) থাকে, যা নির্ধারণ করে সেই ক্যাশড তথ্য কতক্ষণ পর্যন্ত বৈধ ধরা যাবে — মেয়াদ শেষ হলে রিজলভার আবার হায়ারার্কি থেকে তাজা তথ্য আনে।

৪ · রেকর্ড টাইপ

A
হোস্টনাম → IPv4 অ্যাড্রেস।
AAAA
হোস্টনাম → IPv6 অ্যাড্রেস (L16)।
CNAME
অ্যালিয়াস — একটি হোস্টনাম থেকে আরেকটি হোস্টনামে।
MX
একটি ডোমেইনের মেইল সার্ভার (L31-এ প্রাসঙ্গিক)।
NS
একটি ডোমেইনের নেমসার্ভার।
Python
# DNS রেজোলিউশন হায়ারার্কির সিমুলেশন — root -> TLD -> authoritative
dns_hierarchy = {
    "com": {
        "abcltech": {
            "www": "93.184.216.34",
            "mail": "93.184.216.50",
        },
        "example": {
            "www": "93.184.216.100",
        },
    },
    "org": {
        "wikipedia": {
            "www": "91.198.174.192",
        },
    },
}

def resolve(domain, root_servers):
    labels = domain.split(".")            # যেমন ["www", "abcltech", "com"]
    node = root_servers
    print(f"resolve করা হচ্ছে: {domain}")
    layer_names = {1: "TLD", 2: "Authoritative", 3: "হোস্ট রেকর্ড"}
    # ডানদিক থেকে বামে হাঁটা হয় — TLD প্রথমে, তারপর ডোমেইন, তারপর হোস্ট
    for level, label in enumerate(reversed(labels), start=1):
        if not isinstance(node, dict) or label not in node:
            print(f"  ধাপ {level}: '{label}' পাওয়া যায়নি — resolution ব্যর্থ")
            return None
        node = node[label]
        layer = layer_names.get(level, f"স্তর {level}")
        shown = node if isinstance(node, str) else "...(আরও গভীরে যাওয়া হচ্ছে)"
        print(f"  ধাপ {level} ({layer}): '{label}' -> {shown}")
    return node

ip1 = resolve("www.abcltech.com", dns_hierarchy)
print("চূড়ান্ত IP:", ip1)

print()
ip2 = resolve("www.example.com", dns_hierarchy)
print("চূড়ান্ত IP:", ip2)

    
বাস্তব DNS-এ প্রতিটি "ধাপ" আসলে একটি পৃথক নেটওয়ার্ক রিকোয়েস্ট (রিজলভার থেকে সেই নির্দিষ্ট সার্ভারে) — উপরের সিমুলেশন সেই ধাপগুলো একটি ইন-মেমরি নেস্টেড ডিকশনারিতে সরলীকৃত করে দেখাচ্ছে যাতে হায়ারার্কি হাঁটার লজিকটি স্পষ্ট বোঝা যায়।
মূল কথা · Key takeaway

DNS প্রমাণ করে একটি বিশাল, বিকেন্দ্রীভূত সিস্টেম কীভাবে সুশৃঙ্খলভাবে কাজ করতে পারে — কোনো একক সার্ভার সব ডোমেইনের তথ্য জানে না, বরং হায়ারার্কি ও ক্যাশিং একসাথে মিলিয়ে প্রতিটি লুকআপকে দ্রুত ও স্কেলেবল করে তোলে — এটি L01-এর "নেটওয়ার্কদের নেটওয়ার্ক" ধারণার সাথে সামঞ্জস্যপূর্ণ একটি নকশা দর্শন।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ ক্যাশিং না থাকলে DNS-এর কী সমস্যা হতো?

ক্যাশিং ছাড়া প্রতিটি সিঙ্গেল ডোমেইন লুকআপে সম্পূর্ণ হায়ারার্কি (root → TLD → authoritative) হাঁটতে হতো, যা প্রতিটি ওয়েবসাইট ভিজিটে বাড়তি লেটেন্সি যোগ করত এবং root/TLD সার্ভারগুলোর উপর বিশ্বব্যাপী প্রচণ্ড লোড তৈরি করত। ক্যাশিং এই কাজের সিংহভাগ ISP রিজলভার ও লোকাল ক্যাশে সরিয়ে দেয়, তাই root সার্ভারগুলো তুলনামূলক কম ট্র্যাফিক দেখে।

প্র ০২ একটি ডোমেইনের IP অ্যাড্রেস বদলানোর পর পুরনো ক্যাশড তথ্য কতক্ষণ টিকে থাকতে পারে?

যতক্ষণ না সেই রেকর্ডের TTL শেষ হয় — যদি একটি রেকর্ডের TTL ২৪ ঘণ্টা সেট করা থাকে, তাহলে পরিবর্তনের পরও কিছু রিজলভার/ব্রাউজার পুরনো IP-তেই ট্র্যাফিক পাঠাতে পারে যতক্ষণ না তাদের ক্যাশ মেয়াদোত্তীর্ণ হয়। এই কারণেই কেউ ডোমেইনের হোস্টিং বদলানোর আগে সাধারণত TTL কমিয়ে রাখেন, যাতে পরিবর্তন দ্রুত সব জায়গায় ছড়িয়ে পড়ে।

প্র ০৩ MX রেকর্ড কেন একটি ডোমেইনের A রেকর্ড থেকে আলাদা রাখা হয়?

কারণ একটি ডোমেইনের ওয়েবসাইট (A রেকর্ড) ও তার মেইল সার্ভার (MX রেকর্ড) প্রায়ই সম্পূর্ণ ভিন্ন অবকাঠামোতে হোস্ট করা হয় — যেমন ওয়েবসাইট এক ক্লাউড প্রোভাইডারে, কিন্তু ইমেইল একটি বিশেষায়িত ইমেইল সার্ভিসে (L31)। আলাদা রেকর্ড টাইপ রাখার ফলে একটি ডোমেইনের বিভিন্ন সার্ভিস স্বাধীনভাবে বিভিন্ন সার্ভারে নির্দেশিত হতে পারে।

অনুশীলন

  1. চিন্তা করুন: উপরের কোড সেলে dns_hierarchy-তে একটি নতুন TLD (যেমন "net") ও তার নিচে একটি ডোমেইন যোগ করলে resolve ফাংশনে কোনো পরিবর্তন করতে হবে কি?

    না — resolve ফাংশনটি সাধারণভাবে ডোমেইনকে লেবেলে ভেঙে হায়ারার্কিতে হাঁটে, নির্দিষ্ট কোনো TLD-এর নাম হার্ডকোড করা নেই। যেকোনো নতুন TLD/ডোমেইন/হোস্ট শুধু ডেটা ডিকশনারিতে যোগ করলেই ফাংশনটি এমনিতেই তা রেজলভ করতে পারবে।

  2. পরীক্ষা করুন: এমন একটি ডোমেইন দিয়ে resolve কল করুন যা dns_hierarchy-তে নেই (যেমন "www.notreal.com") এবং দেখুন এটি কীভাবে ব্যর্থতা হ্যান্ডল করে।

    "com" পর্যন্ত সফলভাবে পৌঁছাবে, কিন্তু পরবর্তী ধাপে "notreal" সেই TLD-ডিকশনারিতে না থাকায় ফাংশনটি "পাওয়া যায়নি" বার্তা প্রিন্ট করে None রিটার্ন করবে — বাস্তব DNS-এ এটির সমতুল্য হলো NXDOMAIN ("no such domain") এরর।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

পাঠ ২৯
HTTP ও HTTPS