Intern
DNS чист?
sobes.tech AI
Ҷавоб аз AI
DNS (Системаи Номи Домен) як системаи тақсимшудаи номгузорӣ барои компютерҳо, хизматрасониҳо ё ҳар кадом захираҳое мебошад, ки ба Интернет ё шабакаи хусусӣ пайваст шудаанд. Он номҳои домениро, ки ба осонӣ хонда мешаванд (масалан, google.com), бо суроғаҳои IP-роҳии рақамӣ (масалан, 172.217.160.142) пайванд мекунад.
Принсипи кор:
- Пурсиш: Вақте ки корбар номи доменро дар браузер ворид мекунад, клиент пурсиш ба кеши DNS маҳаллии худро (одатан автоматӣ аз ҷониби шабака танзим шудааст) мефиристад.
- Кеш: Кеш аввал санҷиш мекунад, ки оё сабт мувофиқ вуҷуд дорад. Агар бошад, IP-роҳиро бармегардонад.
- Пурсиши рекурсивӣ: Агар не, кеш пурсиш ба яке аз серверҳои асосии DNS мефиристад.
- Вазифа: Сервери асосӣ IP-ро намедонад, аммо ба сервери сатҳи боло (Top-Level Domain, TLD) барои
.com,.orgва ғайра ишора мекунад. - Вазифа: Сервери TLD ба сервери ҳуқуқӣ барои домени мушаххас (
google.com) ишора мекунад. - Ҳал: Сервери ҳуқуқӣ сабти A (Address) ё AAAA (IPv6 Address) барои номи доменро меёбад ва IP-ро бармегардонад.
- Кеш ва ҷавоб: Кеш ҷавобро нигоҳ медорад ва IP-ро ба муштарӣ мефиристад.
- Пайвастшавӣ: Браузер бо сервер тавассути IP-и гирифташуда пайваст мешавад.
Намудҳои сабтҳои DNS (бештар истифодашаванда):
| Навъ | Тавсиф |
|---|---|
| A | Номи хостро бо IP-роҳии IPv4 пайванд мекунад. |
| AAAA | Номи хостро бо IP-роҳии 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($"Номи хост: {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-ҳои рақамӣ иваз кунанд.