DNS: domain name থেকে সার্ভারের ঠিকানা
DNS Resolution
এই পাঠের সূচিপত্র
এই পাঠে যা শিখবেন
- DNS resolver ও authoritative server আলাদা করা
- A, AAAA, CNAME এবং TTL বোঝা
- DNS পরিবর্তনের delay ব্যাখ্যা করা
সমস্যা দিয়ে শুরু
আপনি shop-এর নতুন server চালু করে DNS record বদলালেন। নিজের laptop-এ নতুন site দেখা গেল, কিন্তু কিছু customer পুরোনো server-এ যাচ্ছেন। DNS change একটি global database transaction নয়। বিভিন্ন cache-এর কারণে পুরোনো উত্তর কিছু সময় ব্যবহৃত হতে পারে।
সহজ করে বুঝি
Domain Name System বা DNS নামের সঙ্গে resource record-এর সম্পর্ক খুঁজতে সাহায্য করে। Browser সাধারণত local ব্যবস্থা দিয়ে recursive resolver-এর কাছে query পাঠায়। Resolver cache-এ উত্তর না পেলে root, top-level domain এবং authoritative name server-এর পথে তথ্য খুঁজে আনে।
A record IPv4 address, AAAA IPv6 address নির্দেশ করে। CNAME অন্য hostname-এর alias। DNS URL-এর পুরো path resolve করে না; shop.example.com-এর ঠিকানা খোঁজে, /products/42-এর controller নয়। TTL record কতক্ষণ cache-এ রাখা যাবে তার নির্দেশনা দেয়, সব client ঠিক একই সময়ে refresh করবে তার নিশ্চয়তা নয়।
পরিচিত একটি উপমা
আপনি কারও নাম জানেন, ঠিকানা জানেন না। স্থানীয় directory-তে খুঁজলেন; না পেলে জেলা office থেকে সঠিক এলাকার office-এর খোঁজ পেলেন। শেষে আসল record রাখা office ঠিকানা দিল। মাঝের office সেই তথ্য কিছু সময় মনে রাখলে পরেরবার দ্রুত উত্তর দিতে পারে।
নকশাটি দেখুন
Diagram লোড হচ্ছে…
Diagram-এর text flow দেখুন
flowchart LR A[Browser and OS] --> B[Recursive Resolver] B -->|Cache miss| C[Root] C --> D[TLD server] D --> E[Authoritative server] E -->|A or AAAA answer| B B --> A
Client resolver-কে hostname জিজ্ঞেস করে। Cache hit হলে দ্রুত answer আসে। Miss হলে resolver referrals অনুসরণ করে authoritative answer খুঁজে পায়। Answer TTL অনুযায়ী cache হয়। তারপর client IP address ব্যবহার করে connection শুরু করে; DNS নিজে HTTP request পৌঁছে দেয় না।
PHP ও Laravel-এ প্রয়োগ
Laravel feature test-এ DNS ও external network-এর ওপর নির্ভর না করে HTTP Client fake করা ভালো। নিচের test fragment দেখায় application test-এ provider contract আলাদা করা যায়। Real DNS/TLS integration health আলাদা environment থেকে পর্যবেক্ষণ করুন।
use Illuminate\Support\Facades\Http;
Http::preventStrayRequests();
Http::fake([
'catalog.example.test/*' => Http::response([
'id' => 42,
'name' => 'Design Book',
], 200),
]);
$response = Http::get('https://catalog.example.test/products/42');
$this->assertSame(200, $response->status());
$this->assertSame(42, $response->json('id'));সুবিধা, সীমাবদ্ধতা ও trade-off
কম TTL পরিবর্তনে দ্রুত নতুন answer পেতে সাহায্য করতে পারে, কিন্তু resolver query বাড়ায়। বেশি TTL lookup কমায়, migration-এর সময় পুরোনো address দীর্ঘক্ষণ ব্যবহৃত হতে পারে। DNS-based failover instant নয়; client cache ও existing connection তার সময়কে প্রভাবিত করে।
সাধারণ ভুল
- DNS-এ port বা URL path configure করতে যাওয়া।
- TTL কমালেই পুরোনো cache সঙ্গে সঙ্গে মুছে যাবে ধরে নেওয়া।
- Unit test-এ public DNS availability-এর ওপর নির্ভর করা।
- DNS record ঠিক মানেই certificate ঠিক ভাবা।
আরও একটু গভীরে
Migration-এর আগে TTL কমাতে হলে আগের বেশি TTL-এর cache expire হওয়ার সময়ও দিতে হবে। কিছু সময় পুরোনো ও নতুন origin দুটোই সচল রাখলে transition নিরাপদ হয়। Negative caching-এর কারণে record না থাকার উত্তরও কিছু সময় থেকে যেতে পারে।
মনে রাখুন
- DNS নাম resolve করে; HTTP routing আলাদা স্তর।
- TTL caching নির্দেশ করে, instant global update নয়।
- Application contract test এবং real network check আলাদা রাখুন।
নিজে চেষ্টা করুন
পুরোনো TTL ৩৬০০ সেকেন্ড। Migration-এর পাঁচ মিনিট আগে TTL ৬০ করলেন। কেন সব user এক মিনিটে নতুন origin পাবেন না? একটি safer migration sequence লিখুন।
নিজের বোঝা যাচাই করুন
1. DNS কি URL path জানে?
সাধারণ hostname resolution-এ না। Path application বা proxy route করে।
2. A ও AAAA কী?
A IPv4, AAAA IPv6 address record।
3. Resolver আর authoritative server এক?
ভূমিকা আলাদা। Resolver client-এর পক্ষে lookup করে; authoritative server domain-এর আসল record দেয়।
4. TTL বদলালে cache সঙ্গে সঙ্গে বদলায়?
না। আগের answer তার পুরোনো TTL অনুযায়ী এখনও cache-এ থাকতে পারে।
5. Http::fake কি real DNS test করে?
না। এটি application-এর HTTP interaction simulate করে। Real connectivity আলাদা integration check-এর বিষয়।
আরও পড়ুন
এই পাঠের কুইজ
এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।
এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।
জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।
অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।