Intern
DNS nədir?
sobes.tech Süni İntellekt
AI-dan cavab
DNS (Domain Name System) — kompüterlər, xidmətlər və ya hər hansı resurslar üçün internetə və ya xüsusi şəbəkəyə qoşulmuş olan paylanmış adlandırma sistemidir. O, oxumaq asan olan domen adlarını (məsələn, google.com) sayısal IP ünvanları ilə (məsələn, 172.217.160.142) uyğunlaşdırır.
İş prinsipi:
- Sorğu: İstifadəçi brauzerə domen adını daxil etdikdə, müştəri yerli DNS serverinə (adətən şəbəkə tərəfindən avtomatik konfiqurasiya olunur) sorğu göndərir.
- Keş: Server əvvəlcə keşini yoxlayır. Əgər uyğunluq tapsa, IP ünvanını geri qaytarır.
- Recursiv sorğu: Əgər keşdə yoxdursa, server kök DNS serverlərindən birinə sorğu göndərir.
- Təyin etmə: Kök server IP ünvanını bilmir, lakin
.com,.orgvə s. üçün yuxarı səviyyəli domen serverinə (TLD) göstəriş verir. - Təyin etmə: TLD serveri, müəyyən domen üçün (
google.com) səlahiyyətli DNS serverini göstərir. - Həll: Səlahiyyətli server domen adı üçün A (Ünvan) və ya AAAA (IPv6 Ünvan) qeydini tapır və müvafiq IP ünvanını geri qaytarır.
- Keş və cavab: Server cavabı keşləyir və IP ünvanını müştəriyə göndərir.
- Qoşulma: Brauzer, alınan IP ünvanı ilə serverə qoşulur.
DNS qeyd növləri (ən çox yayılmış):
| Növ | Təsviri |
|---|---|
| A | Host adını IPv4 ünvanına uyğunlaşdırır. |
| AAAA | Host adını IPv6 ünvanına uyğunlaşdırır. |
| CNAME | Digər kanonik ad üçün takma ad. |
| MX | Domen üçün poçt serverlərini göstərir. |
| NS | Domen üçün səlahiyyətli DNS serverlərini göstərir. |
| PTR | Reverse axtarış üçün istifadə olunur (IP -> ad). |
| TXT | Mətn məlumatlarını saxlayır (məsələn, SPF). |
C#-da DNS-in rolu:
C# ilə şəbəkə ilə işləyərkən, adətən System.Net ad məkanından System.Net.Dns kimi sinflər DNS sorğularını həyata keçirmək üçün istifadə olunur.
// Domen adına görə IP ünvanlarını alma nümunəsi
using System;
using System.Net;
// Sinxron sorğu üçün
IPAddress[] ipAddresses = Dns.GetHostAddresses("www.google.com");
foreach (var ip in ipAddresses)
{
Console.WriteLine(ip);
}
// Müasir tətbiqlərdə üstün tutulan asinxron sorğu nümunəsi
async Task ResolveHostAsync()
{
IPAddress[] asyncIpAddresses = await Dns.GetHostAddressesAsync("www.bing.com");
foreach (var ip in asyncIpAddresses)
{
Console.WriteLine(ip);
}
}
// GetHostEntry, host haqqında daha ətraflı məlumat verir
Task<IPHostEntry> hostEntryTask = Dns.GetHostEntryAsync("ru.stackoverflow.com");
IPHostEntry hostEntry = hostEntryTask.Result; // Tapşırığın tamamlanmasını gözləyir
Console.WriteLine($"Host adı: {hostEntry.HostName}");
Console.WriteLine("Ünvanlar:");
foreach (var addr in hostEntry.AddressList)
{
Console.WriteLine($" {addr}");
}
Console.WriteLine("Takma adlar:"); // Əksər hallarda boş siyahı
foreach (var alias in hostEntry.Aliases)
{
Console.WriteLine($" {alias}");
}
DNS, internetin kritik bir komponentidir və istifadəçilərə və tətbiqlərə asan yadda qalan domen adlarından istifadə etməyə imkan verir, bununla da sayısal IP ünvanları yerinə daha istifadəçi dostu olur.