IP Address និង DNS

មាតិកា

  1. កុំព្យូទ័រមិនស្គាល់ឈ្មោះទេ
  2. IP Address
  3. IPv4 និង IPv6
  4. Private Address និង localhost
  5. DNS៖ សៀវភៅទូរស័ព្ទរបស់អ៊ីនធឺណិត
  6. តាមដានការស្វែងរកមួយ
  7. DNS Record ដែលអ្នកនឹងប្រើពិតប្រាកដ
  8. Caching និង «Propagation»
  9. សាកល្បងដោយខ្លួនឯង

1. កុំព្យូទ័រមិនស្គាល់ឈ្មោះទេ

អ្នកវាយ dara-sok.github.io។ ប៉ុន្តែបណ្តាញដែលដឹកជញ្ជូន request របស់អ្នក មិនយល់ពីឈ្មោះសោះ។ Router — ឧបករណ៍ដែលបញ្ជូនទិន្នន័យពីបណ្តាញមួយទៅបណ្តាញមួយទៀត — យល់តែ លេខ ប៉ុណ្ណោះ។

ដូច្នេះ មុនពេល browser របស់អ្នកអាចផ្ញើ request សូម្បីតែមួយ byte វាត្រូវឆ្លើយសំណួរមួយ៖ តើលេខអ្វីជារបស់ឈ្មោះនេះ? លេខនោះគឺជា IP address ហើយប្រព័ន្ធដែលឆ្លើយសំណួរនោះគឺ DNS។ ជំពូកនេះនិយាយអំពីទាំងពីរ។

2. IP Address

IP address សម្គាល់ឧបករណ៍មួយនៅលើបណ្តាញ ដូចដែលអាសយដ្ឋានប្រៃសណីយ៍សម្គាល់ផ្ទះមួយអញ្ចឹង។ IP មកពីពាក្យ Internet Protocol៖ ច្បាប់សម្រាប់របៀបដែលទិន្នន័យត្រូវបានបំបែកជាបំណែកតូចៗហៅថា packet ដែលនីមួយៗមានស្លាកអាសយដ្ឋាន ពី និងអាសយដ្ឋាន ទៅ ហើយត្រូវបានបញ្ជូនពី router មួយទៅ router មួយទៀត រហូតដល់វាទៅដល់គោលដៅ។

អាសយដ្ឋានធម្មតាមួយមើលទៅដូចនេះ៖

185.199.108.153

នោះគឺជាអាសយដ្ឋានមួយក្នុងចំណោមអាសយដ្ឋានដែល GitHub Pages ប្រើ។ គ្រប់ request ទៅកាន់ website របស់អ្នក គឺជាស្ទ្រីមនៃ packet ដែលផ្ញើទៅកាន់លេខមួយដូចនោះ។

អ្នកអាចគិតថាអ៊ីនធឺណិតជាប្រព័ន្ធប្រៃសណីយ៍ដ៏ធំមួយ៖ គ្មាន router ណាមួយដឹងផ្លូវទាំងមូលទេ ប៉ុន្តែនីមួយៗដឹងថាត្រូវផ្ញើ packet ទៅទិសណាបន្ទាប់។ Packet មួយពីភ្នំពេញទៅ server មួយនៅសិង្ហបុរី អាចឆ្លងកាត់ router ដប់ ឬដប់ប្រាំនៅតាមផ្លូវ។

3. IPv4 និង IPv6

អាសយដ្ឋានខាងលើគឺជា IPv4៖ លេខបួនពី 0 ដល់ 255 ដែលបំបែកដោយចំណុច។ លេខនីមួយៗគឺមួយ byte — ដូច្នេះ IPv4 address មួយមាន 4 byte ឬ 32 bit (ចាំ Bits និង Bytes ពី របៀបដែលកុំព្យូទ័រដំណើរការ)។ នោះអនុញ្ញាតឲ្យមានអាសយដ្ឋានប្រហែល 4.3 ពាន់លាន។

ចំនួននោះហាក់ដូចជាច្រើនគ្រប់គ្រាន់នៅទសវត្សរ៍ 1980។ សព្វថ្ងៃនេះមានឧបករណ៍ច្រើនជាងនោះឆ្ងាយណាស់ ហើយពិភពលោកបានអស់ IPv4 address ថ្មីហើយ។ អ្វីដែលជំនួសវាគឺ IPv6 ដែលមានអាសយដ្ឋាន 128-bit សរសេរជា hex៖

2606:50c0:8000::153

IPv6 មានអាសយដ្ឋានគ្រប់គ្រាន់ដើម្បីផ្តល់ឲ្យគ្រាប់ខ្សាច់នីមួយៗនៅលើផែនដីមួយៗ — ច្រើនដងទៀតផង។ (:: គឺជាការសរសេរខ្លីសម្រាប់ «លេខសូន្យជាបន្តបន្ទាប់នៅទីនេះ»។)

អ៊ីនធឺណិតភាគច្រើនឥឡូវនេះនិយាយទាំងពីរ។ ទូរស័ព្ទ ឬ laptop របស់អ្នកប្រហែលជាកំពុងប្រើ IPv6 រួចហើយ ដោយអ្នកមិនបានកត់សម្គាល់។ សម្រាប់ស៊េរីនេះ អ្នកអាចចាត់ទុកវាដូចគ្នា៖ ទាំងពីរគ្រាន់តែជា លេខរបស់កុំព្យូទ័រមួយ។

4. Private Address និង localhost

មិនមែនគ្រប់អាសយដ្ឋានទាំងអស់អាចទៅដល់បានពីអ៊ីនធឺណិតទាំងមូលនោះទេ។ ជួរអាសយដ្ឋានខ្លះជា private ដែលត្រូវបានបម្រុងទុកសម្រាប់ប្រើនៅខាងក្នុងបណ្តាញផ្ទះ ឬការិយាល័យ៖

ជួរកន្លែងដែលអ្នកនឹងឃើញវា
192.168.x.xRouter Wi-Fi នៅផ្ទះភាគច្រើន
10.x.x.xការិយាល័យ, cloud network, Docker
172.16.x.x – 172.31.x.xការិយាល័យ, network លំនាំដើមរបស់ Docker

Laptop របស់អ្នកប្រហែលជាមាន private address ដូចជា 192.168.1.23។ Router របស់អ្នកមាន public address តែមួយ សម្រាប់ផ្ទះទាំងមូល ហើយបញ្ជូនការឆ្លើយតបត្រឡប់ទៅឧបករណ៍ត្រឹមត្រូវនៅខាងក្នុងវិញ។ នោះហើយជាមូលហេតុដែលមនុស្សពីរនាក់នៅផ្ទះខុសគ្នា អាចមាន 192.168.1.23 ដូចគ្នាក្នុងពេលតែមួយ — អាសយដ្ឋានគ្រាន់តែត្រូវតែមិនជាន់គ្នា នៅខាងក្នុង បណ្តាញនីមួយៗប៉ុណ្ណោះ។

បន្ទាប់មក មានអាសយដ្ឋានពិសេសខ្លាំងមួយ៖

127.0.0.1   (IPv4)
::1         (IPv6)

ទាំងពីរមានន័យថា «កុំព្យូទ័រនេះ» ហើយទាំងពីរមានឈ្មោះមួយ៖ localhost។ Packet ដែលផ្ញើទៅ localhost មិនដែលចាកចេញពីម៉ាស៊ីនរបស់អ្នកទេ។ នៅពេលអ្នកបើក http://localhost:3000 នោះ browser របស់អ្នកកំពុងនិយាយជាមួយ server process មួយនៅលើកុំព្យូទ័រដដែល — មិនត្រូវការអ៊ីនធឺណិតទេ។

ស៊េរី បណ្តាញសម្រាប់អ្នកអភិវឌ្ឍន៍ នៅលើ track Backend ចូលកាន់តែស៊ីជម្រៅទៅក្នុងអាសយដ្ឋាន routing និងហេតុអ្វីបានជា server ដែល listen នៅលើ localhost មិនអាចទៅដល់បានពីខាងក្រៅ។

5. DNS៖ សៀវភៅទូរស័ព្ទរបស់អ៊ីនធឺណិត

គ្មាននរណាចង់ចាំ 185.199.108.153 ទេ។ DNS — Domain Name System — អនុញ្ញាតឲ្យយើងប្រើឈ្មោះជំនួសវិញ។ អ្នកផ្តល់ឈ្មោះមួយទៅវា ហើយវាផ្តល់ IP address ត្រឡប់មកអ្នកវិញ។

ផ្នែកដែលឆ្លាតនោះគឺ DNS មិនមែនជាបញ្ជីធំមួយនៅលើកុំព្យូទ័រតែមួយទេ។ វាត្រូវបាន ចែកចាយ ឆ្លងកាត់ server រាប់ពាន់នៅជុំវិញពិភពលោក ដែលរៀបចំជាដើមឈើមួយ ដែលត្រូវគ្នានឹងផ្នែកនៃ domain name ពីជំពូកទី 2៖

                       . (root)
                       │
        ┌──────────────┼──────────────┐
       com             io             kh
        │              │              │
     example        github           gov
                       │
                    dara-sok

គ្មាននរណាត្រូវដឹងអ្វីៗទាំងអស់ទេ។ Root server ដឹងតែថាអ្នកណាជាអ្នកទទួលបន្ទុក .com, .io, .kh ជាដើមប៉ុណ្ណោះ។ Server .io ដឹងតែថាអ្នកណាជាអ្នកទទួលបន្ទុក github.io។ ហើយ server ផ្ទាល់ខ្លួនរបស់ GitHub ដឹងអាសយដ្ឋានសម្រាប់អ្វីៗទាំងអស់នៅក្រោម github.io។ កម្រិតនីមួយៗ ចង្អុលអ្នកទៅកម្រិតបន្ទាប់។

6. តាមដានការស្វែងរកមួយ

នេះគឺជាអ្វីដែលកើតឡើងនៅពេលកុំព្យូទ័ររបស់អ្នកស្វែងរក dara-sok.github.io ជាលើកដំបូង៖

 Your computer ──1──▶ Resolver: "What's dara-sok.github.io?"
                         │
                         ├──2──▶ Root server:  "Ask the .io servers."
                         ├──3──▶ .io server:   "Ask GitHub's name servers."
                         ├──4──▶ GitHub's NS:  "It's 185.199.108.153."
                         │
 Your computer ◀──5───── Resolver: "185.199.108.153"
  1. កុំព្យូទ័ររបស់អ្នកសួរ resolver មួយ៖ DNS server ដែលធ្វើការងារលំបាកជំនួសអ្នក។ ជាធម្មតាវាជារបស់អ្នកផ្តល់សេវាអ៊ីនធឺណិតរបស់អ្នក ឬវាជា resolver សាធារណៈដូចជា 1.1.1.1 របស់ Cloudflare ឬ 8.8.8.8 របស់ Google។ Router Wi-Fi របស់អ្នកប្រាប់កុំព្យូទ័ររបស់អ្នកថាត្រូវប្រើមួយណា។
  2. បើ resolver មិនទាន់ដឹងទេ វាសួរ root server មួយ។
  3. Root server ចង្អុលវាទៅ TLD server សម្រាប់ .io។
  4. Server .io ចង្អុលវាទៅ authoritative name server របស់ GitHub — server ដែលមានចម្លើយពិតប្រាកដ។ ពួកវាឆ្លើយតបជាមួយអាសយដ្ឋាន។
  5. Resolver ប្រគល់ចម្លើយត្រឡប់ទៅកុំព្យូទ័ររបស់អ្នកវិញ។

ស្តាប់ទៅដូចជាការធ្វើដំណើរច្រើនដង ប៉ុន្តែនីមួយៗតូច និងលឿនណាស់។ ហើយវាស្ទើរតែមិនដែលកើតឡើងពេញលេញទេ ព្រោះគ្រប់ជំហាន ចងចាំ ចម្លើយ (ផ្នែកទី 8)។ សូម្បីតែមុនពេលសួរ resolver ក៏ browser និង operating system របស់អ្នកពិនិត្យការចងចាំផ្ទាល់ខ្លួនរបស់វាជាមុនសិនដែរ។

កន្លែងមួយទៀតដែលកុំព្យូទ័ររបស់អ្នកពិនិត្យ៖ hosts file ដែលជា file អត្ថបទធម្មតាមួយនៃឈ្មោះ និងអាសយដ្ឋាន ដែលបដិសេធ DNS នៅលើកុំព្យូទ័ររបស់អ្នកតែប៉ុណ្ណោះ។ នៅលើ macOS, Linux និង WSL វាគឺ /etc/hosts ហើយនៅលើ Windows វាគឺ C:\Windows\System32\drivers\etc\hosts។ បើកវាដោយប្រើ cat — អ្នកប្រហែលជានឹងរកឃើញបន្ទាត់ដែលធ្វើឲ្យ localhost មានន័យថា 127.0.0.1។

7. DNS Record ដែលអ្នកនឹងប្រើពិតប្រាកដ

DNS មិនមែនរក្សាទុកតែ IP address ប៉ុណ្ណោះទេ។ ឈ្មោះនីមួយៗអាចមាន record ជាច្រើននៃប្រភេទខុសៗគ្នា។ នៅពេលអ្នកទិញ domain មួយនៅថ្ងៃណាមួយ អ្នកនឹងរៀបចំពួកវានៅក្នុង dashboard របស់ registrar របស់អ្នក៖

ប្រភេទអ្វីដែលវាប្រាប់ឧទាហរណ៍
AIPv4 address របស់ឈ្មោះនេះexample.com → 185.199.108.153
AAAAIPv6 address របស់ឈ្មោះនេះexample.com → 2606:50c0:8000::153
CNAMEឈ្មោះនេះគឺជាឈ្មោះក្លែង (alias) សម្រាប់ឈ្មោះមួយទៀតwww.example.com → dara-sok.github.io
MXកន្លែងដែលត្រូវបញ្ជូន email សម្រាប់ domain នេះexample.com → mail server
TXTអត្ថបទអ្វីក៏បាន — ជាញឹកញាប់ដើម្បីបញ្ជាក់ថាអ្នកជាម្ចាស់ domain"google-site-verification=…"
NSName server មួយណាដែលទទួលបន្ទុក domain នេះexample.com → ns1.registrar.com

ផ្នែកបន្ថែមនៅចុងបញ្ចប់នៃ Git និង GitHub សម្រាប់អ្នកចាប់ផ្តើម បានលើកឡើងពីការភ្ជាប់ domain ផ្ទាល់ខ្លួនរបស់អ្នកទៅ GitHub Pages។ នេះគឺជារូបរាងរបស់វានៅពីក្រោយឆាក៖ CNAME record មួយដែលចង្អុល www.yourname.com ទៅ <your-username>.github.io ឬ A record ដែលចង្អុល yourname.com ទៅ IP address របស់ GitHub។ ឯកសាររបស់ GitHub រាយតម្លៃពិតប្រាកដ។

8. Caching និង «Propagation»

ការធ្វើការស្វែងរកពេញលេញសម្រាប់គ្រប់ request នឹងយឺត ដូច្នេះគ្រប់ចម្លើយ DNS មកជាមួយ TTL — time to live — គិតជាវិនាទី។ វាប្រាប់ថាអ្នកណាក៏ដោយអាចចងចាំចម្លើយនោះបានរយៈពេលប៉ុន្មាន មុនពេលសួរម្តងទៀត៖

dara-sok.github.io.   3600   IN   A   185.199.108.153
                      └─┬─┘
               remember this for 1 hour

Browser របស់អ្នក operating system របស់អ្នក និង resolver សុទ្ធតែមាន cache ហើយប្រើចម្លើយនោះឡើងវិញរហូតដល់ TTL អស់។ នោះហើយជាមូលហេតុដែលការចូលមើល website ជាលើកទីពីរ ចាប់ផ្តើមលឿនជាងលើកទីមួយ។

វាក៏ជាមូលហេតុដែលថា នៅពេលអ្នកផ្លាស់ប្តូរ DNS record មួយ មនុស្សខ្លះឃើញអាសយដ្ឋានថ្មីភ្លាមៗ ហើយអ្នកផ្សេងទៀតនៅតែឃើញអាសយដ្ឋានចាស់រាប់ម៉ោង។ មនុស្សហៅរឿងនេះថា «រង់ចាំ DNS propagation» ប៉ុន្តែតាមពិតគ្មានអ្វីកំពុងរីករាលដាលទេ — វាគឺជា cache នៅជុំវិញពិភពលោកដែលកំពុងផុតកំណត់បន្តិចម្តងៗ។ ល្បិចទូទៅមួយ៖ បន្ថយ TTL មួយថ្ងៃ មុន ការផ្លាស់ប្តូរដែលបានគ្រោងទុក ដើម្បីឲ្យចម្លើយចាស់ផុតកំណត់យ៉ាងលឿននៅពេលអ្នកធ្វើការផ្លាស់ប្តូរ។

នៅពេល «website ដំណើរការនៅលើទូរស័ព្ទខ្ញុំ ប៉ុន្តែមិនដំណើរការនៅលើ laptop ខ្ញុំ» នោះ DNS cache ដែលហួសសម័យ គឺជារឿងមួយក្នុងចំណោមរឿងដំបូងៗដែលត្រូវសង្ស័យ។

9. សាកល្បងដោយខ្លួនឯង

  1. ស្វែងរកឈ្មោះមួយ។ នៅក្នុង terminal របស់អ្នក សូមដំណើរការ៖

    nslookup dara-sok.github.io
    

    (ប្រើ username ផ្ទាល់ខ្លួនរបស់អ្នក។) អ្នកនឹងឃើញអ្វីមួយដូចនេះ៖

    Server:    192.168.1.1
    Address:   192.168.1.1#53
    
    Non-authoritative answer:
    Name:      dara-sok.github.io
    Address:   185.199.108.153
    Name:      dara-sok.github.io
    Address:   185.199.109.153
    Name:      dara-sok.github.io
    Address:   185.199.110.153
    Name:      dara-sok.github.io
    Address:   185.199.111.153
    

    បន្ទាត់ Server គឺជា resolver របស់អ្នក។ Non-authoritative មានន័យថាចម្លើយនោះមកពី cache របស់ resolver មិនមែនមកផ្ទាល់ពី name server របស់ GitHub ទេ។ ហេតុអ្វីបានជាមានអាសយដ្ឋានបួន? ដើម្បីថា បើ server មួយរបស់ GitHub គាំង ឬរវល់ browser របស់អ្នកអាចសាកល្បងមួយផ្សេងទៀត។

    nslookup ត្រូវបានភ្ជាប់មកជាមួយ Windows, macOS និងប្រព័ន្ធ Linux ភាគច្រើន។ បើវាមិនមាននៅលើ Linux ឬ WSL ទេ សូមដំឡើងវាដោយប្រើ sudo apt install dnsutils។

  2. ប្រៀបធៀប domain។ ស្វែងរក google.com, github.com និង website កម្ពុជាមួយដែលអ្នកប្រើ។ តើមានមួយណាដែលផ្តល់ IPv6 (AAAA) address ផងដែរទេ?

  3. រក private address ផ្ទាល់ខ្លួនរបស់អ្នក។ ដំណើរការ ipconfig (Windows PowerShell), ipconfig getifaddr en0 (macOS) ឬ hostname -I (Linux/WSL)។ វាគួរតែចាប់ផ្តើមដោយ 192.168., 10. ឬ 172.។

  4. អាន hosts file របស់អ្នក។ ដំណើរការ cat /etc/hosts ហើយរកបន្ទាត់ localhost។

ឥឡូវនេះ browser មានអាសយដ្ឋានហើយ។ នៅក្នុងជំពូកបន្ទាប់ វាបើក connection មួយទៅកាន់អាសយដ្ឋាននោះ — ហើយធ្វើឲ្យប្រាកដថាគ្មាននរណាអាចលួចស្តាប់បានទេ។

ទិញកាហ្វេជូនខ្ញុំ

ចូលចិត្តមេរៀននេះមែនទេ? សូមពិចារណាទិញកាហ្វេជូនខ្ញុំមួយកែវ ដើម្បីគាំទ្រការបង្កើតមាតិកាឥតគិតថ្លៃបន្ថែមទៀត!