ইন্টারনেট ব্যবহার করার সময় আমরা সাধারণত google.com, facebook.com কিংবা trickbd.org-এর মতো domain name লিখেই ওয়েবসাইটে প্রবেশ করি। কিন্তু কম্পিউটার বা নেটওয়ার্ক ডিভাইস মূলত IP address ব্যবহার করে একে অপরের সঙ্গে যোগাযোগ করে। তাহলে আমরা domain name লিখলে সেটি কীভাবে সঠিক server-এর কাছে পৌঁছে যায়?
এই কাজটির পেছনে রয়েছে DNS বা Domain Name System।
সহজভাবে বললে, DNS হলো ইন্টারনেটের একটি নাম-অনুবাদ ব্যবস্থা, যা মানুষের পড়ার উপযোগী domain name-কে কম্পিউটারের প্রয়োজনীয় IP address-এর সঙ্গে মিলিয়ে দেয়। উদাহরণ হিসেবে, আপনি যখন browser-এ example.com লিখবেন, DNS সেই domain-এর জন্য প্রয়োজনীয় DNS রেকর্ড খুঁজে বের করতে সাহায্য করে, যেন ব্রাউজার সঠিক সার্ভারের সঙ্গে যোগাযোগ করতে পারে।
DNS কেন প্রয়োজন?
আইপি এড্রেস মনে রাখা মানুষের জন্য বেশ কঠিন। একটি IPv4 এড্রেস হতে পারে 192.0.2.1, আবার IPv6 এড্রেস আরও বড় হতে পারে।
এর পরিবর্তে example.com-এর মতো একটি নাম মনে রাখা অনেক সহজ। DNS এই human-readable নাম এবং নেটওয়ার্কের প্রয়োজনীয় এড্রেসের মধ্যে একটি ম্যাপিং তৈরি করে।
অর্থাৎ বিষয়টি মোটামুটি এমন:
Domain Name
↓
DNS
↓
IP Address
↓
Web Server
তবে বাস্তবে DNS lookup এতটা সরল নয়। এখানে একাধিক ধরনের DNS সার্ভার এবং ক্যাশিং সিস্টেম কাজ করে।
DNS কীভাবে কাজ করে?
ধরুন আপনি ব্রাউজারে লিখলেন:
https://example.com
ব্রাউজারকে প্রথমে জানতে হবে example.com-এর জন্য কোন আইপি এড্রেস ব্যবহার করতে হবে।
আপনার ডিভাইসের stub resolver DNS query-টি configured recursive resolver-এর কাছে পাঠায়। এই recursive resolver সাধারণত আপনার ISP পরিচালনা করতে পারে, আবার আপনি চাইলে অন্য public DNS resolver-ও ব্যবহার করতে পারেন।
Recursive resolver প্রথমেই নিজের ক্যাশ পরীক্ষা করে। যদি প্রয়োজনীয় DNS record আগে থেকেই ক্যাশে থাকে এবং তার TTL শেষ না হয়ে থাকে, তাহলে resolver সরাসরি সেই তথ্য আপনার ডিভাইসকে দিতে পারে। এতে প্রতিবার পুরো DNS lookup করার প্রয়োজন হয় না।
যদি cache-এ তথ্য না থাকে, তখন resolver-কে DNS hierarchy অনুসরণ করে প্রয়োজনীয় তথ্য খুঁজতে হয়।
১. Root Nameserver
প্রথম ধাপে recursive resolver একটি Root Nameserver-এর কাছে জানতে চাইতে পারে সংশ্লিষ্ট TLD-এর DNS ইনফরমেশন কোথায় পাওয়া যাবে।
যেমন example.com-এর ক্ষেত্রে .com হলো Top-Level Domain বা TLD।
Root server সাধারণত ওয়েবসাইটের ফাইনাল আইপি এড্রেস দেয় না। বরং .com-এর মতো TLD-এর authoritative nameserver কোথায় পাওয়া যাবে, সে বিষয়ে ধারণা দেয়।
২. TLD Nameserver
এরপর recursive resolver সংশ্লিষ্ট TLD Nameserver-এর কাছে query করে।
example.com-এর ক্ষেত্রে এটি .com TLD-এর nameserver-এর কাছে জানতে চাইবে example.com-এর authoritative nameserver কোনটি।
TLD nameserver এরপর সংশ্লিষ্ট domain-এর authoritative nameserver-এর তথ্য দেয়।
৩. Authoritative Nameserver
এরপর recursive resolver example.com-এর Authoritative Nameserver-এর কাছে প্রয়োজনীয় DNS record জানতে চায়।
Authoritative nameserver হলো সেই DNS server যেখানে নির্দিষ্ট domain-এর authoritative DNS records সংরক্ষিত থাকে। এখান থেকেই resolver প্রয়োজনীয় record-এর চূড়ান্ত তথ্য পেতে পারে।
ধরা যাক সেখানে example.com-এর একটি A record রয়েছে:
example.com → 192.0.2.1
Resolver এই তথ্য পাওয়ার পর সেটি আপনার ডিভাইসকে ফেরত দেয়।
এরপর browser ওই IP address ব্যবহার করে web server-এর সঙ্গে HTTP বা HTTPS connection তৈরি করে এবং ওয়েবসাইটের data সংগ্রহ করে।
পুরো প্রক্রিয়াটি সহজ করে এমনভাবে দেখা যায়:
Browser
↓
Stub Resolver
↓
Recursive Resolver
↓
Root Nameserver
↓
TLD Nameserver
↓
Authoritative Nameserver
↓
DNS Record
↓
Recursive Resolver
↓
Browser
↓
Web Server
DNS Record কী?
DNS শুধু domain-এর IP address সংরক্ষণ করে না। বিভিন্ন ধরনের DNS record ব্যবহার করে domain-এর বিভিন্ন service ও configuration সম্পর্কে তথ্য প্রকাশ করা যায়।
কিছু গুরুত্বপূর্ণ record হলো:
A Record:
Domain বা hostname-কে IPv4 address-এর সঙ্গে যুক্ত করে।
AAAA Record:
Domain বা hostname-কে IPv6 address-এর সঙ্গে যুক্ত করে।
CNAME Record:
একটি hostname-কে অন্য hostname-এর alias হিসেবে নির্দেশ করে।
MX Record:
Domain-এর email গ্রহণের জন্য কোন mail server ব্যবহার হবে, তা নির্দেশ করে।
NS Record:
কোন nameserver কোনো domain বা DNS zone-এর authoritative server হিসেবে কাজ করছে, তা নির্দেশ করে।
TXT Record:
বিভিন্ন ধরনের text-based তথ্য সংরক্ষণ ও domain verification-এর মতো কাজে ব্যবহৃত হয়।
DNS Cache এবং TTL কী?
প্রতিবার root, TLD এবং authoritative nameserver পর্যন্ত query করলে অপ্রয়োজনীয় সময় ও network traffic বাড়ত। তাই recursive resolver DNS response cache করে রাখে।
প্রতিটি DNS record-এর সঙ্গে TTL বা Time to Live থাকে। TTL নির্ধারণ করে resolver কতক্ষণ সেই তথ্য cache করে রাখতে পারবে। TTL শেষ হলে প্রয়োজন অনুযায়ী নতুন DNS lookup করা হয়।
এ কারণেই কোনো domain-এর DNS record পরিবর্তন করার পর পরিবর্তনটি সব জায়গায় একই সময়ে দেখা নাও যেতে পারে। বিভিন্ন resolver-এর cache-এ পুরোনো তথ্য TTL শেষ হওয়া পর্যন্ত থাকতে পারে।
DNS কি ইন্টারনেটের ট্রাফিকের পথ ঠিক করে?
এখানে একটি গুরুত্বপূর্ণ ভুল ধারণা পরিষ্কার করা দরকার।
DNS মূলত domain name-এর সঙ্গে DNS record-এর তথ্য খুঁজে দেয়। DNS নিজে ইন্টারনেটের packet কোন network path দিয়ে যাবে তা নির্ধারণ করে না। Packet-এর network routing-এর জন্য router এবং BGP-এর মতো routing ব্যবস্থা কাজ করে।
অর্থাৎ DNS আপনাকে বলে দিতে পারে:
example.com → নির্দিষ্ট IP address
কিন্তু ওই IP address-এ পৌঁছানোর জন্য packet কোন কোন network path অতিক্রম করবে, সেটি DNS-এর কাজ নয়।
DNS কি নিরাপদ?
মূল DNS protocol নিজে সম্পূর্ণ নিরাপত্তা ব্যবস্থা হিসেবে তৈরি হয়নি। DNS response-এর authenticity যাচাই করার জন্য DNSSEC (Domain Name System Security Extensions) ব্যবহার করা যায়।
DNSSEC ক্রিপ্টোগ্রাফিক সিগনেচার ব্যবহার করে DNS ডাটার authenticity এবং integrity যাচাই করতে সাহায্য করে। ফলে রিসলভার বুঝতে পারে DNS রেসপন্সটি প্রত্যাশিত authoritative source থেকে এসেছে কি না এবং পথে ডাটা পরিবর্তন হয়েছে কি না।
শেষ কথা
DNS ইন্টারনেটের অন্যতম গুরুত্বপূর্ণ infrastructure। আমরা browser-এ একটি সহজ domain name লিখে Enter চাপি, কিন্তু এর পেছনে stub resolver, recursive resolver, root nameserver, TLD nameserver, authoritative nameserver, DNS records এবং caching—সব মিলিয়ে একটি distributed system কাজ করে।
সংক্ষেপে মনে রাখুন:
Domain Name
↓
DNS Lookup
↓
Recursive Resolver
↓
DNS Hierarchy / Cache
↓
Authoritative DNS
↓
IP Address
↓
Web Server
↓
Website
DNS কীভাবে কাজ করে সেটি ভালোভাবে বুঝলে domain, hosting, nameserver, Cloudflare, CDN, email এবং website migration-এর মতো বিষয়গুলো বোঝাও অনেক সহজ হয়ে যায়।