Sobes.tech
Intern

DNS чист?

sobes.tech AI

Ҷавоб аз AI

DNS (Системаи Номи Домен) як системаи тақсимшудаи номгузорӣ барои компютерҳо, хизматрасониҳо ё ҳар кадом захираҳое мебошад, ки ба Интернет ё шабакаи хусусӣ пайваст шудаанд. Он номҳои домениро, ки ба осонӣ хонда мешаванд (масалан, google.com), бо суроғаҳои IP-роҳии рақамӣ (масалан, 172.217.160.142) пайванд мекунад.

Принсипи кор:

  1. Пурсиш: Вақте ки корбар номи доменро дар браузер ворид мекунад, клиент пурсиш ба кеши DNS маҳаллии худро (одатан автоматӣ аз ҷониби шабака танзим шудааст) мефиристад.
  2. Кеш: Кеш аввал санҷиш мекунад, ки оё сабт мувофиқ вуҷуд дорад. Агар бошад, IP-роҳиро бармегардонад.
  3. Пурсиши рекурсивӣ: Агар не, кеш пурсиш ба яке аз серверҳои асосии DNS мефиристад.
  4. Вазифа: Сервери асосӣ IP-ро намедонад, аммо ба сервери сатҳи боло (Top-Level Domain, TLD) барои .com, .org ва ғайра ишора мекунад.
  5. Вазифа: Сервери TLD ба сервери ҳуқуқӣ барои домени мушаххас (google.com) ишора мекунад.
  6. Ҳал: Сервери ҳуқуқӣ сабти A (Address) ё AAAA (IPv6 Address) барои номи доменро меёбад ва IP-ро бармегардонад.
  7. Кеш ва ҷавоб: Кеш ҷавобро нигоҳ медорад ва IP-ро ба муштарӣ мефиристад.
  8. Пайвастшавӣ: Браузер бо сервер тавассути 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-ҳои рақамӣ иваз кунанд.