Intern
DNS эмне?
sobes.tech AI
AIден жооп
DNS (Домендик Атын Тизмеси) — бул компьютерлер, кызматтар же Интернетке же жеке тармакка туташкан бардык ресурстар үчүн бөлүштүрүлгөн аталыш системасы. Ал оңой окула турган домендик аттарды (мисалы, google.com) сандык IP-даректерге (мисалы, 172.217.160.142) байланыштырган.
Иштөө принциби:
- Сураныч: Колдонуучу браузерге домен атын киргизгенде, кардар жергиликтүү DNS кэшине (көбүнчө автоматтык түрдө тармак тарабынан конфигурацияланган) суроо жиберет.
- Кэш: Кэш биринчи кезекте тиешелүү жазууну текшерет. Эгер бар болсо, IP-даректи кайтарат.
- Рекурсивдүү суроо: Эгер жок болсо, кэш бир DNS түп серверине суроо жиберет.
- Делегация: Түп сервер IP-даректи билбейт, бирок
.com,.orgж.б. үчүн жогорку деңгээлдеги (Top-Level Domain, TLD) серверге көрсөтөт. - Делегация: TLD сервер домен үчүн ыйгарым укуктуу DNS серверге көрсөтөт (
google.com). - Чечүү: Ыйгарым укуктуу сервер домен үчүн A (Address) же AAAA (IPv6 Address) жазуусун табат жана тиешелүү IP-даректи кэшка кайтарат.
- Кэшке сактоо жана жооп: Кэш жоопту сактап, IP-даректи кардарга жиберет.
- Туташуу: Браузер алынган IP-дарек аркылуу сервер менен байланыш түзөт.
DNS жазууларынын түрлөрү (ең кеңири колдонулганы):
| Төрү | Түшүндүрмө |
|---|---|
| A | Атын IPv4-дарекке байланыштырган. |
| AAAA | Атын IPv6-дарекке байланыштырган. |
| CNAME | Башка каноникалык атка псевдоним. |
| MX | Домени үчүн почта серверлерин көрсөтөт. |
| NS | Домени үчүн ыйгарым укуктуу DNS серверлерин көрсөтөт. |
| PTR | Обраттуу издөө үчүн колдонулат (IP -> ат). |
| TXT | Тексттик маалыматтарды сактайт (мисалы, SPF). |
DNSдин ролу C#да:
C# менен тармакта иштөөдө, көбүнчө System.Net кеңейтүүсүндөгү класстар колдонулат, мисалы System.Net.Dns DNS суроолорун аткаруу үчүн.
// Домен аты боюнча IP-даректерди алуу мисалы
using System;
using System.Net;
// Синхрон суроо үчүн
IPAddress[] ipAddresses = Dns.GetHostAddresses("www.google.com");
foreach (var ip in ipAddresses)
{
Console.WriteLine(ip);
}
// Асимхрондуу суроо мисалы (заманбап колдонмолордо артыкчылык берилет)
async Task ResolveHostAsync()
{
IPAddress[] asyncIpAddresses = await Dns.GetHostAddressesAsync("www.bing.com");
foreach (var ip in asyncIpAddresses)
{
Console.WriteLine(ip);
}
}
// GetHostEntry кеңири маалыматтарды кайтарат
Task<IPHostEntry> hostEntryTask = Dns.GetHostEntryAsync("ru.stackoverflow.com");
IPHostEntry hostEntry = hostEntryTask.Result; // Ишти аяктоосун күтүп турат
Console.WriteLine($"Host аты: {hostEntry.HostName}");
Console.WriteLine("Даректер:");
foreach (var addr in hostEntry.AddressList)
{
Console.WriteLine($" {addr}");
}
Console.WriteLine("Алиасдар:"); // Көпчүлүк учурда бош тизмек
foreach (var alias in hostEntry.Aliases)
{
Console.WriteLine($" {alias}");
}
DNS — Интернеттин маанилүү компоненти, ал колдонуучуларга жана колдонмолорго оңой эстелүү домендик аттарды колдонууга мүмкүндүк берет, сандык IP-даректердин ордуна.