Networking အခြေခံများ
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 ဆိုပြီး ခွဲခြားနိုင်ပါတယ်။
| Type | Full Name | Coverage | Example |
|---|---|---|---|
| PAN | Personal Area Network | Device အနီးတစ်ဝိုက် | Phone ↔ Laptop Bluetooth |
| LAN | Local Area Network | Home / Office / Building | Home Wi-Fi, Office Network |
| MAN | Metropolitan Area Network | City / Metropolitan Area | City-wide Network |
| WAN | Wide Area Network | Large Geographic Area | Internet |
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 ဖြစ်ပါတယ်။
Setup လုပ်ရလွယ်ပြီး Cable အသုံးနည်းပေမယ့် Backbone ပျက်သွားရင် Network တစ်ခုလုံး ထိခိုက်နိုင်ပါတယ်။
ယနေ့ခေတ် Ethernet LAN တွေမှာတော့ ဒီ Topology ကို မသုံးတော့သလောက် ဖြစ်ပါတယ်။
Ring Topology
Devices တွေကို Ring ပုံစံနဲ့ ချိတ်ထားတဲ့ Topology ဖြစ်ပါတယ်။
Data က Ring တစ်လျှောက် Travel လုပ်ပါတယ်။
Legacy Token Ring Network တွေမှာ တွေ့ရပေမယ့် Modern LAN တွေမှာတော့ အသုံးနည်းပါတယ်။
Star Topology
Devices တစ်ခုချင်းစီကို Central Switch တစ်ခုနဲ့ ချိတ်ထားတဲ့ Topology ဖြစ်ပါတယ်။
Device တစ်ခုရဲ့ Connection ပျက်သွားရင် ကျန် Devices တွေကို မထိခိုက်တာ၊ Troubleshooting လုပ်ရလွယ်တာနဲ့ Expand လုပ်ရလွယ်တာကြောင့် Modern Ethernet LAN တွေမှာ အလွန်အသုံးများပါတယ်။
ဒါပေမယ့် Central Switch ပျက်သွားရင် သူနဲ့ချိတ်ထားတဲ့ Devices တွေရဲ့ Connectivity ထိခိုက်သွားနိုင်ပါတယ်။
Tree Topology
Star Networks တွေကို Hierarchical Structure နဲ့ ထပ်ချိတ်ထားတာကို Tree Topology လို့ ခေါ်ပါတယ်။
Large Office၊ Campus နဲ့ Enterprise Networks တွေမှာ ဒီလို Hierarchical Design ကို တွေ့ရတတ်ပါတယ်။
Mesh Topology
Node တွေကြားမှာ Path အများအပြားရှိအောင် ချိတ်ဆက်ထားတဲ့ Topology ကို Mesh Topology လို့ ခေါ်ပါတယ်။
Full Mesh မှာ Node တစ်ခုချင်းစီက အခြား Node အားလုံးနဲ့ Direct Connection ရှိပါတယ်။
Redundant Paths တွေရှိတဲ့အတွက် Fault Tolerance ကောင်းပေမယ့် Connection အရေအတွက်နဲ့ Complexity ပိုများလာပါတယ်။
Network Communication Types
Network Traffic ကို Destination ပေါ်မူတည်ပြီး အဓိကအားဖြင့် Unicast, Multicast နဲ့ Broadcast ဆိုပြီး တွေ့ရပါတယ်။
Unicast
Sender တစ်ခုက Receiver တစ်ခုဆီ Data ပို့တာကို Unicast လို့ ခေါ်ပါတယ်။
Browser က Web Server ဆီ HTTP Request ပို့တာဟာ Unicast Example တစ်ခု ဖြစ်ပါတယ်။
Multicast
Sender တစ်ခုက Multicast Group တစ်ခုမှာ Join ထားတဲ့ Receivers တွေဆီ Data ပို့တာကို Multicast လို့ ခေါ်ပါတယ်။
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 လို့ ခေါ်ပါတယ်။
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 တွေမှာ အလွန်အသုံးများပါတယ်။
အသုံးများတဲ့ 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 ဖြစ်ပါတယ်။
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
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 ကို အသုံးပြုခဲ့ပါတယ်။
| Class | First Octet | Default Prefix | Default Subnet Mask | Number of Networks |
|---|---|---|---|---|
| A | 1 – 126 | /8 | 255.0.0.0 | 126 |
| B | 128 – 191 | /16 | 255.255.0.0 | 16,384 |
| C | 192 – 223 | /24 | 255.255.255.0 | 2,097,152 |
| D | 224 – 239 | - | - | - |
| E | 240 – 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 သုံးခုရှိပါတယ်။
| Class | Range | CIDR |
|---|---|---|
| A | 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 |
| B | 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 |
| C | 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 |
Home Network တစ်ခုမှာ
Laptop → 192.168.1.10
Phone → 192.168.1.11
Router → 192.168.1.1
လို Private Addresses တွေကို တွေ့ရတတ်ပါတယ်။
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 လို့ ခေါ်ပါတယ်။
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
လိုလည်း ရေးနိုင်ပါတယ်။
| Feature | IPv4 | IPv6 |
|---|---|---|
| Address Size | 32 bits | 128 bits |
| Format | Decimal | Hexadecimal |
| Example | 192.168.1.1 | 2001:db8::1 |
| Address Space | ~4.3 billion | Extremely large |
IPv6 မှာ Address Space အရမ်းများတာကြောင့် IPv4 လို Address Conservation အတွက် NAT ကို မဖြစ်မနေ မှီခိုဖို့ မလိုတော့ပါဘူး။ ဒါပေမယ့် IPv6 Network မှာ NAT လုံးဝမရှိဘူးလို့တော့ မဆိုလိုပါဘူး။
OSI Model
OSI (Open Systems Interconnection) Model ဆိုတာ Network Communication ကို နားလည်လွယ်အောင် Layer 7 ခုခွဲထားတဲ့ Reference Model ဖြစ်ပါတယ်။
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 မှာ စဉ်းစားနိုင်ပါတယ်။
Layer 2 - Data Link
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 ပို့ချင်တယ်ဆိုပါစို့။
ရလာတဲ့ 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 လို့ ခေါ်ပါတယ်။
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 လုပ်ပါတယ်။
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 ကို ပို့နိုင်ပါတယ်။
UDP Protocol ကိုယ်တိုင်က
- Delivery Guarantee
- Ordering Guarantee
- Retransmission
- Connection Setup
မပေးပါဘူး။ ဒါကြောင့် Protocol Overhead နည်းပြီး Latency-sensitive Application တွေအတွက် အသုံးဝင်နိုင်ပါတယ်။
TCP vs UDP
| Feature | TCP | UDP |
|---|---|---|
| Connection | Connection-oriented | Connectionless |
| Reliable Delivery | Yes | Protocol-level guarantee မရှိ |
| Ordering | Yes | Guarantee မရှိ |
| Retransmission | Yes | Built-in မရှိ |
| Overhead | Higher | Lower |
| Data Model | Byte Stream | Datagram |
| Examples | HTTP/1.1, HTTP/2, SSH | DNS 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 လို့ မှတ်နိုင်ပါတယ်။
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 တွေ သုံးထားနိုင်ပါတယ်။
Internet ဆီ Traffic ထွက်တဲ့အခါ Router က Private Address/Port Mapping တွေကို Public-side Address/Port တွေနဲ့ Translate လုပ်နိုင်ပါတယ်။
PAT / NAPT
Home Router တွေမှာ လူအများက NAT လို့ ခေါ်နေတဲ့ Mechanism ဟာ လက်တွေ့မှာ PAT / NAPT ဖြစ်တာများပါတယ်။
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 လုပ်တဲ့အခါ ပိုပြီး အသုံးဝင်မှာ ဖြစ်ပါတယ်။