Networking အခြေခံများ

25 minutes to read
38 views

Networking အခြေခံများ

Networking ဆိုတာ ဘာလဲ?

Networking ဆိုတာ Computer၊ Server၊ Phone နဲ့ အခြား Devices တွေကို တစ်ခုနဲ့တစ်ခု ချိတ်ဆက်ပြီး Data တွေ အပြန်အလှန် ပို့နိုင်အောင် လုပ်ပေးတဲ့ System ဖြစ်ပါတယ်။

ဥပမာ Laptop ကနေ Website တစ်ခုကို ဖွင့်လိုက်တဲ့အခါ Browser က Web Server ဆီ Request ပို့ရပါတယ်။

Laptop
   │
   ▼
Router
   │
   ▼
Internet
   │
   ▼
Web Server

ဒီ Process တစ်ခုလုံး အလုပ်လုပ်နိုင်ဖို့

  • IP Address
  • Router
  • DNS
  • TCP / UDP
  • Port
  • Routing
  • HTTP / HTTPS

စတဲ့ Networking Concepts တွေ ပါဝင်နေပါတယ်။

Backend Developer၊ DevOps Engineer ဒါမှမဟုတ် Cloud Engineer တစ်ယောက်အနေနဲ့ Application နှစ်ခု Network ကနေ ဘယ်လို Communication လုပ်တယ်ဆိုတာ နားလည်ထားဖို့ Networking Fundamentals က အရေးကြီးပါတယ်။


Network Area Types

Network တွေကို Coverage Area ပေါ်မူတည်ပြီး PAN, LAN, MAN နဲ့ WAN ဆိုပြီး ခွဲခြားနိုင်ပါတယ်။

TypeFull NameCoverageExample
PANPersonal Area NetworkDevice အနီးတစ်ဝိုက်Phone ↔ Laptop Bluetooth
LANLocal Area NetworkHome / Office / BuildingHome Wi-Fi, Office Network
MANMetropolitan Area NetworkCity / Metropolitan AreaCity-wide Network
WANWide Area NetworkLarge Geographic AreaInternet
Rendering diagram...

PAN - Personal Area Network

လူတစ်ယောက်ရဲ့ Devices တွေကို အနီးကပ် ချိတ်ဆက်ထားတဲ့ Network ကို PAN လို့ ခေါ်ပါတယ်။

Phone ← Bluetooth → Laptop

Bluetooth Device တွေဟာ PAN ရဲ့ အသုံးများတဲ့ Example တစ်ခု ဖြစ်ပါတယ်။

LAN - Local Area Network

Home၊ Office၊ School ဒါမှမဟုတ် Building တစ်ခုလို Area အနည်းငယ်အတွင်း Devices တွေ ချိတ်ဆက်ထားတဲ့ Network ကို LAN လို့ ခေါ်ပါတယ်။

Laptop ──┐
         │
Phone ───┼── Router / Switch
         │
PC ──────┘

Home Wi-Fi Network နဲ့ Office Ethernet Network တွေဟာ LAN Examples တွေ ဖြစ်ပါတယ်။

MAN - Metropolitan Area Network

City တစ်ခုလို LAN ထက်ပိုကျယ်တဲ့ Geographic Area ကို ချိတ်ဆက်ထားတဲ့ Network ကို MAN လို့ ခေါ်ပါတယ်။

ဥပမာ City တစ်ခုအတွင်းမှာရှိတဲ့ Organization ရဲ့ Building အများအပြားကို Network တစ်ခုနဲ့ ချိတ်ထားတာမျိုး ဖြစ်ပါတယ်။

WAN - Wide Area Network

City ဒါမှမဟုတ် Country တစ်ခုထက်ပိုပြီး Geographic Area အကျယ်ကြီးကို ချိတ်ဆက်ထားတဲ့ Network ကို WAN လို့ ခေါ်ပါတယ်။

WAN ရဲ့ အကြီးဆုံး Example ကတော့ Internet ဖြစ်ပါတယ်။


Network Topology

Network ထဲမှာ Devices တွေကို ဘယ်လို Structure နဲ့ ချိတ်ဆက်ထားလဲဆိုတာကို Network Topology လို့ ခေါ်ပါတယ်။

Topology ရွေးချယ်မှုက

  • Reliability
  • Scalability
  • Cost
  • Performance
  • Fault Tolerance

တို့အပေါ် သက်ရောက်နိုင်ပါတယ်။

Bus Topology

Devices အားလုံးကို Shared Backbone Cable တစ်ကြောင်းနဲ့ ချိတ်ထားတဲ့ Topology ဖြစ်ပါတယ်။

Rendering diagram...

Setup လုပ်ရလွယ်ပြီး Cable အသုံးနည်းပေမယ့် Backbone ပျက်သွားရင် Network တစ်ခုလုံး ထိခိုက်နိုင်ပါတယ်။

ယနေ့ခေတ် Ethernet LAN တွေမှာတော့ ဒီ Topology ကို မသုံးတော့သလောက် ဖြစ်ပါတယ်။

Ring Topology

Devices တွေကို Ring ပုံစံနဲ့ ချိတ်ထားတဲ့ Topology ဖြစ်ပါတယ်။

Rendering diagram...

Data က Ring တစ်လျှောက် Travel လုပ်ပါတယ်။

Legacy Token Ring Network တွေမှာ တွေ့ရပေမယ့် Modern LAN တွေမှာတော့ အသုံးနည်းပါတယ်။

Star Topology

Devices တစ်ခုချင်းစီကို Central Switch တစ်ခုနဲ့ ချိတ်ထားတဲ့ Topology ဖြစ်ပါတယ်။

Rendering diagram...

Device တစ်ခုရဲ့ Connection ပျက်သွားရင် ကျန် Devices တွေကို မထိခိုက်တာ၊ Troubleshooting လုပ်ရလွယ်တာနဲ့ Expand လုပ်ရလွယ်တာကြောင့် Modern Ethernet LAN တွေမှာ အလွန်အသုံးများပါတယ်။

ဒါပေမယ့် Central Switch ပျက်သွားရင် သူနဲ့ချိတ်ထားတဲ့ Devices တွေရဲ့ Connectivity ထိခိုက်သွားနိုင်ပါတယ်။

Tree Topology

Star Networks တွေကို Hierarchical Structure နဲ့ ထပ်ချိတ်ထားတာကို Tree Topology လို့ ခေါ်ပါတယ်။

Rendering diagram...

Large Office၊ Campus နဲ့ Enterprise Networks တွေမှာ ဒီလို Hierarchical Design ကို တွေ့ရတတ်ပါတယ်။

Mesh Topology

Node တွေကြားမှာ Path အများအပြားရှိအောင် ချိတ်ဆက်ထားတဲ့ Topology ကို Mesh Topology လို့ ခေါ်ပါတယ်။

Full Mesh မှာ Node တစ်ခုချင်းစီက အခြား Node အားလုံးနဲ့ Direct Connection ရှိပါတယ်။ Mesh topology: six devices fully interconnected

Redundant Paths တွေရှိတဲ့အတွက် Fault Tolerance ကောင်းပေမယ့် Connection အရေအတွက်နဲ့ Complexity ပိုများလာပါတယ်။


Network Communication Types

Network Traffic ကို Destination ပေါ်မူတည်ပြီး အဓိကအားဖြင့် Unicast, Multicast နဲ့ Broadcast ဆိုပြီး တွေ့ရပါတယ်။

Unicast

Sender တစ်ခုက Receiver တစ်ခုဆီ Data ပို့တာကို Unicast လို့ ခေါ်ပါတယ်။

Rendering diagram...

Browser က Web Server ဆီ HTTP Request ပို့တာဟာ Unicast Example တစ်ခု ဖြစ်ပါတယ်။

Multicast

Sender တစ်ခုက Multicast Group တစ်ခုမှာ Join ထားတဲ့ Receivers တွေဆီ Data ပို့တာကို Multicast လို့ ခေါ်ပါတယ်။

Rendering diagram...

Routing Protocol နဲ့ Network Distribution System တချို့မှာ Multicast ကို အသုံးပြုပါတယ်။

ဒီနေရာမှာ ပြောစရာရှိတာက Video Streaming Service တစ်ခုဟာ User အများကြီးကို Video ပို့နေတယ်ဆိုတိုင်း IP Multicast သုံးတယ်လို့ မဆိုလိုပါဘူး။ Internet Streaming Service အများစုဟာ Unicast Connection တွေကို အသုံးပြုကြပါတယ်။

Broadcast

Sender တစ်ခုက Local Broadcast Domain ထဲမှာရှိတဲ့ Devices အားလုံးဆီ Traffic ပို့တာကို Broadcast လို့ ခေါ်ပါတယ်။

Rendering diagram...

ARP Request နဲ့ DHCP Discovery တို့ဟာ IPv4 Broadcast ကို အသုံးပြုတဲ့ Examples တွေ ဖြစ်ပါတယ်။

Router တွေက ပုံမှန်အားဖြင့် Layer 2 Broadcast Traffic ကို Network တစ်ခုကနေ နောက် Network တစ်ခုဆီ Forward မလုပ်ပါဘူး။


Network Cables

Physical Network တစ်ခုမှာ Data ပို့ဖို့အတွက် Transmission Medium လိုပါတယ်။

အသုံးများတဲ့ Wired Media တွေကတော့

  • Twisted Pair
  • Coaxial
  • Fiber Optic

တို့ ဖြစ်ပါတယ်။

Twisted Pair Cable

Copper Wire Pair တွေကို Twist လုပ်ထားတဲ့ Cable ဖြစ်ပြီး Ethernet LAN တွေမှာ အလွန်အသုံးများပါတယ်။

Rendering diagram...

အသုံးများတဲ့ Category တွေကတော့

Cat5e
Cat6
Cat6A

တို့ ဖြစ်ပါတယ်။ Twisted Pair ကို အဓိကအားဖြင့်

UTP (Unshielded Twisted Pair) - Additional Shield မပါဘူး။

STP (Shielded Twisted Pair) - Electromagnetic Interference လျှော့ချဖို့ Shield ပါပါတယ်။

ဆိုပြီး ခွဲခြားနိုင်ပါတယ်။

Coaxial Cable

Central Conductor တစ်ခုကို Insulation နဲ့ Shield တွေ ဝန်းရံထားတဲ့ Cable ဖြစ်ပါတယ်။

Rendering diagram...

Cable TV၊ Broadband System တချို့နဲ့ Legacy Ethernet တွေမှာ အသုံးပြုခဲ့ပါတယ်။

Fiber Optic Cable

Electrical Signal အစား Light ကို အသုံးပြုပြီး Data ပို့တဲ့ Cable ဖြစ်ပါတယ်။

Fiber ဟာ High Bandwidth နဲ့ Long-distance Communication အတွက် အလွန်အသုံးဝင်ပါတယ်။ အဓိကအားဖြင့်

Single-mode Fiber (SMF) - Long Distance အတွက် အသုံးများပါတယ်။

Multi-mode Fiber (MMF) - Shorter Distance၊ Building နဲ့ Data Center Environment တွေမှာ အသုံးများပါတယ်။


IP Address

IP Address ဆိုတာ ဘာလဲ?

IP Address ဆိုတာ IP Network ပေါ်မှာ Interface တစ်ခုကို Address လုပ်ဖို့ အသုံးပြုတဲ့ Logical Address ဖြစ်ပါတယ်။

192.168.1.50
Rendering diagram...

Network ပေါ်မှာ Packet တစ်ခု ပို့တဲ့အခါ Source IP နဲ့ Destination IP ကို အသုံးပြုပြီး ဘယ်ကလာတယ်၊ ဘယ်ကိုသွားမယ်ဆိုတာ သတ်မှတ်နိုင်ပါတယ်။

IP Address ကို Device တစ်ခုရဲ့ အမြဲတမ်း Unique ID လို့ မယူဆသင့်ပါဘူး။ Device တစ်ခုမှာ Interface အများကြီးရှိနိုင်သလို IP Address ကလည်း DHCP၊ Network ပြောင်းခြင်း စတာတွေကြောင့် ပြောင်းနိုင်ပါတယ်။


IPv4

IPv4 Address တစ်ခုမှာ 32 bits ပါပါတယ်။ ပုံမှန်အားဖြင့် 8-bit Octet လေးခုကို Dot နဲ့ခွဲပြီး ရေးပါတယ်။

192.168.1.50

192       168       1         50
 ↓         ↓        ↓          ↓
8 bits    8 bits   8 bits     8 bits

Total = 32 bits

Binary အနေနဲ့

192.168.1.50

11000000.10101000.00000001.00110010

ဖြစ်ပါတယ်။ Octet တစ်ခုမှာ 8 bits ရှိတဲ့အတွက်

00000000 → 0
11111111 → 255

အထိ Represent လုပ်နိုင်ပါတယ်။


Network Part နဲ့ Host Part

IPv4 Address တစ်ခုကို Network Part နဲ့ Host Part ဆိုပြီး စဉ်းစားနိုင်ပါတယ်။

192.168.1.50/24

မှာ /24 ဆိုတာ ပထမဆုံး 24 bits က Network Prefix ဖြစ်တယ်လို့ ဆိုလိုပါတယ်။

192.168.1.50/24

Network Part       Host Part
192.168.1          50

ဒီ Network ရဲ့ Network Address က

192.168.1.0/24

ဖြစ်ပါတယ်။

ဘယ်အပိုင်းက Network ဖြစ်ပြီး ဘယ်အပိုင်းက Host ဖြစ်တယ်ဆိုတာကို အခုခေတ် Network တွေမှာ IP Class နဲ့မဟုတ်ဘဲ CIDR Prefix / Subnet Mask နဲ့ သတ်မှတ်ပါတယ်။


Subnet Mask

Subnet Mask က IPv4 Address ထဲမှာ Network Prefix နဲ့ Host Portion ကို ခွဲသတ်မှတ်ဖို့ အသုံးပြုပါတယ်။

IP Address
192.168.1.50

Subnet Mask
255.255.255.0

Binary ပြောင်းကြည့်ရင်

11111111.11111111.11111111.00000000

ဖြစ်ပါတယ်။ 1 ဖြစ်နေတဲ့ 24 bits က Network Prefix ဖြစ်တဲ့အတွက်

255.255.255.0

=

/24

လို့ ရေးနိုင်ပါတယ်။ ဒီလို Slash နဲ့ရေးတဲ့ပုံစံကို CIDR Notation လို့ ခေါ်ပါတယ်။


IP Address Classes

IPv4 ရဲ့ အစောပိုင်းမှာ Network Size ပေါ်မူတည်ပြီး Class A, B, C ဆိုတဲ့ Classful Addressing ကို အသုံးပြုခဲ့ပါတယ်။

ClassFirst OctetDefault PrefixDefault Subnet MaskNumber of Networks
A1 – 126/8255.0.0.0126
B128 – 191/16255.255.0.016,384
C192 – 223/24255.255.255.02,097,152
D224 – 239---
E240 – 255---

Class A ရဲ့ First Octet မှာ 127 မပါတာက 127.0.0.0/8 ကို Loopback အတွက် သီးသန့် Reserved လုပ်ထားလို့ ဖြစ်ပါတယ်။

ဒါပေမယ့် Modern Networking မှာ Classful Addressing ကို Network Design အတွက် မသုံးတော့ဘဲ CIDR (Classless Inter-Domain Routing) ကို အသုံးပြုပါတယ်။ ဒါကြောင့်

10.0.0.0/16
10.0.1.0/24
10.0.1.0/26

လို Prefix Length ကို ကြည့်ပြီး Network Size ကို ဆုံးဖြတ်တာက ပိုအရေးကြီးပါတယ်။


Private IP နဲ့ Public IP

IPv4 မှာ Private Network တွေအတွက် Reserved လုပ်ထားတဲ့ Address Ranges သုံးခုရှိပါတယ်။

ClassRangeCIDR
A10.0.0.0 – 10.255.255.25510.0.0.0/8
B172.16.0.0 – 172.31.255.255172.16.0.0/12
C192.168.0.0 – 192.168.255.255192.168.0.0/16

Home Network တစ်ခုမှာ

Laptop → 192.168.1.10
Phone  → 192.168.1.11
Router → 192.168.1.1

လို Private Addresses တွေကို တွေ့ရတတ်ပါတယ်။

Rendering diagram...

Private IP Addresses တွေကို Public Internet ပေါ်မှာ Global Route မလုပ်ပါဘူး။ Public IP Address ကတော့ Internet ပေါ်မှာ Routing လုပ်နိုင်တဲ့ Address ဖြစ်ပါတယ်။

ဒါပေမယ့် Private Range မဟုတ်တဲ့ IPv4 Address တိုင်း Publicly Routable ဖြစ်တယ်လို့တော့ မဆိုနိုင်ပါဘူး။ Loopback၊ Link-local၊ Documentation နဲ့ အခြား Special-purpose Ranges တွေလည်း ရှိပါတယ်။


Loopback Address

IPv4 မှာ

127.0.0.0/8

ကို Loopback အတွက် Reserved လုပ်ထားပါတယ်။ အများဆုံးတွေ့ရတာက

127.0.0.1

ဖြစ်ပါတယ်။

localhost → 127.0.0.1

Loopback Traffic က Physical Network ကို မထွက်ဘဲ Local Host ရဲ့ Network Stack ထဲမှာပဲ ပြန်လည် Handle လုပ်ပါတယ်။ ဒါကြောင့် Local Development Server တွေမှာ

http://127.0.0.1:3000

ဒါမှမဟုတ်

http://localhost:3000

ကို မကြာခဏ တွေ့ရပါတယ်။


Default Gateway

Device တစ်ခုက Destination ကို Local Network ထဲမှာ တိုက်ရိုက် မရောက်နိုင်တဲ့အခါ Packet ကို ပို့ပေးရမယ့် Next-hop Router ကို ပုံမှန်အားဖြင့် Default Gateway လို့ ခေါ်ပါတယ်။

Rendering diagram...

Laptop က Destination Address ကိုကြည့်ပြီး

Same Subnet?
   │
   ├── Yes → Local Network မှာ deliver
   │
   └── No  → Routing Table ကိုကြည့်
                │
                └── Matching route မရှိရင် Default Route

ဆိုပြီး ဆုံးဖြတ်ပါတယ်။

Default Gateway ကို "Network ရဲ့ တံခါးပေါက်" လို့ အလွယ်မှတ်နိုင်ပေမယ့် Technical အရတော့ Routing Table ထဲက Default Route ရဲ့ Next Hop ဖြစ်ပါတယ်။


Subnet မှာ IP ဘယ်လောက်ရှိလဲ?

ဥပမာ

192.168.10.0/24

ဆိုပါစို့။ IPv4 က 32 bits ဖြစ်ပြီး Network Prefix က 24 bits ဖြစ်တဲ့အတွက်

Host Bits

32 - 24 = 8

ဖြစ်ပါတယ်။ ဒါကြောင့် Address အရေအတွက်က

2⁸ = 256

ဖြစ်ပါတယ်။ Traditional IPv4 Subnet တစ်ခုမှာ

Network Address   = 192.168.10.0
First Host        = 192.168.10.1
Last Host         = 192.168.10.254
Broadcast Address = 192.168.10.255

ဖြစ်တဲ့အတွက် ပုံမှန် Host Addresses က

256 - 2 = 254

ရပါတယ်။

2ᴴ - 2 Rule က Traditional IPv4 Subnet တွေအတွက် အသုံးဝင်တဲ့ Basic Rule ဖြစ်ပေမယ့် /31, /32 နဲ့ Cloud Provider-specific Address Reservations လို Special Cases တွေရှိတဲ့အတွက် Universal Rule အဖြစ် မယူဆသင့်ပါဘူး။


IPv6

IPv4 Address Space မလုံလောက်မှုကို ဖြေရှင်းဖို့ IPv6 ကို Design လုပ်ထားပါတယ်။ IPv4 က 32 bits ဖြစ်ပြီး IPv6 က 128 bits ဖြစ်ပါတယ်။

IPv4

192.168.1.1

IPv6 ကတော့

2001:0db8:85a3:0000:0000:8a2e:0370:7334

လို Hexadecimal Format နဲ့ ရေးပါတယ်။ Zero Groups တွေကို Shorten လုပ်နိုင်တဲ့အတွက်

2001:db8:85a3::8a2e:370:7334

လိုလည်း ရေးနိုင်ပါတယ်။

FeatureIPv4IPv6
Address Size32 bits128 bits
FormatDecimalHexadecimal
Example192.168.1.12001:db8::1
Address Space~4.3 billionExtremely large

IPv6 မှာ Address Space အရမ်းများတာကြောင့် IPv4 လို Address Conservation အတွက် NAT ကို မဖြစ်မနေ မှီခိုဖို့ မလိုတော့ပါဘူး။ ဒါပေမယ့် IPv6 Network မှာ NAT လုံးဝမရှိဘူးလို့တော့ မဆိုလိုပါဘူး။


OSI Model

OSI (Open Systems Interconnection) Model ဆိုတာ Network Communication ကို နားလည်လွယ်အောင် Layer 7 ခုခွဲထားတဲ့ Reference Model ဖြစ်ပါတယ်။

Rendering diagram...

Real-world Internet Protocol Stack က OSI Model ကို အတိအကျ Implement လုပ်ထားတာ မဟုတ်ပေမယ့် Networking Concept နဲ့ Troubleshooting ကို Layer အလိုက် စဉ်းစားဖို့ OSI Model က အသုံးဝင်ပါတယ်။


Layer 1 - Physical

Physical Layer က Raw Bits တွေကို Physical Medium ကနေ Transmit လုပ်တာနဲ့ သက်ဆိုင်ပါတယ်။

Data Unit → Bits

ဥပမာ

  • Ethernet Cable
  • Fiber
  • Radio Signal
  • Repeater
  • Hub

Troubleshooting လုပ်တဲ့အခါ

Cable ချိတ်ထားလား?
Link ရှိလား?
Signal ရလား?

လို Problem တွေကို Layer 1 မှာ စဉ်းစားနိုင်ပါတယ်။


Data Link Layer က Local Network Segment ပေါ်မှာ Frame Delivery နဲ့ သက်ဆိုင်ပါတယ်။

Data Unit → Frame

ဒီ Layer မှာ

  • Ethernet
  • MAC Address
  • Switch

စတာတွေကို တွေ့ရပါတယ်။

Switch က MAC Address Table ကို အသုံးပြုပြီး Frame ကို ဘယ် Port ကနေ Forward လုပ်ရမလဲ ဆုံးဖြတ်နိုင်ပါတယ်။


MAC Address

MAC Address က Network Interface ကို Layer 2 မှာ Address လုပ်ဖို့ အသုံးပြုတဲ့ Identifier ဖြစ်ပါတယ်။

00:1A:2B:3C:4D:5E

IPv4 Local Network မှာ Destination IP နဲ့ သက်ဆိုင်တဲ့ MAC Address ကို သိဖို့ ARP ကို အသုံးပြုနိုင်ပါတယ်။


ARP

ARP (Address Resolution Protocol) က Local IPv4 Network မှာ IP Address တစ်ခုနဲ့ သက်ဆိုင်တဲ့ MAC Address ကို ရှာဖို့ အသုံးပြုပါတယ်။

ဥပမာ Laptop က Default Gateway 192.168.1.1 ဆီ Frame ပို့ချင်တယ်ဆိုပါစို့။

Rendering diagram...

ရလာတဲ့ Mapping ကို ARP Cache ထဲမှာ ယာယီ သိမ်းထားနိုင်ပါတယ်။


Layer 3 - Network

Network Layer က မတူညီတဲ့ IP Networks တွေကြား Packet ကို Route လုပ်တာနဲ့ သက်ဆိုင်ပါတယ်။

Data Unit → Packet

အဓိက Concepts တွေက

  • IPv4 / IPv6
  • Routing
  • Router
  • ICMP

တို့ ဖြစ်ပါတယ်။ Router က Routing Table ကိုကြည့်ပြီး

Destination IP
     │
     ▼
Routing Table
     │
     ▼
Next Hop / Interface

ဆိုပြီး Packet ကို ဘယ်ဘက် ဆက်ပို့ရမလဲ ဆုံးဖြတ်ပါတယ်။


Layer 4 - Transport

Transport Layer က Application Process တွေကြား End-to-End Communication ကို Support လုပ်ပေးပါတယ်။ အဓိက Protocol နှစ်ခုက

TCP
UDP

ဖြစ်ပါတယ်။ Port Numbers တွေကိုလည်း Transport-layer Communication မှာ အသုံးပြုပါတယ်။

22    SSH
53    DNS
80    HTTP
443   HTTPS
3306  MySQL
5432  PostgreSQL

Port Number ကို "Application တစ်ခုရဲ့ Address" လို့ အလွယ်မှတ်နိုင်ပါတယ်။ IP Address က Host/Interface ဘက်ကို ညွှန်ပေးပြီး Port က Host ပေါ်မှာ Communication Endpoint ကို ခွဲခြားဖို့ ကူညီပေးပါတယ်။


Layer 5 - Session

Session Layer က Communication Session တစ်ခုကို Establish, Maintain နဲ့ Terminate လုပ်တဲ့ Concept တွေကို Model လုပ်ထားပါတယ်။

Modern TCP/IP Applications တွေမှာ ဒီ Responsibility တွေဟာ Application Protocol နဲ့ Library တွေအတွင်း ရောနှော Implement လုပ်ထားတာများပါတယ်။


Layer 6 - Presentation

Presentation Layer က Data Representation နဲ့ သက်ဆိုင်တဲ့ Concept တွေကို Model လုပ်ထားပါတယ်။

ဥပမာ

  • Encoding
  • Serialization
  • Compression
  • Encryption-related representation

စတာတွေ ဖြစ်ပါတယ်။

TLS ကို "OSI Layer 6 Protocol" လို့ တိတိကျကျ သတ်မှတ်တာထက် OSI Reference Model နဲ့ ရှင်းပြတဲ့အခါ Presentation-related Function တွေနဲ့ ဆက်စပ်တယ်လို့ နားလည်တာ ပိုသင့်တော်ပါတယ်။


Layer 7 - Application

Application Layer က Application တွေအတွက် Network Services နဲ့ Protocols တွေကို ကိုယ်စားပြုပါတယ်။

ဥပမာ

  • HTTP
  • DNS
  • SMTP
  • SSH
  • FTP

တို့ ဖြစ်ပါတယ်။ Browser က Website တစ်ခုကို Request ပို့တဲ့အခါ HTTP လို Application Protocol ကို အသုံးပြုပါတယ်။


Encapsulation

Application Data တစ်ခု Network ကနေ ထွက်သွားတဲ့အခါ Layer တစ်ခုချင်းစီက လိုအပ်တဲ့ Information တွေ ထပ်ထည့်သွားပါတယ်။

Application Data
      │
      ▼
TCP Segment
      │
      ▼
IP Packet
      │
      ▼
Ethernet Frame
      │
      ▼
Bits

Receiver ဘက်မှာတော့ Reverse Direction နဲ့ Process လုပ်ပါတယ်။ ဒီ Process ကို Encapsulation / Decapsulation လို့ ခေါ်ပါတယ်။

Rendering diagram...

TCP

TCP (Transmission Control Protocol) က Connection-oriented Transport Protocol ဖြစ်ပါတယ်။ TCP ဟာ Application ကို

  • Reliable byte stream
  • Ordered Delivery
  • Retransmission
  • Flow Control
  • Congestion Control

စတဲ့ Features တွေ ပေးပါတယ်။


TCP 3-Way Handshake

TCP Connection စတင်ဖို့ Client နဲ့ Server ကြား 3-Way Handshake လုပ်ပါတယ်။

Rendering diagram...

Handshake ပြီးမှ Application Data တွေ ပို့နိုင်ပါတယ်။

TCP ရဲ့ Reliability ဟာ "Packet တစ်ခုချင်းစီကို ACK တစ်ခုစီ ပြန်တယ်" လို့ ရိုးရိုးမယူဆသင့်ပါဘူး။ TCP က Sequence Numbers, Acknowledgements, Retransmission နဲ့ Windowing စတဲ့ Mechanisms တွေကို ပေါင်းစပ်အသုံးပြုပါတယ်။


UDP

UDP (User Datagram Protocol) က Connectionless Transport Protocol ဖြစ်ပါတယ်။ TCP လို Connection Handshake မရှိဘဲ Datagram ကို ပို့နိုင်ပါတယ်။

Rendering diagram...

UDP Protocol ကိုယ်တိုင်က

  • Delivery Guarantee
  • Ordering Guarantee
  • Retransmission
  • Connection Setup

မပေးပါဘူး။ ဒါကြောင့် Protocol Overhead နည်းပြီး Latency-sensitive Application တွေအတွက် အသုံးဝင်နိုင်ပါတယ်။


TCP vs UDP

FeatureTCPUDP
ConnectionConnection-orientedConnectionless
Reliable DeliveryYesProtocol-level guarantee မရှိ
OrderingYesGuarantee မရှိ
RetransmissionYesBuilt-in မရှိ
OverheadHigherLower
Data ModelByte StreamDatagram
ExamplesHTTP/1.1, HTTP/2, SSHDNS queries, DHCP, Real-time traffic

"TCP = Slow, UDP = Fast" လို့ပဲ မှတ်ထားတာ မလုံလောက်ပါဘူး။ Performance က Application Design၊ Network Condition နဲ့ Protocol ပေါ်မူတည်ပါတယ်။ ဥပမာ HTTP/3 က QUIC ကို အသုံးပြုပြီး QUIC က UDP ပေါ်မှာ Run ပေမယ့် Reliability နဲ့ Congestion Control ကို QUIC ကိုယ်တိုင် Implement လုပ်ထားပါတယ်။


DHCP

DHCP (Dynamic Host Configuration Protocol) က Device တစ်ခု Network ကို Join လုပ်တဲ့အခါ လိုအပ်တဲ့ Network Configuration တွေကို Automatically ရရှိအောင် လုပ်ပေးတဲ့ Protocol ဖြစ်ပါတယ်။

DHCP ကနေ

  • IP Address
  • Subnet Mask / Prefix
  • Default Gateway
  • DNS Server

စတာတွေ ရနိုင်ပါတယ်။ DHCP မရှိရင် Device တစ်ခုချင်းစီမှာ Network Configuration ကို Manual Configure လုပ်ရနိုင်ပါတယ်။


DHCP DORA Process

DHCP ရဲ့ Basic Flow ကို DORA လို့ မှတ်နိုင်ပါတယ်။

Rendering diagram...

DORA ဆိုတာ

D → Discover
O → Offer
R → Request
A → Acknowledge

ဖြစ်ပါတယ်။

DHCP က ပေးတဲ့ IP Address ဟာ ပုံမှန်အားဖြင့် Permanent Assignment မဟုတ်ဘဲ Lease Time တစ်ခုနဲ့ ပေးထားတာ ဖြစ်ပါတယ်။


NAT

NAT (Network Address Translation) ဆိုတာ Packet ဖြတ်သန်းတဲ့အခါ IP Address Information ကို Translate လုပ်တဲ့ Mechanism ဖြစ်ပါတယ်။

Home Network တစ်ခုမှာ Devices အများကြီးက Private IPv4 Address တွေ သုံးထားနိုင်ပါတယ်။

Rendering diagram...

Internet ဆီ Traffic ထွက်တဲ့အခါ Router က Private Address/Port Mapping တွေကို Public-side Address/Port တွေနဲ့ Translate လုပ်နိုင်ပါတယ်။


PAT / NAPT

Home Router တွေမှာ လူအများက NAT လို့ ခေါ်နေတဲ့ Mechanism ဟာ လက်တွေ့မှာ PAT / NAPT ဖြစ်တာများပါတယ်။

Rendering diagram...

Router က Port Mapping ကိုပါ အသုံးပြုပြီး Private Devices အများကြီးကို Public IPv4 Address တစ်ခုနဲ့ Internet Access ရအောင် လုပ်နိုင်ပါတယ်။

NAT ကို Security Feature တစ်ခုအဖြစ်ပဲ မမြင်သင့်ပါဘူး။ သူ့ရဲ့ အဓိကအလုပ်က Address Translation ဖြစ်ပြီး Traffic ကို Allow/Block လုပ်တဲ့ Security Policy က Firewall ရဲ့ Responsibility ဖြစ်ပါတယ်။


DNS က ဘယ်နေရာမှာ ပါလဲ?

User တွေက Website တစ်ခုကို IP Address နဲ့ မှတ်ထားတာထက် Domain Name နဲ့ အသုံးပြုကြပါတယ်။

google.com

Computer က Packet ပို့ဖို့တော့ IP Address လိုပါတယ်။ ဒါကြောင့် DNS က

google.com
     │
     ▼
IP Address

ဆိုပြီး Domain Name ကို IP Address နဲ့ Resolve လုပ်ပေးပါတယ်။

DNS ကို သီးခြား Article တစ်ပုဒ်အနေနဲ့ ပိုအသေးစိတ် ဆက်လေ့လာနိုင်ပါတယ်။


Website တစ်ခုဖွင့်တဲ့အခါ Network မှာ ဘာဖြစ်သလဲ?

Networking Concepts တွေအားလုံးကို ချိတ်ကြည့်ရင် ပိုရှင်းပါတယ်။ Browser မှာ

https://example.com

လို့ ရိုက်လိုက်တယ်ဆိုပါစို့။ အကြမ်းဖျင်းအားဖြင့်

1. DNS
   example.com ရဲ့ IP ကို Resolve

           ↓

2. Routing
   Destination ဆီ ဘယ် Route ကနေသွားမလဲ ဆုံးဖြတ်

           ↓

3. Transport
   TCP Connection ဒါမှမဟုတ် QUIC Connection Setup

           ↓

4. TLS
   HTTPS အတွက် Secure Connection Setup

           ↓

5. HTTP
   Request ပို့

           ↓

6. Server
   Response ပြန်ပို့

           ↓

7. Browser
   Response ကို Process လုပ်ပြီး Page Render

ဖြစ်ပါတယ်။

Networking Fundamentals တွေကို သီးသန့် Concept တွေအနေနဲ့ အလွတ်မှတ်တာထက် Browser Request တစ်ခု Network ကနေ ဘယ်လို Travel လုပ်သလဲဆိုတာနဲ့ ချိတ်ပြီး နားလည်တာက ပိုအသုံးဝင်ပါတယ်။


Useful Network Commands

Networking Problem တစ်ခု Troubleshoot လုပ်တဲ့အခါ Command တချို့ကို မကြာခဏ အသုံးပြုရပါတယ်။

ping

Destination Host ဆီ IP Connectivity ရှိမရှိ စမ်းဖို့ ping ကို အသုံးပြုနိုင်ပါတယ်။

ping 8.8.8.8
ping google.com

ping က ICMP Echo Request / Reply ကို အသုံးပြုပါတယ်။

Ping မရတာနဲ့ Destination Down နေတယ်လို့ ချက်ချင်း မဆုံးဖြတ်သင့်ပါဘူး။ Firewall ဒါမှမဟုတ် Network Policy က ICMP ကို Block လုပ်ထားနိုင်ပါတယ်။

nslookup / dig

DNS Resolution စစ်ဖို့ အသုံးပြုနိုင်ပါတယ်။

nslookup example.com

ဒါမှမဟုတ်

dig example.com

Record Type တစ်ခုချင်းစီကိုလည်း Query လုပ်နိုင်ပါတယ်။

dig example.com A
dig example.com AAAA
dig example.com MX
dig example.com TXT

traceroute / tracert

Destination ဆီသွားတဲ့ Network Path မှာ ဘယ် Hops တွေ ဖြတ်သွားလဲ စစ်ဖို့ အသုံးပြုနိုင်ပါတယ်။

Linux / macOS:

traceroute example.com

Windows:

tracert example.com

Hop တစ်ခုမှာ * * * ပေါ်တာနဲ့ အဲ့ဒီ Router Down နေတယ်လို့ မဆိုလိုပါဘူး။ Device တချို့က traceroute အတွက် အသုံးပြုတဲ့ Probe/Response Traffic ကို Filter လုပ်ထားနိုင်ပါတယ်။

IP Configuration

Linux:

ip addr
ip route

macOS:

ifconfig
route -n get default

Windows:

ipconfig
route print

ဒီ Commands တွေက

  • IP Address
  • Network Interface
  • Routing Information
  • Default Gateway

စတာတွေ Troubleshoot လုပ်တဲ့အခါ အသုံးဝင်ပါတယ်။

Listening Ports

Linux မှာ

ss -tuln

လို Command နဲ့ Listening TCP/UDP Sockets တွေကို ကြည့်နိုင်ပါတယ်။

ဥပမာ Backend Server တစ်ခု Port 3000 မှာ တကယ် Listen လုပ်နေလားဆိုတာ စစ်တဲ့အခါ အသုံးဝင်ပါတယ်။


Networking ကို ဘာကြောင့် Developer တွေ နားလည်သင့်လဲ?

Developer တစ်ယောက်ရေးတဲ့ Application အများစုဟာ Network ကနေ တခြား System တစ်ခုခုနဲ့ Communication လုပ်နေပါတယ်။

Frontend က Backend API ကို Request ပို့တယ်။ Backend က Database ကို Connect လုပ်တယ်။ Microservice တစ်ခုက နောက် Microservice တစ်ခုကို Request ပို့တယ်။ Application က Redis၊ Message Broker၊ Object Storage နဲ့ Third-party API တွေကို Connect လုပ်တယ်။

ဒီနေရာတွေမှာ

Connection refused
Connection timeout
DNS resolution failed
TLS handshake failed
Port unreachable
Network unreachable

လို Errors တွေ ကြုံရနိုင်ပါတယ်။

Networking Fundamentals ကို နားလည်ထားရင် Error တစ်ခုဖြစ်တိုင်း "Network Error" လို့ပဲ မမြင်တော့ဘဲ DNS Problem လား၊ Routing Problem လား၊ Port မဖွင့်ထားတာလား၊ Application က Listen မလုပ်တာလား၊ Firewall Block လုပ်ထားတာလားဆိုတာ Layer အလိုက် စဉ်းစားနိုင်ပါတယ်။


Networking Fundamentals Summary

အခု Article မှာ လေ့လာခဲ့တဲ့ Concepts တွေကို ချိတ်ကြည့်ရင်

Application
     │
     │ HTTP / DNS / SSH ...
     ▼
Transport
     │
     │ TCP / UDP + Ports
     ▼
Network
     │
     │ IP + Routing
     ▼
Data Link
     │
     │ Ethernet + MAC
     ▼
Physical
     │
     │ Cable / Fiber / Radio
     ▼
Network

ဆိုတဲ့ Mental Model တစ်ခု ရနိုင်ပါတယ်။

Device တစ်ခု Network Join လုပ်တဲ့အခါ DHCP က IP Configuration ပေးနိုင်ပါတယ်။

Local IPv4 Network မှာ IP ကနေ MAC Mapping လိုရင် ARP ကို အသုံးပြုပါတယ်။

Destination က တခြား Network မှာရှိရင် Router က Routing Table အတိုင်း Packet ကို Forward လုပ်ပါတယ်။

Private IPv4 Network က Internet ကို Access လုပ်တဲ့ Environment တွေမှာ NAT/PAT ပါဝင်နိုင်ပါတယ်။

Domain Name ကို IP Address ပြောင်းဖို့ DNS ကို အသုံးပြုပါတယ်။

Application Communication အတွက် TCP သို့မဟုတ် UDP လို Transport Protocol တွေကို အသုံးပြုနိုင်ပါတယ်။


အကျဉ်းချုပ်အားဖြင့် Networking ဆိုတာ Devices တွေကြား Data Communication ဖြစ်နိုင်အောင် လုပ်ပေးတဲ့ Foundation ဖြစ်ပါတယ်။ IP Address က Packet ရဲ့ Source နဲ့ Destination ကို Address လုပ်ပေးပြီး Router က မတူညီတဲ့ Networks တွေကြား Packet ကို Forward လုပ်ပေးပါတယ်။ TCP နဲ့ UDP က Application Communication အတွက် Transport ကို ပေးပြီး DHCP, ARP, DNS နဲ့ NAT စတဲ့ Protocol နဲ့ Mechanism တွေက Network Communication တစ်ခု အလုပ်လုပ်နိုင်ဖို့ ကိုယ်ပိုင် Role အသီးသီးနဲ့ ပါဝင်ကြပါတယ်။ Developer တစ်ယောက်အနေနဲ့ ဒီ Concepts တွေကို သီးသန့်အလွတ်မှတ်ထားတာထက် Request တစ်ခု Client ကနေ Server ဆီ ဘယ်လိုသွားတယ်ဆိုတဲ့ Flow နဲ့ ချိတ်ဆက်နားလည်ထားရင် API, Cloud, Database နဲ့ Distributed System Problems တွေကို Troubleshoot လုပ်တဲ့အခါ ပိုပြီး အသုံးဝင်မှာ ဖြစ်ပါတယ်။

Related Posts