နားလည်ထားရမယ့် အချက်
Internet ဆိုတာ single thing တစ်ခု မဟုတ်ပါဘူး — device သန်းပေါင်းများစွာကို ချိတ်ဆက်ပေးထားတဲ့ global network of networks ပါ။
Device တစ်ခု ဟာ router ကနေ local network နဲ့ ချိတ်ဆက်ပြီး router ကနေ ISP ဆီကို ချိတ်ဆက်ပါတယ်။ ISP တွေချင်း ချိတ်ဆက်ထားလို့ device တစ်ခုက ကမ္ဘာတစ်ဝှမ်းက server ကို ရောက်နိုင်တာပါ။
- Device — computer, phone, server စတဲ့ network ပေါ်ရှိ endpoint
- Router — device တွေကို local network နဲ့ ချိတ်ဆက်ပေးသူ
- ISP — Internet ဆီကို ချိတ်ဆက်ပေးတဲ့ ကုမ္ပဏီ
- IP Address — device တစ်ခုစီရဲ့ ကိုယ်ပိုင် network လိပ်စာ
- Packet — data ကို ခွဲထားတဲ့ အပိုင်းလေး
Data ကို တစ်ခါတည်း မပို့ပါဘူး — packet အဖြစ် ခွဲပြီး ပို့ပါတယ်၊ destination ရောက်တော့ ပြန်စုစည်းပါတယ်။ Network တစ်ခုလုံးကို data တစ်ခုတည်းက ပိတ်ဆို့မသွားစေဖို့ပါ။
ဒီ lesson က နက်နက်နဲနဲ မသွားပါဘူး
TCP/IP protocol internals, subnetting, routing algorithm တွေက ကိုယ်ပိုင် specialized field တွေပါ — ဒီ lesson မှာ mental model ကိုပဲ ရအောင် ပြသပါတယ်။
- IP Address
- Internet ပေါ်ရှိ device တစ်ခုစီရဲ့ ကိုယ်ပိုင် network လိပ်စာ — postal address နဲ့ ဆင်တူပြီး data ဘယ်ဆီ ပို့ရမယ်ဆိုတာ ခွဲခြားပေးပါတယ်။
- Packet
- Internet ပေါ်ပို့တဲ့ data ကို ခွဲထားတဲ့ အပိုင်းလေး — destination ရောက်တဲ့အခါ sequence information သုံးပြီး ပြန်စုစည်းပါတယ်။
A REQUEST'S ROUND TRIP
----------------------
YOUR COMPUTER
|
v (request leaves as packets)
ROUTER
|
v
ISP
|
v
INTERNET (many networks in between)
|
v
SERVER
|
v (response comes back the same way)
... ISP -> ROUTER -> YOUR COMPUTER
|
v
RESPONSE ARRIVESလက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
code ဥပမာမှာ message string တစ်ခုကို packet လေးတွေအဖြစ် ခွဲပြီး arrival order ရောရော ရောက်လာတဲ့အခါ ပြန်စုစည်းတဲ့ function ကို run ကြည့်ပါမယ်။ Real networking မဟုတ်ပါဘူး၊ concept ကို ပြသတဲ့ ဥပမာသက်သက်ပါ။
ခွဲခြမ်းခြင်း
"HELLO FROM THE WEB" ကို 5-character packet 4 ခုအဖြစ် ခွဲလိုက်ပါတယ်၊ packet တစ်ခုစီမှာ sequence number (seq) ပါဝင်ပါတယ်။
ရောစပ်ရောက်ခြင်း
Real network မှာလို sequence order အတိုင်း ရောက်ချင်မှ ရောက်တာမို့ 2, 4, 1, 3 ဆိုတဲ့ order နဲ့ ရောက်လာအောင် simulate လုပ်ထားပါတယ်။
ပြန်စုစည်းခြင်း
seq number အတိုင်း sort လုပ်ပြီး join လုပ်လိုက်ရင် original message အတိုင်း ပြန်ရလာပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
function splitIntoPackets(message, packetSize) {
const packets = [];
for (let i = 0; i < message.length; i += packetSize) {
packets.push({
seq: packets.length + 1,
data: message.slice(i, i + packetSize),
});
}
return packets;
}
function reassemblePackets(packets) {
const ordered = [...packets].sort((a, b) => a.seq - b.seq);
return ordered.map((p) => p.data).join("");
}
const message = "HELLO FROM THE WEB";
const packets = splitIntoPackets(message, 5);
console.log("Original message:", message);
console.log("Packets sent:");
for (const p of packets) {
console.log(` packet #${p.seq}: "${p.data}"`);
}
// Simulate real networks: packets don't always arrive in the order sent.
const arrivalOrder = [2, 4, 1, 3];
const shuffled = arrivalOrder.map((seq) => packets.find((p) => p.seq === seq));
console.log(
"Packets arrived out of order:",
shuffled.map((p) => p.seq).join(", ")
);
const rebuilt = reassemblePackets(shuffled);
console.log("Reassembled message:", rebuilt);
console.log("Matches original:", rebuilt === message);Original message: HELLO FROM THE WEB
Packets sent:
packet #1: "HELLO"
packet #2: " FROM"
packet #3: " THE "
packet #4: "WEB"
Packets arrived out of order: 2, 4, 1, 3
Reassembled message: HELLO FROM THE WEB
Matches original: true၅ မိနစ် စမ်းကြည့်
packetSize ကို 5 ကနေ 3 လို့ ပြောင်းကြည့်ပါ။ packet ဘယ်နှစ်ခု ထွက်လာမလဲ၊ arrivalOrder array ကို packet အရေအတွက်နဲ့ ကိုက်ညီအောင် ပြင်ဆင်ပေးဖို့ လိုအပ်တာကိုပါ သတိပြုပါ။
သတိလေးတစ်ချက်
Internet ကို single network တစ်ခုအနေနဲ့ ထင်တတ်ကြတယ် — တကယ်တော့ network ထောင်ပေါင်းများစွာရဲ့ ပေါင်းစည်းမှုပါ
Data ကို packet အဖြစ် ခွဲပြီး sequence order မတိုင်း ရောက်နိုင်တာကို သတိမပြုတတ်ကြတယ်
MDN Web Docs — How does the Internet work? — How the Web Works