CSMA/CD — Collision Window ที่ 10 Mbps
ข้อที่รวมทุกอย่างของครึ่งหลังไว้ในข้อเดียว — คำนวณ delay สองตัว แล้ววาดให้เห็นว่าทำไมสองสถานีที่ "ฟังสายก่อนส่ง" แล้วยังชนกันได้ · ตัวเลขที่ต้องได้คือ t_prop = 4 µs และ t_x = 40 ms จุดที่ชนกันจริงคือ t = 3.5 µs ที่ระยะ x = 700 m จาก A และเวลาที่ทั้งคู่รู้ตัวว่าชนคือ 4 µs กับ 7 µs
ครึ่งแรก (2 คะแนน) เป็นการแทนสูตรธรรมดา ใครก็ทำได้ · ครึ่งหลัง (4 คะแนน) ต่างหากที่คนตกกันเยอะ เพราะโจทย์สั่งว่า "แสดงเวลาที่ใช้ทั้งหมด ระบุเวลาที่ชัดเจน" ⇒ ต้องเขียนเวลา 4 µs (C รู้ว่าชน) และ 7 µs (A รู้ว่าชน) ให้ถูก · ตัวเลข 7 µs คือจุดที่แยกคนได้ 4 คะแนนออกจากคนได้ 2 คะแนน
โจทย์จริงจากข้อสอบปีที่แล้ว
Q13 (20 นาที)
สมมติให้การสื่อสารที่ความเร็ว 10 Mbps ระหว่าง A กับ C โดยระยะทางระหว่าง A กับ C อยู่ที่ 800 เมตร โดยมีค่า propagation speed อยู่ที่ 2×10⁸ m/s โดยขนาดของข้อมูลที่ส่งมีขนาด 50000 byte
a. ระบุค่า transmission delay และ propagation delay การส่งข้อมูลจาก A ไปยัง C ในรูป (2 คะแนน)
b. สมมติให้ A เริ่มส่งที่ t₁ = 0; และ C เริ่มส่งที่ t₂ = 3 micro-sec โดยการส่งข้อมูลขนาด 50000 bytes เท่ากัน แสดงรูปแบบการส่งบน CSMA แสดงเวลาที่ใช้ทั้งหมด ระบุเวลาที่ชัดเจน (4 คะแนน)
คิดยังไง (แนวคิดใน 30 วินาที)
คำถามที่แท้จริงของข้อนี้คือ: "C ฟังสายก่อนส่งแล้วนี่ ทำไมยังชนได้?" — คำตอบอยู่ในตัวเลขเดียว
① ฟังสายไม่ได้แปลว่าปลอดภัย
การ sense บอกได้แค่ "ณ จุดที่ฉันยืน ตอนนี้เงียบ" ไม่ได้บอกว่า "ทั้งสายเงียบ" · ข้อมูลในบทที่ 13 ระบุตรง ๆ ว่า B เข้าใจว่าส่งได้ เนื่องจากสัญญาณจาก A ยังมาไม่ถึงจุดที่ B ตรวจสอบ
② สองฝ่ายรู้ตัวคนละเวลา
C รู้ก่อน (ที่ 4 µs — ตอนสัญญาณ A มาถึง) · A รู้ทีหลัง (ที่ 7 µs — สัญญาณ C ออกตอน 3 µs แล้วใช้เวลาเดินทางอีก 4 µs) · ข้อสอบต้องการตัวเลขทั้งสองนี้
③ ช่วงอันตราย = 2 × tprop
กรณีเลวร้ายที่สุดคือ C เริ่มส่งก่อนสัญญาณ A มาถึงเสี้ยววินาที ⇒ A จะรู้ว่าชนช้าที่สุดที่ ≈ 2tprop · นี่คือที่มาของกฎเฟรมต่ำสุด 64 ไบต์ของอีเทอร์เน็ต
สูตร/ขั้นตอนที่ต้องใช้
| สัญลักษณ์ | ความหมาย | หน่วย | ค่าในโจทย์นี้ |
|---|---|---|---|
d | ระยะทางระหว่าง A กับ C | เมตร | 800 m |
v | Propagation speed — ความเร็วที่สัญญาณวิ่งในสาย | m/s | 2×10⁸ m/s |
R | Bit rate ของช่องสัญญาณ | bps | 10 Mbps = 10×10⁶ bps |
L | ขนาดข้อมูล — โจทย์ให้เป็นไบต์ ต้องคูณ 8 | ไบต์ → บิต | 50000 B = 400000 บิต |
tprop | เวลาที่สัญญาณเดินทางจาก A ถึง C | วินาที | 4 µs |
tx | เวลาที่ใช้ยิงบิตทั้งเฟรมขึ้นสาย | วินาที | 40 ms |
Tslot | Slot time ของ Ethernet 10 Mbps (ใช้ในสูตร backoff) | วินาที | 51.2 µs = 512 บิต = 64 ไบต์ |
โจทย์ให้ 50000 byte แต่ bit rate เป็น bps ⇒ ต้องแปลงเป็นบิตก่อน · ถ้าลืมคูณ 8 จะได้ 50000/10×10⁶ = 5 ms ซึ่งผิดไป 8 เท่า และทำให้ข้อ b. ผิดตามไปทั้งข้อ · เขียนบรรทัด "50000 B × 8 = 400,000 บิต" ให้เห็นชัด ๆ ในกระดาษ — บรรทัดนี้อย่างเดียวก็มีคะแนนของมัน
เฉลยละเอียดทีละขั้น
ข้อ a. — transmission delay และ propagation delay (2 คะแนน)
-
Propagation delay — ระยะทางหารความเร็วสัญญาณ
tprop = d / v = 8002 × 108 = 4 × 10−6 s = 4 µs -
Transmission delay — แปลงไบต์เป็นบิตก่อน แล้วหารด้วย bit rate
L = 50000 ไบต์ × 8 = 400,000 บิต
tx = L / R = 400,00010 × 106 = 0.04 s = 40 ms -
เวลาที่บิตสุดท้ายไปถึง C = tx + tprop = 40 ms + 4 µs = 40.004 ms
โจทย์เขียนว่า "ในรูป" ⇒ ต้องมีรูป ไม่ใช่แค่ตัวเลข · รูปที่ถูกต้องต้องแยกให้เห็นชัดว่า tx คือ "แถบหนา" บนเส้นตั้งของ A (ช่วงที่ A กำลังยิงบิตขึ้นสาย) ส่วน tprop คือ "ความเอียง" ของลูกศร (ช่วงที่สัญญาณเดินทาง) · และต้องเขียนกำกับว่า รูปไม่ได้วาดตามสเกล เพราะ tprop เล็กกว่า tx ถึงหมื่นเท่า จะวาดตามสัดส่วนจริงไม่ได้
ข้อ b. — เกิดอะไรขึ้นเมื่อ A ส่งที่ 0 และ C ส่งที่ 3 µs (4 คะแนน)
ก่อนอื่นตอบคำถามสำคัญ: ทำไม C ถึงเริ่มส่งได้ทั้งที่ A ส่งอยู่
| เวลา | เกิดอะไรขึ้น | ที่มาของตัวเลข |
|---|---|---|
| 0 | A ฟังสาย — ว่าง ⇒ A เริ่มส่ง | โจทย์ให้ t₁ = 0 |
| 2 µs | สัญญาณของ A เดินทางมาถึงกึ่งกลางสาย (400 m) | 400 / 2×10⁸ |
| 3 µs | C ฟังสาย — ยังเงียบ (สัญญาณ A จะมาถึงตอน 4 µs) ⇒ C เริ่มส่ง ⇒ เกิดการชนกัน | โจทย์ให้ t₂ = 3 µs |
| 3.5 µs | 💥 เกิดการชนกันจริง — หน้าคลื่นของทั้งสองสถานีเจอกันที่ตำแหน่ง x = 700 เมตรจาก A (A วิ่งมา 700 m · C วิ่งมา 100 m) | 2×10⁸·t = 800 − 2×10⁸(t−3µs)⇒ 4×10⁸t = 1400 ⇒ t = 3.5 µsx = 2×10⁸ × 3.5×10⁻⁶ = 700 m |
| 4 µs | C รู้ว่าชน (สัญญาณของ A มาถึง C) ⇒ C หยุดส่งส่วนที่เหลือของเฟรม แล้วยิง jam signal | tprop = 4 µs |
| 7 µs | A รู้ว่าชน (สัญญาณของ C ที่ออกตอน 3 µs เดินทางถึง A) ⇒ A หยุดส่ง แล้วยิง jam signal | t₂ + tprop = 3 + 4 |
| 7 µs | A ส่งไปได้แค่ 7 µs × 10 Mbps = 70 บิต ≈ 8.75 ไบต์ — ยังห่างจาก 64 ไบต์มาก จึงยังส่งอยู่และตรวจจับได้ทัน | นี่คือเหตุผลของกฎ 64 ไบต์ |
| — จากนั้นทั้งคู่เข้าสู่ Exponential Backoff (ดูรายละเอียดที่ Q12) — | ||
หนังสือบอกแค่ว่าเมื่อชนแล้ว "สเตชันหยุดส่งส่วนที่เหลือของเฟรม พร้อมทั้งส่ง jamming signal" โดยไม่ได้ให้ขนาด · ค่ามาตรฐานของ IEEE 802.3 คือ jam = 48 บิต = 4.8 µs ที่ 10 Mbps และ interframe gap = 96 bit times = 9.6 µs · ในห้องสอบให้เขียนกำกับว่าสมมติค่าเหล่านี้ หรือจะละไว้แล้วตอบเวลารวมแบบปัดก็ได้ — สิ่งที่อาจารย์ตรวจแน่ ๆ คือ 4 µs, 7 µs และ 40 ms
เวลาที่ใช้ทั้งหมด (ตอบส่วน "แสดงเวลาที่ใช้ทั้งหมด")
สมมติผลการ backoff รอบแรก (K = 1 ⇒ c ∈ {0, 1}, TB = c × Tslot) ได้ว่า A ได้ c = 0 และ C ได้ c = 1:
| เวลา | เหตุการณ์ | ที่มา |
|---|---|---|
| 4.0 µs | C เริ่มยิง jam signal | ตอนที่ C รู้ว่าชน |
| 7.0 µs | A เริ่มยิง jam signal | ตอนที่ A รู้ว่าชน |
| 8.8 µs | C ยิง jam จบ (4.0 + 4.8) แล้วเข้า backoff · ได้ c = 1 ⇒ ต้องรอ 1 × 51.2 = 51.2 µs | jam 48 บิต |
| 11.8 µs | A ยิง jam จบ (7.0 + 4.8) · ได้ c = 0 ⇒ ไม่ต้องรอ แต่ต้องรอให้สายว่างก่อน | jam 48 บิต |
| 12.8 µs | บิตสุดท้ายของ jam ที่ C ส่ง (ออกตอน 8.8) เดินทางถึง A ⇒ สายว่างที่ฝั่ง A ⇒ A เริ่มส่งเฟรมใหม่ | 8.8 + 4 |
| 16.8 µs | สัญญาณของ A ถึง C ⇒ C ฟังสายแล้วไม่ว่าง ⇒ C ต้องเลื่อนการส่งออกไป (แม้ backoff จะครบตอน 60 µs ก็ตาม) | 12.8 + 4 |
| 40.0128 ms | A ส่งเฟรมจบ (12.8 µs + 40 ms) | + tx |
| 40.0168 ms | บิตสุดท้ายของ A ถึง C ⇒ สายว่างที่ฝั่ง C | + tprop |
| 40.0264 ms | C เริ่มส่งเฟรมของตัวเอง (รอ interframe gap 9.6 µs) | + 9.6 µs |
| 80.0304 ms | บิตสุดท้ายของ C ถึง A ⇒ จบทั้งหมด | 40.0264 + 40 + 0.004 ms |
ถ้าเหลือเวลาน้อย ให้เขียนแค่: "หลัง backoff สถานีหนึ่งได้ส่งก่อน ใช้เวลา tx = 40 ms อีกสถานีต้องรอจนสายว่างแล้วจึงส่ง ใช้อีก 40 ms ⇒ เวลารวม ≈ 80 ms โดยมี overhead จากการชนและ backoff เพียงประมาณ 13 µs ซึ่งน้อยมากเมื่อเทียบกับ 80 ms" — ได้คะแนนเกือบเต็มโดยไม่ต้องไล่ทุกบรรทัด
ทำไม collision window = 2 × tprop
ในโจทย์นี้ C เริ่มส่งที่ 3 µs · แต่ถ้าถามว่า "ช้าที่สุดที่ยังชนได้คือเมื่อไร" คำตอบคือก่อน 4 µs เสี้ยวเดียว (t₂ = tprop − ε) เพราะถ้าถึง 4 µs พอดี C จะได้ยินสัญญาณของ A แล้วและจะไม่ส่ง
สัญญาณของ C จะเดินทางถึง A ที่ t = (tprop − ε) + tprop ≈ 2 tprop ⇒ A อาจไม่รู้ว่าเฟรมของตัวเองชน จนกระทั่งผ่านไปแล้วถึง 2 tprop
และเพราะ CSMA/CD ต้องการให้ผู้ส่ง "ยังส่งอยู่" ตอนที่รู้ว่าชน (ไม่งั้นจะหยุดส่ง + ยิง jam ไม่ได้ และจะไม่มีทางรู้ว่าเฟรมของตัวเองหายเพราะอะไร) จึงต้องมีเงื่อนไข:
แปลงเป็นขนาดเฟรมขั้นต่ำ (tx = 8L/R):
| กรณี | tprop | 2 tprop | ขนาดเฟรมขั้นต่ำที่ต้องใช้ | ผล |
|---|---|---|---|---|
| โจทย์ข้อนี้ (800 m) | 4 µs | 8 µs | 10×10⁶ × 800 / (4 × 2×10⁸) = 10 ไบต์ | เฟรม 50000 ไบต์ ≫ 10 ⇒ ตรวจจับได้สบาย ๆ |
| Ethernet 10 Mbps มาตรฐาน (2500 m) | 12.5 µs | 25 µs | 25 µs × 10 Mbps = 250 บิต = 31.25 ไบต์ | มาตรฐานตั้งไว้ 64 ไบต์ เผื่อ delay ของ repeater |
| กฎที่ต้องจำ | 64 ไบต์ = 512 บิต ที่ 10 Mbps ใช้เวลา 512 / 10×10⁶ = 51.2 µs = slot time ของ Ethernet ⇒ ระยะทางสูงสุดตามทฤษฎี d = 4vL/R = 5,120 เมตร | |||
"เนื่องจากผู้ส่งอาจรู้ว่าเฟรมของตนชนช้าที่สุดที่เวลา 2tprop (collision window) ผู้ส่งจึงต้องยังส่งอยู่ ณ เวลานั้นเพื่อหยุดส่งและยิง jam signal ได้ทัน จึงต้องมีเงื่อนไข tx ≥ 2tprop ⇒ อีเทอร์เน็ตกำหนดขนาดเฟรมต่ำสุด 64 ไบต์ (512 บิต = 51.2 µs ที่ 10 Mbps) และใช้ฟิลด์ Pad เติมให้ครบเมื่อข้อมูลสั้นกว่านั้น (ดู บทที่ 14)"
กับดักที่ทำให้เสียคะแนน
คำตอบผิดที่พบมากที่สุด: tx = 50000 / 10×10⁶ = 5 ms — ผิดไป 8 เท่า · ที่ถูกคือ 50000 × 8 = 400,000 บิต ⇒ tx = 40 ms · วิธีกันพลาด: เขียนหน่วยกำกับทุกตัวเลข เมื่อเห็น ไบต์ / bps จะรู้ทันทีว่าหน่วยไม่ตรงกัน
หลายคนตอบ 4 µs ทั้งสองฝั่ง เพราะจำแค่ว่า "tprop = 4 µs" · ผิด — C รู้ที่ 4 µs (สัญญาณ A ที่ออกตอน 0 มาถึง C) แต่ A รู้ที่ 7 µs เพราะสัญญาณของ C เพิ่งออกตอน 3 µs แล้วใช้เวลาเดินทางอีก 4 µs ⇒ 3 + 4 = 7 · ตัวเลข 7 µs นี้คือหัวใจของ 4 คะแนน
tx = 40 ms ใหญ่กว่า tprop = 4 µs ถึง 10,000 เท่า ⇒ ถ้าวาดตามสัดส่วนจริง ลูกศรจะแบนเป็นเส้นตรงจนมองไม่เห็นการชนเลย · ให้วาดแบบไม่ตามสเกลแล้วเขียนกำกับว่า "not to scale" พร้อมเขียนตัวเลขเวลาจริงกำกับทุกจุด — อาจารย์ตรวจตัวเลข ไม่ได้ตรวจสัดส่วน
C ไม่ได้ทำอะไรผิดเลย — C ฟังสายตามกติกาของ CSMA แล้วพบว่าว่างจริง ๆ ณ ตำแหน่งของตัวเอง · ประเด็นของข้อสอบคือข้อจำกัดเชิงกายภาพของการ sense ไม่ใช่ความผิดของสถานี · คำตอบที่ดีต้องมีประโยคว่า "เนื่องจากสัญญาณจาก A ยังมาไม่ถึงจุดที่ C ตรวจสอบ C จึงเข้าใจว่าสามารถเริ่มส่งเฟรมได้"
โจทย์บอกว่า "แสดงรูปแบบการส่งบน CSMA แสดงเวลาที่ใช้ทั้งหมด" ⇒ รูปที่จบแค่ตรงจุดชนยังไม่ตอบโจทย์ · ต้องเขียนต่อว่า หยุดส่ง → ยิง jam signal → เข้า exponential backoff (c สุ่มจาก {0,1} ในรอบแรก, TB = c × Tslot) → ส่งใหม่ แล้วสรุปเวลารวม ≈ 80 ms
เขียนยังไงให้ได้คะแนนเต็ม
| ✓ | ต้องมีในกระดาษ | เขียนว่าอะไร |
|---|---|---|
| ☐ | บรรทัดแปลงหน่วย | 50000 B × 8 = 400,000 บิต |
| ☐ | สูตรก่อนแทนค่า | tprop = d/v และ tx = L/R — เขียนสูตรเปล่าก่อนเสมอ มีคะแนนของมัน |
| ☐ | คำตอบข้อ a. พร้อมหน่วย | tprop = 4 µs · tx = 0.04 s = 40 ms (ตีกรอบ) |
| ☐ | รูปของข้อ a. | เส้นตั้ง A / C · แถบหนา = tx · ลูกศรเอียง = tprop · เขียน "not to scale" |
| ☐ | เหตุผลที่ C ส่งได้ | "สัญญาณ A จะถึง C ที่ 4 µs แต่ C ส่งที่ 3 µs ⇒ ที่ C ยังเงียบ จึง sense ว่าว่าง" |
| ☐ | จุดที่ชนกันจริง | t = 3.5 µs ที่ x = 700 m จาก A พร้อมแสดงสมการ 2×10⁸t = 800 − 2×10⁸(t−3µs) |
| ☐ | เวลาที่ C รู้ว่าชน | t = tprop = 4 µs |
| ☐ | เวลาที่ A รู้ว่าชน | t = t₂ + tprop = 3 + 4 = 7 µs |
| ☐ | jam signal + backoff | "ทั้งคู่หยุดส่งส่วนที่เหลือ ยิง jam signal แล้วเข้า exponential backoff · c ∈ {0,1}, TB = c × Tslot" |
| ☐ | เวลารวม | "≈ 80 ms (สองเฟรม × 40 ms) + overhead จากการชน ≈ 13 µs" |
| ☐ | Collision window | 2 tprop = 8 µs + ประโยคเชื่อมกับ เฟรมต่ำสุด 64 ไบต์ |
ลำดับการลงกระดาษ (18 นาที)
0:00–3:00 ข้อ a. — แปลงหน่วย เขียนสูตร แทนค่า ตีกรอบคำตอบสองตัว
3:00–6:00 วาดรูปของข้อ a. (เส้นตั้ง 2 เส้น + แถบ tx + ลูกศร tprop + "not to scale")
6:00–11:00 ข้อ b. — วาดสองเส้นตั้ง A/C ใหม่ (หรือเพิ่มเส้นกึ่งกลาง) ลากสัญญาณของ A จาก t = 0 และของ C จาก t = 3 µs ให้เห็นว่าตัดกัน
11:00–14:00 เขียนเวลาสำคัญ 4 จุด: 0 · 3 µs · 4 µs · 7 µs พร้อมคำอธิบายสั้น ๆ ข้างละบรรทัด
14:00–16:30 เขียน jam + backoff + เวลารวม ≈ 80 ms
16:30–18:00 เขียนกล่องสรุป:
collision window = 2tprop = 8 µsและtx ≥ 2tprop ⇒ เฟรมต่ำสุด 64 ไบต์
โจทย์ฝึก 5 ข้อ
ไล่จากง่ายไปยากกว่าของจริงเล็กน้อย · ทุกข้อใช้ v = 2×10⁸ m/s เว้นแต่จะระบุเป็นอย่างอื่น
ข้อ 1 อุ่นเครื่อง — Ethernet 100 Mbps ระยะ 200 เมตร ส่งเฟรมขนาด 1500 ไบต์
(ก) tprop (ข) tx (ค) collision window (ง) CSMA/CD ตรวจจับการชนได้หรือไม่
เฉลยข้อ 1
(ก) Propagation delay
(ข) Transmission delay — อย่าลืมคูณ 8
(ค) collision window = 2 × 1 = 2 µs
(ง) tx = 120 µs ≥ 2tprop = 2 µs ⇒ ตรวจจับได้แน่นอน (เหลือเฟือถึง 60 เท่า) · ผู้ส่งยังส่งอยู่อีกนานตอนที่สัญญาณชนกลับมาถึง
ข้อ 2 ง่าย–กลาง — โจทย์เดิมของ Q13 ทุกอย่าง (10 Mbps · 800 m · 50000 B) แต่คราวนี้ C เริ่มส่งที่ t₂ = 5 µs
(ก) เกิดการชนหรือไม่ เพราะอะไร (ข) C จะทำอย่างไรแทน (ค) ค่า t₂ ที่ใหญ่ที่สุดที่ยังชนได้คือเท่าไร
เฉลยข้อ 2
(ก) ไม่ชน — สัญญาณของ A เดินทางถึง C ที่ t = tprop = 4 µs · เมื่อ C มา sense ที่ t₂ = 5 µs สัญญาณของ A มาถึงก่อนแล้ว 1 µs ⇒ C ได้ยินว่าสายไม่ว่าง
(ข) ตามหลักการของ CSMA แบบ 1-persistent C จะเฝ้าฟังต่อไปจนกว่าสายจะว่าง แล้วจึงส่งทันที ⇒ C ต้องรอจนบิตสุดท้ายของ A ผ่านไป คือที่ tx + tprop = 40.004 ms · (ถ้าเป็น non-persistent จะสุ่มเวลารอแล้วค่อยกลับมา sense ใหม่ — ดู บทที่ 13)
(ค) ชนได้เมื่อ t₂ < tprop ⇒ ค่าที่ใหญ่ที่สุดคือ เกือบ 4 µs (เขียนเป็น t₂ = 4 µs − ε) · ที่ t₂ = 4 µs พอดีคือกรณีขอบ — สัญญาณเพิ่งมาถึงพอดี ในห้องสอบให้เขียนกำกับว่า "ถือว่า C ตรวจพบสัญญาณแล้วจึงไม่ส่ง" · ช่วง 0 ≤ t₂ < 4 µs นี้เองคือ collision window ครึ่งแรก
ข้อ 3 กลาง — Ethernet 10 Mbps ที่ความยาวสายสูงสุดตามมาตรฐาน 2500 เมตร
(ก) collision window เป็นเท่าไร (ข) ขนาดเฟรมขั้นต่ำที่ทฤษฎีต้องการคือกี่ไบต์ (ค) แล้วทำไมมาตรฐานถึงกำหนดไว้ที่ 64 ไบต์
เฉลยข้อ 3
(ก)
(ข) ต้องให้ tx ≥ 2tprop
L (ไบต์) = 250 / 8 = 31.25 ไบต์
(ค) มาตรฐานตั้งไว้ 64 ไบต์ (512 บิต = 51.2 µs) ซึ่งเผื่อไว้ประมาณ 2 เท่า ของค่าทฤษฎี เหตุผล:
- สาย 2500 เมตรของ Ethernet ประกอบด้วย หลายเซกเมนต์ต่อผ่าน repeater ซึ่งแต่ละตัวมี delay ของตัวเอง — ไม่ใช่แค่ delay ของสายเปล่า
- ต้องเผื่อเวลาที่ใช้ยิง jam signal ให้ทุกสถานีได้ยินด้วย
- ตัวเลขกลม ๆ ที่เป็นกำลังของสอง (512 บิต) ทำให้วงจรนับง่าย
ตรวจย้อนกลับ: ถ้ายอมให้เฟรมต่ำสุดเป็น 64 ไบต์ ระยะทางสูงสุดตามทฤษฎีคือ d = 4vL/R = 4 × 2×10⁸ × 64 / 10×10⁶ = 5,120 เมตร ⇒ มาตรฐาน 2,500 เมตรจึงปลอดภัยมาก
ข้อ 4 ต่อยอดจากของจริง — โจทย์เดิมของ Q13 (A ส่งที่ 0, C ส่งที่ 3 µs) แต่ผล backoff สลับกัน: A ได้ c = 1 และ C ได้ c = 0
(ก) ใครได้ส่งก่อน และเริ่มส่งเมื่อไร (ข) อีกฝ่ายเริ่มส่งเมื่อไร (ค) เวลารวมเปลี่ยนไปไหม
(ใช้ jam = 4.8 µs, Tslot = 51.2 µs, interframe gap = 9.6 µs)
เฉลยข้อ 4
ขั้นที่ 1 — เวลารู้ตัวและ jam (เหมือนเดิมทุกประการ)
| รู้ว่าชนที่ | ยิง jam จบที่ | |
|---|---|---|
| C | 4.0 µs | 4.0 + 4.8 = 8.8 µs |
| A | 7.0 µs | 7.0 + 4.8 = 11.8 µs |
ขั้นที่ 2 — backoff · C ได้ c = 0 ⇒ ไม่ต้องรอ · A ได้ c = 1 ⇒ ต้องรอ 1 × 51.2 = 51.2 µs
(ก) C ได้ส่งก่อน — แต่ต้องรอให้สายว่างที่ตำแหน่งของ C ก่อน คือหลังจากบิตสุดท้ายของ jam ที่ A ส่ง (ออกตอน 11.8 µs) เดินทางมาถึง
(ข) A ได้ c = 1 ⇒ backoff ครบตอน 11.8 + 51.2 = 63.0 µs · แต่สัญญาณของ C มาถึง A แล้วตั้งแต่ 15.8 + 4 = 19.8 µs ⇒ A ฟังสายแล้วไม่ว่าง ต้องเลื่อนออกไป
| เวลา | เหตุการณ์ |
|---|---|
| 15.8 µs | C เริ่มส่ง |
| 40.0158 ms | C ส่งจบ (15.8 µs + 40 ms) |
| 40.0198 ms | บิตสุดท้ายของ C ถึง A ⇒ สายว่างที่ฝั่ง A |
| 40.0294 ms | A เริ่มส่ง (รอ interframe gap 9.6 µs) |
| 80.0334 ms | บิตสุดท้ายของ A ถึง C ⇒ จบ |
(ค) เวลารวมแทบไม่เปลี่ยน — 80.0334 ms เทียบกับกรณีเดิม 80.0304 ms ต่างกันแค่ 3 µs · บทเรียน: ใครจะได้ส่งก่อนไม่มีผลต่อเวลารวมเลย เพราะเวลาทั้งหมดถูกครอบงำโดย 2 × tx = 80 ms · ทั้ง collision, jam, backoff รวมกันยังไม่ถึง 0.1% ของเวลาทั้งหมด — ประโยคนี้เขียนใต้รูปได้คะแนน
ข้อ 5 ยากกว่าของจริง — จงหาสูตรทั่วไปในรูปสัญลักษณ์ (bit rate R, ระยะ d, ความเร็วสัญญาณ v, ขนาดเฟรม L ไบต์)
(ก) เงื่อนไขที่ CSMA/CD ตรวจจับการชนได้ (ข) ขนาดเฟรมขั้นต่ำ Lmin (ค) ระยะทางสูงสุด dmax เมื่อ L = 64 ไบต์ · แล้วแทนค่าที่ 10, 100 และ 1000 Mbps (v = 2×10⁸ m/s)
เฉลยข้อ 5
(ก) เงื่อนไข — ผู้ส่งต้องยังส่งอยู่ตอนที่สัญญาณชนกลับมาถึง
(ข) ขนาดเฟรมขั้นต่ำ — จัดรูปหา L
ตรวจกับโจทย์จริง: 10×10⁶ × 800 / (4 × 2×10⁸) = 8×10⁹ / 8×10⁸ = 10 ไบต์ ✓ (เฟรม 50000 ไบต์ ผ่านสบาย)
(ค) ระยะทางสูงสุด — จัดรูปหา d
| ความเร็ว R | dmax ที่ L = 64 ไบต์ | ของจริงเป็นอย่างไร |
|---|---|---|
| 10 Mbps | 4 × 2×10⁸ × 64 / 10×10⁶ = 5,120 m | มาตรฐานตั้งไว้ 2,500 m — เผื่อ repeater |
| 100 Mbps | 512 m | Fast Ethernet จริงจำกัดที่ ~200 m |
| 1000 Mbps | 51.2 m | สั้นเกินไปจนใช้งานไม่ได้! |
ข้อสังเกตที่ทำให้ได้คะแนนพิเศษ: dmax แปรผกผันกับ bit rate ⇒ ยิ่งเร็วยิ่งเดินสายได้สั้น · ที่ Gigabit ระยะเหลือแค่ 51 เมตรซึ่งใช้งานไม่ได้จริง · (ส่วนขยาย: Gigabit Ethernet จึงแก้ด้วยการเพิ่ม carrier extension ให้เฟรมยาวขั้นต่ำ 512 ไบต์ ทำให้ dmax กลับมาเป็น ~410 เมตร · และในทางปฏิบัติทุกวันนี้ทุกอย่างเป็น full-duplex บนสวิตช์ ซึ่งไม่มีการชนเลย จึงไม่ต้องใช้ CSMA/CD อีกต่อไป — หัวข้อนี้ไม่ได้อยู่ในหนังสือ)
เช็คความเข้าใจ
tprop = 4 µs จึงจะถึง A ⇒ 3 + 4 = 7 µs · ส่วน 4 µs คือเวลาที่ C รู้ (สัญญาณของ A ที่ออกตั้งแต่ 0 มาถึง C) · และ 8 µs คือ collision window ซึ่งเป็นค่าสูงสุดในกรณีเลวร้ายที่สุด (ถ้า C ส่งที่ ~4 µs) ไม่ใช่กรณีนี้tprop = 4 µs สัญญาณของ A จะไปถึง C ที่ 4 µs ⇒ ที่เวลา 3 µs ตำแหน่งของ C ยังเงียบสนิทจริง ๆ · นี่คือข้อจำกัดเชิงกายภาพ ไม่ใช่ความผิดของสถานีใด และเป็นเหตุผลที่ CSMA เฉย ๆ ยังไม่พอ ต้องมี CD เพิ่มtx ≥ 2 tprop มีไว้เพื่ออะไร2tprop (collision window) ⇒ ถ้า tx < 2tprop ผู้ส่งจะส่งจบไปแล้ว ก่อนที่จะรู้ว่าชน ⇒ ตรวจจับไม่ได้ เฟรมหายเงียบ ๆ · แปลงเป็นตัวเลขได้ ขนาดเฟรมต่ำสุด 64 ไบต์ (512 บิต = 51.2 µs ที่ 10 Mbps) ซึ่งเป็นที่มาของฟิลด์ Pad ในเฟรม 802.3 · ส่วน ACK เป็นเรื่องของ ARQ ไม่เกี่ยวกับ CSMA/CD- สองสูตร:
tprop = d/v = 800/2×10⁸ = 4 µs·tx = 8L/R = 400,000/10×10⁶ = 40 ms— ห้ามลืมคูณ 8 - สี่เวลาบนรูป: 0 (A ส่ง) · 3 µs (C ส่ง เพราะยังเงียบ) · 4 µs (C รู้ว่าชน) · 7 µs = 3 + 4 (A รู้ว่าชน)
- Collision window = 2tprop = 8 µs ⇐ กรณีเลวร้ายที่สุดคือ C ส่งก่อนสัญญาณ A มาถึงเสี้ยววินาที
- เชื่อมกับ 64 ไบต์:
tx ≥ 2tprop⇒L ≥ Rd/(4v)⇒ Ethernet ตั้งไว้ 64 ไบต์ = 512 บิต = 51.2 µs = slot time - เวลารวม ≈ 80 ms (สองเฟรม × 40 ms) — overhead จากการชนราว 13 µs คือแค่ 0.03%
- อย่าลืมเขียน jam signal → exponential backoff (
c ∈ {0,1},TB = c × Tslot) ต่อท้าย ไม่งั้นไม่ครบตามที่โจทย์สั่ง