OSI Layer 2 of 7

Data Link Layer

เปลี่ยนกระแสบิตจาก Physical Layer ให้เป็น frame ที่มีขอบเขต ส่งระหว่าง node ที่อยู่บนลิงก์เดียวกัน ตรวจความเสียหาย และจัดการการใช้สื่อกลางร่วมกัน รวมถึงการส่งต่อ frame ของ bridge และ LAN switch

🔗
เทียบเท่าใน TCP/IP: Link Layer (รวมกับ Physical) — อ่านฉบับกระชับ →

1บทบาทของ Data Link Layer ใน OSI

หน้าที่ตาม OSI
จัดข้อมูลเป็น frame เพื่อสื่อสารผ่านแต่ละลิงก์ ระบุปลายทางบนลิงก์ ตรวจความเสียหาย และควบคุมการใช้ medium ตาม protocol ที่เลือก บาง protocol มี retransmission หรือ flow control ระดับลิงก์ แต่ไม่ใช่ทุก Data Link protocol จะให้บริการที่เชื่อถือได้ หน้าที่ส่วนนี้มักกระจายอยู่ระหว่าง network adaptor, firmware, device driver และระบบปฏิบัติการ

Physical Layer ส่งเพียงกระแสบิตต่อเนื่องขึ้นมา แต่ชั้นบนต้องการรู้ว่าบิตชุดใดเป็นหน่วยเดียวกัน เริ่มตรงไหน จบตรงไหน มาจากใคร และเสียหายระหว่างทางหรือไม่ Data Link Layer จึงเพิ่มโครงสร้างให้กระแสบิตนั้น คล้ายเปลี่ยนเสียงต่อเนื่องให้เป็นประโยคที่มีต้น มีปลาย และมีข้อมูลกำกับพอให้ผู้รับจัดการต่อได้

คำว่า link ในที่นี้หมายถึงช่วงการสื่อสารหนึ่งช่วงระหว่าง node ที่อยู่ติดกันในเส้นทาง ไม่ได้หมายความว่าต้นทาง application กับปลายทาง application อยู่บนลิงก์เดียวกันเสมอ Packet ที่เดินทางผ่าน router หลายตัวจะถูกบรรจุใน frame ใหม่สำหรับแต่ละลิงก์ IP packet ภายในอาจยังเป็นก้อนเดิมเป็นส่วนใหญ่ แต่ Ethernet header ของลิงก์แรกไม่จำเป็นต้องตามไปถึงลิงก์สุดท้าย

Frame เหมือนรถส่งของประจำช่วง

สมมุติพัสดุต้องเดินทางจากกรุงเทพฯ ไปเชียงใหม่ แต่เปลี่ยนรถที่ศูนย์กระจายสินค้าหลายแห่ง พัสดุด้านในคล้าย Network-layer packet ส่วนรถและใบงานของแต่ละช่วงคล้าย frame เมื่อถึงศูนย์ รถคันเดิมจบหน้าที่ พัสดุถูกนำไปขึ้นรถอีกคันพร้อมใบงานสำหรับช่วงถัดไป

MAC address จึงทำหน้าที่ใกล้กับป้ายว่า “ช่วงนี้ส่งให้ประตูไหน” ไม่ใช่ที่อยู่ปลายทางตลอดเส้นทางแบบเดียวกับ IP address การมอง address โดยไม่ถามว่ามันมีขอบเขตถึงไหน เป็นทางลัดไปสู่ความสับสนที่ได้ผลค่อนข้างดี

บริการของ Data Link Layer ไม่ได้เหมือนกันทุกเทคโนโลยี

ความสามารถคำถามที่ตอบข้อสังเกต
Framingบิตใดอยู่ในหน่วยเดียวกันต้องมีวิธีระบุขอบเขตโดยไม่สับสนกับข้อมูลภายใน
Link addressingframe นี้ส่งให้ interface ใดบนลิงก์บางลิงก์ point-to-point ไม่ต้องเลือกปลายทางหลายตัวเหมือน LAN
Error detectionframe เปลี่ยนไประหว่างทางหรือไม่ตรวจพบแล้วอาจทิ้ง ไม่ได้แปลว่าจะซ่อมหรือส่งใหม่เสมอ
Reliable deliveryถ้า frame หายหรือเสีย จะลองใหม่หรือไม่ใช้ในบางลิงก์ โดยเฉพาะลิงก์ที่ error สูง แต่ Ethernet ปกติไม่ได้ retransmit ที่ MAC layer
Medium accessเมื่อหลาย node ใช้ medium เดียวกัน ใครส่งได้เมื่อใดแนวทางของ shared Ethernet กับ wireless ต่างกันเพราะตรวจ collision ได้ไม่เหมือนกัน
Hop-by-hop ไม่ใช่ End-to-end
การที่ frame ผ่านลิงก์แรกสำเร็จไม่ได้รับประกันว่า packet จะถึงปลายทางสุดท้าย Router ถัดไปอาจไม่มีเส้นทาง ลิงก์ช่วงหลังอาจล่ม หรือ application ปลายทางอาจไม่ตอบ ความสำเร็จระดับ Data Link จึงมีขอบเขตแค่ช่วงที่ protocol นั้นรับผิดชอบ

2Framing — แบ่งบิตเป็นเฟรม

ถ้าผู้รับเห็นบิต ...011010... ต่อเนื่อง เขาจะรู้ได้อย่างไรว่าบิตแรกของ frame อยู่ตรงไหน การนับจำนวนจากเวลาที่เริ่มเปิดเครื่องไม่พอ เพราะอุปกรณ์อาจเริ่มฟังกลางทาง บิตอาจเสีย และแต่ละ frame อาจยาวไม่เท่ากัน Framing จึงต้องสร้างจุดอ้างอิงที่ผู้รับค้นพบใหม่ได้ แม้จะเคยหลุดจากจังหวะไปก่อนหน้า

Framing เหมือนเว้นวรรคและใส่เครื่องหมายจบประโยค
ข้อความว่า “กินข้าวแล้วหรือยังดีใจด้วย” มีตัวอักษรครบ แต่ขอบเขตไม่ชัดว่าเป็น “กินข้าวแล้วหรือยัง / ดีใจด้วย” หรือประโยคอื่น กระแสบิตก็เช่นกัน การรู้ค่าของทุกบิตยังไม่พอ เราต้องรู้ว่ากลุ่มไหนเป็น header กลุ่มไหนเป็น payload และ frame สิ้นสุดตรงใด

Byte-Oriented Protocol

โปรโตคอลวิธีการ
BISYNC
(IBM, sentinel approach)
ใช้ตัวอักษรพิเศษ SYN บอกจุดเริ่ม frame, ข้อมูลจริงอยู่ระหว่าง STX กับ ETX, มี SOH (start of header), DLE (escape ตัวอักษรพิเศษ), และ CRC
PPP
(sentinel approach, บน Internet link)
ใช้ Flag byte พิเศษ 01111110 บอกจุดเริ่ม/จบ, Protocol field ใช้ demux (IP/IPX), Payload เจรจาต่อรองขนาดได้ (มักไม่เกิน 1500 byte)
DDCMP
(DECNet, byte-counting approach)
ใช้ field count บอกจำนวน byte ใน frame body — ถ้า count field เสียหาย จะเกิด framing error

แนวทาง sentinel ใช้ค่าพิเศษเป็นเครื่องหมายเริ่มหรือจบ ปัญหาคือ payload อาจมีค่าเดียวกับเครื่องหมาย ถ้าห้ามใช้ค่านั้น ข้อมูลจะไม่โปร่งใสต่อทุก byte จึงต้องมี byte stuffing หรือ escaping เมื่อพบ byte พิเศษในข้อมูล ผู้ส่งใส่ escape นำหน้า ผู้รับเห็น escape แล้วรู้ว่า byte ถัดไปเป็นข้อมูล ไม่ใช่ตัวควบคุม

PPP ที่วิ่งบน asynchronous byte-oriented link ใช้ flag 0x7E และ escape byte 0x7D พร้อมแปลงค่าบางส่วนตามกติกา ส่วน PPP บน synchronous link อาจใช้กลไกแบบ bit stuffing ตาม framing ที่เกี่ยวข้อง จึงไม่ควรจำว่า protocol หนึ่งมี stuffing แบบเดียวในทุกการห่อหุ้ม ต้องดูชนิดของลิงก์และรูปแบบ frame ที่มาตรฐานกำหนด

แนวทาง byte count ดูประหยัด เพราะ header ระบุความยาวแล้วผู้รับนับตามจำนวน แต่ถ้าฟิลด์ความยาวเสีย receiver อาจกินข้อมูลของ frame ถัดไปเข้ามาด้วย ระบบจึงต้องมีวิธีกลับมาหาขอบเขตใหม่ การออกแบบ framing ที่ดีไม่ได้ป้องกันเพียง error ภายใน frame แต่ต้องคิดว่าเมื่อหลุดแล้วจะ resynchronize อย่างไร

Bit-Oriented Protocol: HDLC และ Bit Stuffing

Bit Stuffing — อัลกอริทึมต้องจำได้แม่น
HDLC ใช้ sequence 01111110 บอกจุดเริ่ม/จบเช่นเดียวกับ PPP — เพื่อป้องกันไม่ให้ข้อมูลจริงบังเอิญมี pattern เดียวกันปน:
ฝั่งส่ง: ทุกครั้งที่ข้อมูลจริงมี 1 ติดกัน 5 ตัว ให้ stuff 0 เข้าไปก่อน bit ถัดไป
ฝั่งรับ: พบ 1 ติดกัน 5 ตัว → ดู bit ถัดไป: ถ้าเป็น 0 → ทิ้ง (คือ bit ที่ stuff เข้ามา); ถ้าเป็น 1 → ดูต่ออีกตัว: 01111110 = จบ frame, 01111111 = error (ทิ้งทั้ง frame รอ flag ถัดไป)

หัวใจของ bit stuffing คือทำให้ pattern ของ flag ไม่ปรากฏในข้อมูลที่ถูกส่งจริง หลังเจอ 1 ต่อกันห้าตัว ผู้ส่งแทรก 0 โดยไม่สนใจว่าข้อมูลต้นฉบับตัวถัดไปเป็นอะไร ผู้รับทำกระบวนการย้อนกลับเฉพาะภายใน frame จึงได้ payload เดิม การแทรกบิตนี้เพิ่ม overhead ตามรูปแบบข้อมูล ถ้าข้อมูลมี 1 ต่อกันบ่อย overhead จะมากขึ้น แต่แลกกับ data transparency และการหาขอบเขตที่ชัดเจน

ตัวอย่าง Bit Stuffing ทีละก้าว

ข้อมูลเดิม: 01111110

หลังเห็น 1 ห้าตัวแรก ผู้ส่งแทรก 0: 011111010 ข้อมูลบนสายจึงไม่เกิด flag 01111110 ภายใน payload

ผู้รับพบ 1 ห้าตัวแล้วตามด้วย 0 จึงลบ 0 ที่แทรกออก และได้ข้อมูลเดิมกลับมา จุดสำคัญคืออย่านับบิตที่แทรกเป็นส่วนหนึ่งของชุด 1 ในข้อมูลต้นฉบับ

ความยาวคงที่ก็เป็น framing ได้

ถ้าทุก frame ยาวเท่ากันและ receiver รู้จังหวะอยู่แล้ว การแบ่งทุก N bit เป็นหนึ่ง frame ก็เป็นวิธี framing เช่นกัน ข้อดีคือ logic ง่ายและหา offset ได้ตรง แต่ใช้กับข้อมูลที่ยาวแปรผันไม่สะดวก อาจต้อง padding และถ้าหลุดจาก alignment ต้องมีเครื่องหมายหรือกลไกอื่นช่วยกลับเข้าจังหวะ ระบบจริงจึงเลือกวิธีตามธรรมชาติของ medium และบริการ ไม่ได้มีผู้ชนะหนึ่งเดียว

Framing ไม่ได้ทำให้ข้อมูลเชื่อถือได้เอง
การรู้ว่า frame เริ่มและจบตรงไหนยังไม่บอกว่าบิตข้างในถูกต้อง Framing แก้ปัญหาขอบเขต ส่วน CRC แก้ปัญหาการตรวจความเปลี่ยนแปลง และ ARQ แก้ปัญหาว่าจะทำอะไรต่อเมื่อ frame หายหรือเสีย การแยกสามเรื่องนี้ช่วยให้ไม่เรียกทุกอย่างรวมกันว่า “ส่งให้ครบ”

3Error Detection

หลักการพื้นฐาน: Redundancy
เพิ่มข้อมูลตรวจสอบจำนวนหนึ่งเข้าไปในข้อมูลเดิม เพื่อให้รูปแบบที่ส่งถูกต้องมีเงื่อนไขบางอย่าง เมื่อบิตเปลี่ยนระหว่างทาง รูปแบบใหม่มีโอกาสผิดเงื่อนไขและถูกตรวจพบ ตัวอย่างเช่น Ethernet ใช้ Frame Check Sequence ขนาด 32 บิต แม้ payload จะยาวได้ถึง 1,500 byte

ถ้าเราส่งข้อมูลทุก bit โดยไม่มีข้อมูลส่วนเกิน ผู้รับจะไม่มีหลักฐานจาก frame นั้นเองว่าค่าใดเปลี่ยนไป Redundancy จึงไม่ใช่ของเสียทั้งหมด แต่เป็นพื้นที่ที่ซื้อความสามารถในการตรวจ error อย่างไรก็ตาม การตรวจพบไม่ได้เท่ากับการรู้ว่าบิตใดผิด และไม่เท่ากับการแก้กลับได้ ความสามารถขึ้นกับ code ที่ใช้และชนิดของ error ที่ต้องรับมือ

Redundancy เหมือนยอดรวมท้ายใบเสร็จ
ถ้าใบเสร็จมีรายการสินค้าแต่ไม่มียอดรวม เราอ่านได้แต่ตรวจความสอดคล้องยาก การใส่ยอดรวมทำให้พบได้ว่าตัวเลขบางส่วนอาจถูกแก้ แต่ยอดรวมเพียงค่าเดียวไม่ได้บอกเสมอว่าบรรทัดไหนผิด และถ้าหลายค่าถูกเปลี่ยนให้ผลรวมยังเท่าเดิม เราก็ตรวจไม่พบ Error-detection code จึงมีชุดความผิดพลาดที่จับได้และชุดที่อาจหลุดผ่าน ไม่มี code สั้น ๆ ใดรับประกันตรวจทุกการเปลี่ยนแปลงของข้อมูลยาวกว่า code ได้ทั้งหมด

Two-Dimensional Parity

ต่อยอดจาก simple parity (เพิ่ม 1 bit ต่อ 7-bit code ให้จำนวน 1 เป็นคู่/คี่) — 2D parity คำนวณ parity ทั้งแนวนอน (แต่ละ byte) และแนวตั้ง (ตำแหน่ง bit เดียวกันข้าม byte) ได้ parity byte เพิ่ม 1 ชุด จับ error ได้ 1-3 bit ครบ และ 4 bit ได้ส่วนใหญ่

Simple parity ตรวจ error จำนวนคี่ได้ เพราะการกลับบิตจำนวนคี่เปลี่ยน parity แต่ error จำนวนคู่บางรูปแบบทำให้ parity กลับมาเหมือนเดิม Two-dimensional parity วางข้อมูลเป็นตารางและคำนวณทั้งแถวกับคอลัมน์ ถ้าบิตเดียวผิด แถวและคอลัมน์ที่ผิดจะชี้จุดตัดให้เห็น จึงมีข้อมูลมากกว่า parity หนึ่งมิติ

แต่ถ้าบิตผิดสี่ตำแหน่งเป็นมุมของสี่เหลี่ยม แต่ละแถวและคอลัมน์มีการเปลี่ยนสองบิต parity อาจยังถูกทั้งหมด นี่เป็นตัวอย่างสำคัญว่า “จับได้หลายบิต” ต้องระบุ pattern ไม่ใช่ดูจำนวนอย่างเดียว Burst error ซึ่งบิตเสียติดกันเป็นช่วงพบได้ในลิงก์จริงและเป็นเหตุผลหนึ่งที่ CRC ได้รับความนิยม

CRC (Cyclic Redundancy Check)

หลักการทางคณิตศาสตร์
แทน bit string ด้วย polynomial บน GF(2) — 110001 แทน x⁵+x⁴+1 โดยการบวกและลบสัมประสิทธิ์ทำแบบ modulo 2 จึงเทียบได้กับ XOR กำหนด message เป็น M(x) และ generator เป็น G(x) ผู้ส่งเติมศูนย์ตาม degree ของ G(x) แล้วหารเพื่อหา remainder จากนั้นแนบ remainder ให้ codeword หารด้วย G(x) ลงตัว ฝั่งรับหาร codeword ที่ได้รับอีกครั้ง ถ้าเศษไม่เป็นศูนย์ แปลว่าตรวจพบความผิดปกติ

สมมุติ generator มี degree r ผู้ส่งจะเพิ่ม FCS จำนวน r บิต ขั้นตอนเชิงบิตใช้ XOR แทนการลบ จึงสร้างวงจรด้วย shift register ได้มีประสิทธิภาพ นี่ทำให้ CRC เหมาะกับการตรวจข้อมูลความเร็วสูง ไม่จำเป็นต้องสร้าง polynomial เชิงสัญลักษณ์ทุก frame ตอนนำไปใช้จริง

ถ้า receiver ได้เศษไม่เป็นศูนย์ เรารู้ว่าข้อมูลหรือ FCS เปลี่ยนภายใต้กติกานี้ แต่ถ้าเศษเป็นศูนย์ หมายถึง ไม่ตรวจพบ error ไม่ใช่หลักฐานเชิงตรรกะว่าไม่มี error แน่นอน Error pattern บางแบบอาจหารด้วย G(x) ลงตัวและหลุดผ่านได้ การเลือก generator ที่ดีจึงออกแบบจากชนิดและความยาวของ error ที่ต้องการตรวจ ไม่ใช่สุ่ม polynomial ใดก็ได้

CRC ตรวจได้ดีเพราะเลือก Generator อย่างมีเหตุผล
  • ตรวจ single-bit error ได้ ถ้า G(x) มีอย่างน้อยสองพจน์
  • ตรวจ burst error ที่สั้นกว่าหรือเท่ากับ degree ของ generator ได้ภายใต้คุณสมบัติมาตรฐาน
  • คุณสมบัติเรื่องจำนวนบิตผิดและ burst ที่ยาวขึ้นขึ้นกับ polynomial เฉพาะ จึงไม่ควรเหมารวม CRC ทุกแบบว่าเก่งเท่ากัน
สิ่งที่ต้องตกลงให้ตรงกัน
สำหรับการคำนวณ CRC ทั้งสองฝั่งต้องใช้ generator และรูปแบบการคำนวณเดียวกัน แต่ protocol จริงยังต้องตกลงตำแหน่ง field, bit order, initial value และรายละเอียดอื่นด้วย CRC ใช้เพื่อตรวจ error ไม่ใช่กลไกแก้ error โดยตัวมันเอง เมื่อพบ frame เสีย หลาย Data Link protocol จะทิ้ง frame ส่วนจะส่งใหม่หรือไม่ขึ้นกับบริการของ protocol นั้น

Detection, Correction และ Recovery เป็นคนละขั้น

ขั้นคำถามตัวอย่าง
Error detectionข้อมูลที่รับมาน่าสงสัยหรือไม่Parity, checksum, CRC
Error correctionระบุและแก้ค่าที่ผิดจาก redundancy ได้หรือไม่Forward Error Correction เช่น Hamming code หรือ Reed–Solomon ตามบริบท
Recoveryเมื่อข้อมูลใช้ไม่ได้ จะทำให้การส่งเดินต่ออย่างไรทิ้ง frame, ขอ retransmission, ส่ง ACK/NAK หรือให้ชั้นบนรับผิดชอบ

Forward Error Correction เหมาะเมื่อ retransmission แพงหรือทำไม่ได้ เช่นสัญญาณออกอากาศ ลิงก์อวกาศ หรือสื่อที่ delay สูง แต่ต้องเพิ่ม redundancy และการประมวลผล ส่วน ARQ ใช้การตรวจพบแล้วขอส่งใหม่ จึงเหมาะเมื่อมีช่องตอบกลับและต้นทุนการลองใหม่ยอมรับได้ ระบบจำนวนมากผสมทั้งสองแบบ ไม่จำเป็นต้องเลือกอย่างใดอย่างหนึ่งตลอดลิงก์

4Reliable Transmission (ระดับ Link)

ถ้า protocol ต้องการ reliable delivery ระดับลิงก์ มันอาจใช้ ACK, sequence number และ timeout เพื่อทำ Automatic Repeat reQuest หรือ ARQ แต่ไม่ใช่ทุกลิงก์จะทำเช่นนี้ Ethernet แบบทั่วไปตรวจ FCS แล้วทิ้ง frame ที่เสีย จากนั้นปล่อยให้ชั้นบนจัดการตามบริการของมัน ขณะที่ wireless บางระบบมี link-layer retransmission เพราะ error จาก medium เกิดได้บ่อยกว่า

ACK เหมือนใบรับของ แต่ใบรับของก็อาจหาย

ผู้ส่งฝากพัสดุแล้วรอใบยืนยัน ถ้าไม่เห็นใบยืนยันภายในเวลาที่กำหนด เขาส่งซ้ำ ปัญหาคือพัสดุชุดแรกอาจถึงแล้ว แต่ใบยืนยันหาย ผู้รับจึงเห็นพัสดุซ้ำ Sequence number ช่วยให้รู้ว่าสองกล่องเป็นงานเดิม ไม่ใช่คำสั่งใหม่

Timeout จึงไม่ได้พิสูจน์ว่า frame ไม่ถึง มันเพียงบอกว่าผู้ส่งไม่ได้รับหลักฐานภายในเวลา การ retransmit ทำให้ระบบเดินต่อได้ แต่ต้องมีวิธีตรวจ duplicate ไม่เช่นนั้นความพยายามสร้างความน่าเชื่อถือจะสร้างข้อมูลซ้ำแทน

ปัญหาประสิทธิภาพของ Stop-and-Wait
link 1.5 Mbps, RTT=45ms, frame=1KB → Delay×BW ≈ 8KB
Max rate ของ Stop-and-Wait ≈ 182 Kbps = เพียง 1/8 ของ capacity เท่านั้น (ส่งได้แค่ 1 frame/RTT)

ตัวอย่าง Stop-and-Wait ข้างต้นประมาณจากการส่งหนึ่ง frame แล้วรอหนึ่ง RTT หากใช้ 1 KB = 8,192 bit เวลาส่งบน 1.5 Mb/s ประมาณ 5.46 ms เมื่อรวม RTT 45 ms รอบหนึ่งใช้ราว 50.46 ms อัตราใช้งานจริงจึงประมาณ 162 kb/s หากละเลย transmission time แล้วใช้เพียง 1 frame ต่อ 45 ms จะได้ราว 182 kb/s ตัวเลขต่างกันตามสมมุติฐาน จึงควรเขียนให้ชัดว่าโจทย์รวมเวลาใดบ้าง แทนที่จะจำเพียงคำตอบ 1/8

ทำไม Pipeline จึงช่วยได้

ถ้าผู้ส่งต้องรอ ACK ทุก frame ลิงก์จะว่างระหว่างที่สัญญาณและ ACK เดินทาง Sliding Window อนุญาตให้ส่งหลาย frame ต่อเนื่องก่อน ACK แรกกลับมา จำนวน frame ที่ยังไม่ได้ยืนยันเรียกว่า outstanding frames ถ้าหน้าต่างใหญ่พอเติม bandwidth-delay product ได้ ผู้ส่งจึงใช้ลิงก์ได้ต่อเนื่องกว่าเดิม

Sliding Window (ระดับ Link) — ตัวแปรที่ต้องจำ
Sender: SWS (ขนาดหน้าต่างส่ง), LAR (ACK ล่าสุดที่ได้รับ), LFS (frame ล่าสุดที่ส่ง) — invariant: LFS−LAR ≤ SWS
Receiver: RWS (ขนาดหน้าต่างรับ), LAF (sequence number สูงสุดที่ยอมรับ), LFR (frame ล่าสุดที่รับครบตามลำดับ) — ในแบบจำลองพื้นฐานกำหนด LAF−LFR = RWS
ACK เป็นแบบ cumulative — ระบุ sequence number สูงสุดที่ "ทุกอันก่อนหน้าครบแล้ว"

Cumulative ACK หมายความว่า ACK หมายเลข 5 ยืนยันว่า frame ถึง 5 มาครบตามลำดับแล้ว ไม่จำเป็นต้องส่ง ACK แยกย้อนหลังทุกหมายเลข ถ้า ACK บางฉบับหาย ACK ที่สูงกว่าสามารถครอบคลุมได้ แต่ถ้า frame 4 หายและ frame 5 มาถึง พฤติกรรมขึ้นกับขนาด receive window และ protocol ว่าจะเก็บ frame 5 รอหรือทิ้ง

Go-Back-N กับ Selective Repeat

แนวทางเมื่อ frame หนึ่งหายข้อแลกเปลี่ยน
Go-Back-Nส่ง frame ที่หายและ frame หลังจากนั้นในหน้าต่างใหม่receiver และการจัดการง่ายกว่า แต่ส่งข้อมูลที่เคยถึงแล้วซ้ำมากเมื่อ bandwidth-delay product สูง
Selective Repeatส่งซ้ำเฉพาะ frame ที่หาย โดย receiver เก็บ frame ที่มาถึงนอกลำดับไว้ใช้ bandwidth คุ้มกว่า แต่ต้องมี buffer และตรรกะจัดลำดับซับซ้อนขึ้น

Sequence number มีจำนวนจำกัดและวนกลับมาใช้ใหม่ ขนาดหน้าต่างจึงต้องสัมพันธ์กับ sequence-number space ไม่เช่นนั้น receiver อาจแยก frame เก่าที่มาช้ากับ frame ใหม่หลังเลขวนไม่ได้ โดยเฉพาะ Selective Repeat มักกำหนดหน้าต่างไม่เกินครึ่งหนึ่งของ sequence space เพื่อไม่ให้ช่วงหมายเลขเก่ากับใหม่ซ้อนกัน

Sliding Window ทำหน้าที่ 3 อย่างพร้อมกัน
(1) Reliable (2) รักษาลำดับ (3) Flow control — concept เดียวกันนี้จะกลับมาอีกครั้งในระดับ Transport (TCP) ที่ Layer 4 แต่ operate แบบ end-to-end แทนที่จะเป็นแค่ระดับ link เดียว

ควรระวังว่าคำว่า window ในแต่ละ protocol ไม่ได้มีความหมายเหมือนกันทุกประการ Link-layer ARQ อาจใช้ window เพื่อควบคุม frame บนลิงก์เดียว ส่วน TCP ใช้ sequence number ของ byte และมีกลไก flow control กับ congestion control ระดับ end-to-end แนวคิดคล้ายกันตรงการมีข้อมูลหลายหน่วยค้างระหว่างทาง แต่ขอบเขตและสัญญาณควบคุมต่างกัน

5Bridges และ LAN Switches (+ Spanning Tree)

ทำไม Bridge อยู่ที่ Data Link Layer
Bridge ตัดสินใจ forward frame โดยดูจาก MAC (Ethernet) address ซึ่งเป็นข้อมูลระดับ Data Link — ต่างจาก router ที่ตัดสินใจจาก IP address (Network layer) กลุ่มของ LAN ที่เชื่อมด้วย bridge เรียก Extended LAN

คำว่า bridge กับ Layer-2 switch อยู่ในตระกูลแนวคิดเดียวกัน Bridge รุ่นแรกมี port ไม่มากและประมวลผลด้วยซอฟต์แวร์มากกว่า ส่วน switch สมัยใหม่มีหลาย port และทำ forwarding ด้วย hardware ที่เร็วขึ้น แต่หลักสำคัญยังเหมือนกัน คือเรียนรู้ว่า source MAC address ปรากฏที่ port ใด แล้วใช้ตารางนั้นตัดสินใจว่าจะส่ง frame ออกทางไหน

Switch เหมือนพนักงานอาคารที่จำว่าบริษัทอยู่ชั้นไหน

เมื่อพนักงานเห็นจดหมายจากบริษัท A เดินออกมาจากลิฟต์ชั้น 3 เขาเรียนรู้ว่า A น่าจะอยู่ชั้น 3 หากภายหลังมีจดหมายถึง A เขาจึงส่งไปชั้นนั้นโดยตรง แต่ถ้ายังไม่เคยเห็น A เขาต้องสำเนาไปถามทุกชั้นยกเว้นชั้นที่รับมา วิธีนี้คือ flooding

พนักงานเรียนจากที่อยู่ผู้ส่ง ไม่ใช่ผู้รับ เพราะ frame ที่เข้ามาให้หลักฐานแน่ชัดว่า source ติดต่อได้ผ่าน port นั้น ส่วน destination อาจยังเป็นเพียงคำถาม ถ้าอุปกรณ์ย้าย port รายการเก่าต้องหมดอายุหรือถูกอัปเดต มิฉะนั้น switch จะส่งตามความทรงจำที่ล้าสมัย

Learning Bridge

Bridge เรียนรู้ตำแหน่งโฮสต์โดยตรวจดู source address ของทุก frame ที่รับเข้ามา แล้วบันทึกลงตาราง (host↔port) — entry มี timeout เพื่อลบทิ้งถ้าไม่ถูกอัปเดต ถ้าปลายทางไม่อยู่ในตาราง จะ forward ออกทุก port อื่น (flood)

สถานการณ์การทำงานของ Switch
Destination อยู่ port เดียวกับ sourcefilter frame ไม่ต้องส่งย้อนออก port เดิม เพราะปลายทางอยู่ใน segment ที่รับมา
รู้ destination portforward แบบ unicast ออกเฉพาะ port ที่ตารางระบุ
ยังไม่รู้ destinationflood ออกทุก forwarding port ยกเว้น ingress port
Broadcast หรือ multicast ที่ไม่มีการกรองกระจายภายใน broadcast domain ตามกติกา VLAN และ spanning tree

ตาราง MAC ไม่ใช่ directory กลางที่กำหนดล่วงหน้าทั้งหมด มันเป็น cache ที่เรียนจาก traffic จึงมีทั้งช่วง cold start ที่ต้อง flood และช่วง aging เมื่อรายการหมดอายุ การโจมตีแบบ MAC flooding พยายามทำให้ตารางเต็มจน switch ต้อง flood มากขึ้น แต่พฤติกรรมจริงขึ้นกับ implementation และกลไกป้องกันของอุปกรณ์

Spanning Tree Algorithm (Radia Perlman, IEEE 802.1)

ขั้นตอนของ Algorithm
1) เลือก bridge ID น้อยที่สุดเป็น root — root forward ทุก port เสมอ
2) แต่ละ bridge คำนวณ shortest path ไป root แล้วจำ port ที่เป็น "preferred path"
3) แต่ละ LAN เลือก designated bridge เดียว (ใกล้ root ที่สุด, เสมอกันเลือก ID น้อยกว่า)
4) Bridge forward frame เฉพาะ port ที่ตนเป็น designated bridge เท่านั้น

เหตุผลที่เครือข่ายต้องการลิงก์ซ้ำซ้อนกับเหตุผลที่ต้องปิดลิงก์บางเส้นดูเหมือนขัดกัน เราเพิ่มลิงก์เพื่อให้มีทางสำรอง แต่ Ethernet frame แบบดั้งเดิมไม่มี hop limit เหมือน IP packet ถ้า topology มี loop frame broadcast หรือ unknown unicast อาจถูกทำสำเนาและวนต่อไป เกิด broadcast storm และทำให้ switch เรียน source MAC สลับ port ไปมาอย่างไม่เสถียร

Spanning Tree — ปิดประตูบางบาน แต่ยังเก็บกุญแจไว้
อาคารมีทางเดินวงกลมหลายเส้นเพื่อใช้หนีไฟ แต่ในเวลาปกติพนักงานปิดประตูบางบานเพื่อไม่ให้คนส่งเอกสารเดินวนและถ่ายสำเนาไม่รู้จบ หากทางหลักเสีย จึงคำนวณใหม่แล้วเปิดประตูสำรอง Spanning Tree ไม่ได้ตัดสายทิ้ง แต่เลือก forwarding topology ที่ไม่มีวงรอบในขณะหนึ่ง

ใน STP ที่ใช้งานจริง การเลือก root และเส้นทางพิจารณา Bridge ID, path cost, Port ID และ BPDU ตามลำดับการตัดสิน Port อาจอยู่ในบทบาท root port, designated port หรือ alternate/blocking ตามเวอร์ชันของมาตรฐาน คำอธิบายสี่ขั้นด้านบนเป็นภาพรวมสำหรับเข้าใจ ไม่ควรใช้แทนรายละเอียดของ state transition และ timer เมื่อต้องตั้งค่าอุปกรณ์จริง

ทำไมต้องมี Spanning Tree
Extended LAN ที่มี loop จะทำให้ frame วนซ้ำไม่รู้จบ — Spanning Tree ตัด port ที่ไม่จำเป็นออกจนเหลือ tree ที่ไม่มี cycle แต่มีข้อจำกัด: reconfigure ใหม่ได้เมื่อ bridge ล่ม แต่ไม่สามารถ forward อ้อม bridge ที่แค่ congested ได้

ข้อจำกัดของ bridged LAN: broadcast และ unknown traffic ยังถูกกระจายใน broadcast domain ตารางต้องเรียนรู้ endpoint จำนวนมาก และ spanning tree อาจปิดลิงก์ที่มีอยู่จนใช้ capacity ไม่เต็มที่ Routing ช่วยแบ่งขอบเขตและใช้ metric ที่ซับซ้อนกว่า ส่วน VLAN แบ่ง LAN เชิงตรรกะออกเป็นหลาย broadcast domain บนโครงสร้างสวิตช์ร่วมกัน แต่แต่ละ VLAN ยังต้องมี routing เมื่อต้องสื่อสารข้ามกัน

MAC Address ไม่ใช่ตัวตนถาวรของเครื่อง

MAC address ของ Ethernet ยาว 48 บิต แบ่งแนวคิดเป็นส่วนที่องค์กรได้รับจัดสรรและส่วนที่ผู้ผลิตกำหนด แต่ address สามารถตั้งค่าแบบ locally administered หรือเปลี่ยนด้วยซอฟต์แวร์ได้ อุปกรณ์สมัยใหม่ยังใช้ MAC randomization เพื่อเพิ่มความเป็นส่วนตัวในบางบริบท ดังนั้นคำว่า “ไม่ซ้ำทั่วโลกและผูกกับ adaptor” เป็นเป้าหมายของ universal address บางประเภท ไม่ใช่คุณสมบัติที่รับประกันสำหรับทุก frame ที่เห็นบนเครือข่าย

Switch ใช้ MAC address เพื่อ forwarding ไม่ได้พิสูจน์ว่าเจ้าของ address เป็นใคร การปลอม source MAC ทำได้ และการรักษาความปลอดภัยต้องพึ่งกลไกอื่น เช่น authentication, port security หรือการป้องกันระดับสูงขึ้น การเอา addressing ไปเท่ากับ identity เป็นการยกความหมายให้ field มากกว่าหน้าที่ที่มันรับผิดชอบ

6Ethernet — CSMA/CD

CSMA/CD เป็นหัวใจของ Ethernet แบบ shared, half-duplex ในยุคสาย coax และ hub แต่ Ethernet สมัยใหม่ส่วนใหญ่ใช้ switched point-to-point link แบบ full-duplex แต่ละ port มีช่องส่งและรับของตน จึงไม่มี collision domain ร่วมและไม่ใช้ CSMA/CD ระหว่าง switch กับ endpoint บทนี้ยังควรเรียน CSMA/CD เพราะทำให้เห็นความสัมพันธ์ระหว่างระยะทาง propagation delay และ minimum frame size ได้ชัดเจน ไม่ใช่เพราะ LAN ทุกวันนี้ยังชนกันอยู่เป็นปกติ

CSMA/CD ใน Shared Ethernet
Carrier sense คือฟังก่อนส่งว่า medium ว่างหรือไม่ Multiple access คือหลาย node ใช้ medium เดียวกัน และ Collision detection คือระหว่างส่งยังตรวจสัญญาณเพื่อรู้ว่ามีผู้อื่นส่งชนหรือไม่ Ethernet 10 Mb/s แบบดั้งเดิมใช้ Manchester และข้อจำกัด network diameter ขึ้นกับชนิดสาย repeater และกติกาของมาตรฐานรุ่นนั้น ไม่ใช่ตัวเลขเดียวสำหรับ Ethernet ทุกแบบ
CSMA/CD เหมือนคุยในห้องประชุม

ทุกคนฟังก่อนพูด ถ้าห้องเงียบจึงเริ่มพูด แต่คนที่อยู่คนละมุมอาจเริ่มพร้อมกันเพราะเสียงของอีกฝ่ายยังเดินทางมาไม่ถึง เมื่อได้ยินว่าชนกัน ทั้งคู่หยุดและสุ่มเวลารอก่อนลองใหม่ ถ้าใช้เวลารอเท่ากันทุกครั้งก็มีโอกาสชนซ้ำ จึงต้องขยายช่วงสุ่มเมื่อชนหลายรอบ

ใน switched full-duplex Ethernet เปรียบเหมือนแต่ละคนมีสายโทรศัพท์ส่วนตัวถึง switch ไม่ต้องแย่งอากาศในห้องเดียวกัน Collision detection จึงไม่มีงานให้ทำ แม้ชื่อ Ethernet ยังอยู่เหมือนเดิม

Fieldความหมาย
Preamble + SFD (64 bit)Preamble 7 byte ช่วย receiver sync และ Start Frame Delimiter 1 byte บอกจุดเริ่มของ MAC frame
Src/Dest Address (48 bit)ระบุ interface ต้นทางและปลายทางบน Ethernet LAN มีทั้ง universal, locally administered, unicast, multicast และ broadcast ตามบิตกำกับ
Data46–1500 byte — ขั้นต่ำ 46 byte เพื่อให้ตรวจจับ collision ได้
CRC (32 bit)ตรวจ error

ตารางด้านบนยังย่อ field บางส่วน Ethernet MAC frame มี Type/Length field และ FCS ส่วน VLAN tag อาจถูกแทรกตาม IEEE 802.1Q ค่า 64 byte minimum frame มักนับตั้งแต่ Destination MAC ถึง FCS ไม่รวม preamble และ SFD ส่วน Interpacket Gap เป็นช่วงเงียบระหว่าง frame ไม่ใช่ field ใน frame การระบุขอบเขตที่นับสำคัญมากเวลาแก้โจทย์ overhead

Payload ขั้นต่ำ 46 byte ใช้กับ frame ที่ไม่มี VLAN tagในรูปแบบพื้นฐาน หากข้อมูลจากชั้นบนสั้นกว่านั้นต้อง padding แต่ผู้รับต้องอาศัย protocol ชั้นบนหรือ length information แยก payload จริงจาก padding Ethernet ไม่ใส่ field ว่า padding ยาวเท่าไรโดยตรงในทุกกรณี

ทำไม frame ต้องยาวอย่างน้อย 512 bit (64 byte)
กรณีร้ายสุด: A เริ่มส่งที่ t, ก่อน frame ถึง B (ที่ t+d) เสี้ยววินาที B ก็เริ่มส่งพอดี → ชนที่ B ทันที → A ไม่รู้ตัวจนกว่า jam ของ B จะเดินทางกลับมาถึง A ที่ t+2d → A ต้องส่งต่อเนื่องอย่างน้อย 2d เพื่อรับประกันตรวจพบ collision ทุกกรณี → RTT ของเครือข่ายยาวสุด 2500m+repeater 4 ตัว = 51.2 μs = 512 bit บน 10 Mbps

หลัก 512 bit เรียกว่า slot time ของ Ethernet 10 Mb/s แบบ shared ถ้า frame สั้นจนผู้ส่งหยุดก่อนสัญญาณ collision จากปลายไกลสุดย้อนกลับมา ผู้ส่งอาจเข้าใจผิดว่าส่งสำเร็จ Minimum frame size จึงทำให้ขณะ collision ที่ช้าที่สุดกลับมาถึง ผู้ส่งยังคงกำลังส่งและตรวจพบได้

เมื่อ Ethernet เร็วขึ้น การรักษา network diameter เดิมกับ minimum frame เดิมจะยาก เพราะส่ง 512 bit หมดเร็วขึ้น มาตรฐานแต่ละรุ่นจึงปรับ topology, จำกัดระยะ, ใช้ switching หรือมีกลไกเฉพาะในบางยุค นี่เตือนว่าเลข 512 bit ไม่ได้ลอยมาจากความสวยงามของเลขฐานสอง แต่มาจากการจับคู่เวลาส่ง frame กับ round-trip propagation ของ collision domain

Exponential Backoff
สุ่ม k จาก 0 ถึง 2ⁿ−1 แล้วรอ k × 51.2 μs (n = จำนวนครั้ง collision ที่ผ่านมา) — ยิ่งชนซ้ำยิ่งขยายช่วงสุ่มเป็น 2 เท่า

ใน binary exponential backoff ของ Ethernet ขอบเขตการสุ่มไม่ได้ขยายไม่สิ้นสุด จำนวนบิตที่ใช้เลือกช่วงถูกจำกัด และหลัง collision ถึงจำนวนที่มาตรฐานกำหนด การส่ง frame นั้นจะล้มเหลวแล้วรายงานขึ้นไป รายละเอียดนี้สำคัญเพราะคำว่า exponential ไม่ได้แปลว่าระบบจะรอไปตลอดกาล

อย่าสับสน Collision กับ Congestion
Collision เป็นการส่งชนกันบน shared medium และถูกจัดการในระดับ MAC ของ Ethernet แบบ half-duplex ส่วน congestion คือภาระเกินทรัพยากรตามจุดต่าง ๆ เช่น queue ของ switch หรือ router ต่อให้เครือข่าย full-duplex ไม่มี collision ก็ยัง congestion ได้ การเปลี่ยน hub เป็น switch แก้ collision domain แต่ไม่ได้สร้าง bandwidth และ buffer แบบไม่จำกัด

7Wireless Links และ IEEE 802.11

Wireless medium ต่างจากสายตรงที่ node หนึ่งไม่ได้ยินสิ่งเดียวกับอีก node เสมอ กำลังสัญญาณลดตามระยะ มีสิ่งกีดขวาง การสะท้อน และ interference จากระบบอื่น ขณะที่อุปกรณ์ส่งสัญญาณของตัวเองด้วยกำลังสูงมากเมื่อเทียบกับสัญญาณอ่อนที่ต้องฟัง การตรวจ collision ระหว่างส่งแบบ Ethernet จึงทำได้ยาก Wi‑Fi ใช้แนวทาง CSMA/CA หรือ collision avoidance พร้อม ACK และการสุ่ม backoff แทนการพึ่ง collision detection

Wireless เหมือนคนคุยกันคนละห้อง
ทุกคนไม่ได้ยินทุกคน A และ C อาจต่างคนต่างได้ยิน B แต่มีผนังกั้นจนไม่ได้ยินกันเอง ถ้าทั้งคู่ฟังแล้วคิดว่าห้องเงียบและส่งหา B พร้อมกัน เสียงจะชนที่ B นี่คือ hidden node การฟังก่อนพูดยังมีประโยชน์ แต่ไม่รับประกันว่าไม่มีผู้ส่งที่เรามองไม่เห็น
เทคนิค Spread Spectrumหลักการ
Frequency Hoppingส่งข้ามความถี่ตามลำดับ pseudorandom ที่ sender/receiver รู้ร่วมกัน
Direct Sequenceแทน 1 bit ด้วย n-bit chipping code (XOR กับลำดับ random ที่รู้ร่วมกัน) กระจายสัญญาณกว้างขึ้น n เท่า

Spread spectrum เดิมมีบทบาททั้งด้านการทน interference และการแบ่งใช้ spectrum แต่ Wi‑Fi หลายรุ่นสมัยใหม่ใช้ OFDM/OFDMA และ modulation ที่ซับซ้อนขึ้น ไม่ควรสรุปว่า IEEE 802.11 ทุกเวอร์ชันใช้ Frequency Hopping หรือ Direct Sequence แบบในตาราง ตารางนี้ควรมองเป็นพื้นฐานเชิงประวัติและแนวคิด ก่อนต่อไปยัง physical layer ของแต่ละ amendment

Hidden Node Problem
A, C อยู่ในระยะ B แต่ไม่เห็นกันเอง — ส่งพร้อมกันชนที่ B โดยทั้งคู่ไม่รู้ตัว
Exposed Node Problem
C ได้ยิน B ส่งหา A แต่ถ้า C จะส่งหา D (ไม่ทับซ้อน) ก็ไม่ควรถูกห้ามส่ง
MACA (Multiple Access with Collision Avoidance)
Sender ส่ง RTS (ระบุความยาวเวลาที่ต้องการ) → Receiver ตอบ CTS (สะท้อน length กลับ) → node ที่เห็น CTS ต้องเงียบ (แก้ hidden node) → node ที่เห็นแค่ RTS ไม่เห็น CTS มีสิทธิ์ส่งต่อไปได้ (แก้ exposed node) — MACAW เพิ่ม ACK หลังรับสำเร็จ

MACA เป็นแนวคิดสำคัญที่มีอิทธิพลต่อ RTS/CTS แต่ IEEE 802.11 DCF ไม่ได้เท่ากับ MACA ตรง ๆ Wi‑Fi ใช้ physical carrier sensing ร่วมกับ virtual carrier sensing ผ่าน Network Allocation Vector (NAV) เมื่อ node ได้ยิน frame ที่มี Duration field มันอาจสำรอง medium ตามเวลาที่ระบุ รายละเอียดว่า node ใดต้องเงียบจึงต้องดู frame และกติกา 802.11 ไม่ควรนำคำอธิบาย MACA แบบย่อไปแทนมาตรฐานทั้งหมด

ลำดับพื้นฐานของ CSMA/CA

  1. สถานีตรวจ medium ถ้าว่างต่อเนื่องตามช่วงเวลาที่กำหนด จึงเริ่มหรือเดินหน้าตัวนับ backoff
  2. เลือกค่า backoff แบบสุ่มใน contention window และลดตัวนับเมื่อ medium ว่าง หากมีผู้อื่นส่ง ตัวนับหยุดไว้ก่อน
  3. เมื่อตัวนับถึงศูนย์จึงส่ง data frame อาจใช้ RTS/CTS ก่อนเมื่อเปิดใช้หรือเมื่อ frame ใหญ่ตาม threshold
  4. ผู้รับตรวจ FCS และส่ง ACK หลังช่วงเวลาสั้น ถ้าผู้ส่งไม่ได้ ACK จะถือว่าการส่งรอบนั้นไม่สำเร็จและลองใหม่ตามกติกา

ACK ของ Wi‑Fi เป็นการยืนยันระดับลิงก์ เพราะผู้ส่งตรวจ collision ระหว่างส่งไม่ได้ การไม่เห็น ACK อาจเกิดจาก data frame หาย ACK หาย หรือ interference ผู้ส่งไม่รู้สาเหตุแน่ชัดจึง retransmit Sequence control ช่วยให้ receiver ตรวจ frame ซ้ำได้ แต่จำนวน retry มีขอบเขต ไม่ใช่รับประกันว่าจะส่งจนสำเร็จเสมอ

RTS/CTS ไม่ได้เปิดใช้แล้วดีขึ้นทุกกรณี
RTS และ CTS เพิ่ม overhead ถ้า frame สั้นและ hidden node ไม่เด่น การแลก frame ควบคุมก่อนทุก data frame อาจทำให้ throughput ลด แต่เมื่อ frame ยาวและโอกาสชนสูง การชนกับ RTS สั้น ๆ เสียหายน้อยกว่าการชนหลังส่ง data ยาวเกือบหมด จึงเป็นกลไกที่มีจุดคุ้ม ไม่ใช่ยารักษาทุกอาการของ Wi‑Fi
Distribution System และ Access Point (AP)
Node associate ตัวเองกับ AP หนึ่งตัว — เลือก AP ผ่าน Active Scanning (ส่ง Probe → รับ Probe Response → ส่ง Association Request → รับ Association Response) หรือ Passive Scanning (ฟัง Beacon frame ที่ AP ส่งเป็นระยะ)

Beacon ไม่ได้มีไว้โฆษณาชื่อเครือข่ายอย่างเดียว แต่บอกข้อมูล timing, capability และ parameter ที่สถานีใช้ประเมินเครือข่าย ส่วนการเห็น SSID ไม่ได้แปลว่า authenticate และส่งข้อมูลได้แล้ว กระบวนการ discovery, authentication, association และ security handshake เป็นคนละช่วง การรวมทั้งหมดไว้ใต้คำว่า “ต่อ Wi‑Fi” ทำให้วิเคราะห์อาการยาก เช่นเห็นชื่อเครือข่ายแต่ association ไม่ผ่าน หรือ association แล้วแต่ยังไม่มี IP address

Wi‑Fi เชื่อม Layer 2 เข้ากับ Distribution System อย่างไร

Access Point ทำหน้าที่ bridge ระหว่าง wireless station กับ distribution system ซึ่งมักเป็น Ethernet LAN Frame ของ 802.11 มี address field ได้มากกว่า Ethernet เพราะต้องแยก transmitter, receiver, source, destination และ BSSID ตามทิศทางที่ frame เดินผ่าน AP การคิดว่า Wi‑Fi frame มี source/destination เพียงคู่เดียวแบบ Ethernet จึงไม่พอสำหรับทุกกรณี

เมื่อ station เคลื่อนที่และเปลี่ยน AP ระบบต้องจัด association ใหม่และอัปเดตเส้นทางระดับ bridge การ roaming ที่ผู้ใช้รู้สึกว่าไร้รอยต่อขึ้นกับ scanning, authentication, key management, AP coordination และ application tolerance ไม่ใช่คุณสมบัติของคลื่นวิทยุเพียงอย่างเดียว

BluetoothZigBee (802.15.4)
เป้าหมายหลักเชื่อมอุปกรณ์ระยะใกล้ เช่นเสียงและ peripheral โดยความสามารถขึ้นกับ Bluetooth Classic หรือ Bluetooth Low Energy และรุ่นที่ใช้IEEE 802.15.4 เป็นฐาน PHY/MAC สำหรับเครือข่ายกำลังต่ำ ส่วน Zigbee สร้าง protocol ชั้นบนและรูปแบบเครือข่ายบนฐานนั้น
โครงสร้างBluetooth Classic ใช้แนวคิด piconet ส่วน BLE มีบทบาทและ topology ตามสถาปัตยกรรมของตนออกแบบเพื่ออัตราข้อมูลไม่สูงและใช้พลังงานต่ำ รองรับ topology ตาม stack ที่นำ 802.15.4 ไปใช้

ตัวเลขระยะและอัตราส่งของ wireless เปลี่ยนตามรุ่น กำลังส่ง antenna, channel, coding และสภาพแวดล้อม การใส่ตัวเลขเดียวว่า Bluetooth ได้ 10 เมตรหรือ 2.1 Mb/s จึงเหมาะกับการอ้างเทคโนโลยียุคหนึ่งเท่านั้น สำหรับบทพื้นฐานควรจำเป้าหมายและข้อแลกเปลี่ยนก่อน แล้วค่อยเปิด specification ของรุ่นที่ใช้งานจริง

8จาก Frame หนึ่งใบไปสู่ LAN ทั้งระบบ

เมื่อรวมแนวคิดทั้งหมดเข้าด้วยกัน เหตุการณ์หนึ่งเริ่มจาก Network Layer ส่ง packet ลงมา Data Link Layer สร้าง header และ trailer เลือก destination MAC ตามลิงก์ปัจจุบัน คำนวณ FCS แล้วขอใช้ medium เมื่อส่งถึงอีกฝั่ง receiver หา frame boundary ตรวจ FCS และพิจารณา address ถ้าเป็น end host จึงส่ง payload ขึ้น Network Layer ถ้าเป็น switch จะเรียน source MAC และตัดสินใจ forward ต่อภายใน LAN

ที่ router ขอบเขตของ frame สิ้นสุด Router นำ IP packet ออก ตรวจและตัดสินเส้นทาง แล้วสร้าง frame ใหม่ให้เหมาะกับ outgoing interface นี่คือจุดที่เห็น layering แบบมีชีวิต Frame ไม่ใช่ซองที่เดินทางจาก application ต้นทางถึงปลายทางทั้งหมด แต่มันเป็นซองประจำ hop ซึ่งถูกแกะและเปลี่ยนเมื่อเทคโนโลยีลิงก์เปลี่ยน

ตัวอย่าง: Notebook ผ่าน Wi‑Fi ไปยัง Server บน Ethernet
  1. Notebook สร้าง 802.11 data frame ส่งหา AP โดยใส่ address field ตามทิศทางผ่าน distribution system
  2. AP รับและตรวจ frame แล้ว bridge payload เข้าฝั่ง Ethernet สร้าง Ethernet frame ที่เหมาะกับ LAN
  3. Switch เรียน source MAC และ forward ตาม destination MAC หรือ flood หากยังไม่รู้
  4. ถ้าปลายทางอยู่นอก subnet Router รับ Ethernet frame แกะ IP packet แล้วสร้าง frame ใหม่บนลิงก์ถัดไป

ผู้ใช้เห็นเพียง request เดียว แต่ในแต่ละช่วง packet อาจใส่ frame คนละชนิด การพูดว่า “MAC address ของ server ปลายทาง” จึงต้องถามว่าปลายทางอยู่บนลิงก์เดียวกันหรือไม่ ถ้าอยู่นอก subnet frame แรกมักส่งหา MAC ของ default gateway ไม่ใช่ MAC ของ server ที่อยู่ไกลออกไป

หลักฐานที่ควรดูเมื่อสงสัย Layer 2

อาการหรือข้อมูลคำถามที่ช่วยแยกสาเหตุ
FCS/CRC error เพิ่มมีปัญหาสัญญาณ สาย transceiver interference หรือ duplex mismatch บางแบบหรือไม่
MAC table เปลี่ยน port ไปมามี loop, endpoint ย้ายจริง, virtualization หรือ MAC เดียวปรากฏหลายจุดหรือไม่
Broadcast สูงผิดปกติมี loop, broadcast storm, discovery traffic หรือ broadcast domain ใหญ่เกินไปหรือไม่
Wi‑Fi retry สูงสัญญาณอ่อน interference, hidden node, channel utilization สูง หรือ rate selection ไม่เหมาะหรือไม่
อยู่ VLAN เดียวกันแต่คุยไม่ได้port mode, VLAN membership, trunk tag, STP state และ security policy ตรงกันหรือไม่

Packet capture ที่ host อาจไม่แสดง frame ที่ FCS ผิด เพราะ network adaptor ทิ้งก่อนส่งให้ระบบปฏิบัติการ และ adaptor บางตัวตัด FCS ออกก่อน capture การไม่เห็น error ใน Wireshark จึงไม่ได้แปลว่า medium ไม่มี error ต้องดู hardware counter และตำแหน่งที่จับข้อมูลประกอบด้วย เครื่องมือเห็นเฉพาะสิ่งที่จุดสังเกตยอมส่งให้มันเห็น

9VLAN, ARP และ MTU — รอยต่อที่มักทำให้สับสน

VLAN แบ่ง Broadcast Domain โดยไม่ต้องแยก Switch คนละตัว

ถ้าองค์กรมีผู้ใช้หลายฝ่ายต่ออยู่กับ switch ชุดเดียวกัน แต่ไม่ต้องการให้ broadcast ของทุกฝ่ายปะปนกัน เราสามารถสร้าง Virtual LAN เพื่อแบ่ง topology เชิงตรรกะ แต่ละ VLAN ทำตัวคล้าย LAN แยกกัน แม้อาจใช้สายและ switch ร่วมกัน Frame ของ VLAN หนึ่งไม่ถูก bridge ไปอีก VLAN โดยอัตโนมัติ ถ้าต้องการสื่อสารข้าม VLAN ต้องผ่าน Layer-3 forwarding เช่น router หรือ multilayer switch พร้อมนโยบายที่กำหนด

VLAN เหมือนแบ่งพื้นที่ในอาคารเดียวกัน

บริษัทสองแห่งเช่าคนละชั้นในอาคารเดียวกัน ใช้ลิฟต์และโครงสร้างอาคารร่วมกัน แต่เอกสารเวียนภายในของบริษัท A ไม่ควรถูกส่งไปทุกโต๊ะของบริษัท B VLAN สร้างขอบเขตเชิงตรรกะบนอุปกรณ์ร่วม ส่วน router คล้ายจุดรับรองที่ใช้เมื่อต้องส่งเอกสารข้ามบริษัทและสามารถตรวจนโยบายก่อนผ่าน

การมี VLAN ไม่ได้เข้ารหัสหรือทำให้ข้อมูลปลอดภัยด้วยตัวมันเอง มันแบ่ง forwarding domain หากตั้ง trunk ผิด เปิด VLAN ที่ไม่จำเป็น หรือมีช่องโหว่อื่น การแบ่งนี้ก็ไม่ได้แทน authentication และ access control

Access Port กับ Trunk Port

Access port โดยทั่วไปผูก traffic ของ endpoint เข้ากับ VLAN หนึ่ง สถานีปลายทางอาจส่ง Ethernet frame แบบไม่ติด tag แล้ว switch จัด VLAN จาก port configuration ส่วน trunk port ใช้ขนหลาย VLAN ระหว่าง switch, router, AP หรือ hypervisor จึงต้องมีข้อมูลกำกับว่า frame นี้เป็นของ VLAN ใด IEEE 802.1Q เพิ่ม tag ลงใน Ethernet frame พร้อม VLAN Identifier และข้อมูล priority บางส่วน

คำว่า tagged กับ untagged ต้องมองจาก port และทิศทาง Frame เดียวกันอาจเข้าจาก access port แบบไม่มี tag ถูก switch ผูกกับ VLAN ภายใน แล้วออก trunk พร้อม tag เมื่อไปถึง access port ปลายทาง tag ถูกนำออกก่อนส่งให้ endpoint การถามว่า “เครื่องนี้ใช้ VLAN tag หรือไม่” จึงตอบไม่ได้จาก VLAN membership เพียงอย่างเดียว ต้องดูว่า interface นั้นรับผิดชอบ tagging ตรงจุดใด

อาการจาก VLAN ที่ตั้งไม่ตรงกัน

เครื่องสองเครื่องอาจเสียบสายอยู่ switch เดียวกันและไฟ link ติด แต่ถ้าอยู่คนละ VLAN พวกมันไม่ได้อยู่ broadcast domain เดียวกัน ARP request จะไม่ข้ามไปหาอีกเครื่องโดยตรง หากไม่มี routing ระหว่าง VLAN ทั้งคู่จึงคุยกันไม่ได้ ปัญหานี้ไม่ใช่ Physical Layer เพราะบิตเดินทางถึง switch แล้ว และไม่ใช่เพราะ IP address เพียงอย่างเดียว แต่เป็นขอบเขต forwarding ของ Layer 2 ที่ถูกแบ่งไว้

ARP เชื่อมคำถามของ Layer 3 เข้ากับการส่ง Frame

เมื่อ host ต้องส่ง IP packet มันรู้ destination IP แต่ Ethernet frame ต้องมี destination MAC ถ้าปลายทางอยู่ subnet เดียวกัน host ใช้ ARP หา MAC ของปลายทางโดยตรง ถ้าปลายทางอยู่นอก subnet host ไม่ได้ ARP หา server ที่อยู่ไกล แต่ ARP หา MAC ของ default gateway แล้วส่ง frame แรกให้ gateway โดย IP destination ภายใน packet ยังคงเป็น server เดิม

กรณีDestination IP ใน PacketDestination MAC ใน Frame แรก
ปลายทางอยู่ LAN เดียวกันIP ของเครื่องปลายทางMAC ของเครื่องปลายทางที่ได้จาก ARP
ปลายทางอยู่อีกเครือข่ายIP ของปลายทางสุดท้ายMAC ของ default gateway บนลิงก์ปัจจุบัน

ARP reply เป็นข้อมูลที่ cache ได้ แต่ cache มีอายุและอาจถูกหลอกด้วย ARP spoofing เพราะ ARP ดั้งเดิมไม่ได้มี authentication ในตัว Switch รู้เพียงว่า MAC อยู่ port ไหน ส่วน host พยายามจับคู่ IP กับ MAC ทั้งสองตารางตอบคนละคำถาม การเปิด MAC table แล้วคาดว่าจะเห็น IP ครบ หรือเปิด ARP table แล้วคาดว่าจะเห็นทุก MAC ใน VLAN จึงเป็นการใช้เครื่องมือผิดหน้าที่

MTU — Frame มีขนาดจำกัด และผลกระทบเดินขึ้นไปถึง Layer บน

Maximum Transmission Unit คือขนาดสูงสุดของ Network-layer payload ที่ Data Link technology รับบรรจุใน frame ตาม interface นั้น Ethernet ทั่วไปมักใช้ IP MTU 1,500 byte แต่ VLAN tag และ header รายละเอียดต่าง ๆ ทำให้คำว่า frame size ต้องระบุว่ากำลังนับส่วนใด อุปกรณ์บางระบบรองรับ jumbo frame แต่ทุกจุดในเส้นทางที่เกี่ยวข้องต้องรองรับและตั้งค่าให้สอดคล้องกัน

ถ้า IP packet ใหญ่กว่า MTU ผลลัพธ์ขึ้นกับ IPv4/IPv6, flag และกลไก Path MTU Discovery IPv4 อาจ fragment ที่จุดเหมาะสมเมื่ออนุญาต ส่วน IPv6 router ไม่ fragment packet ระหว่างทางและต้นทางต้องปรับขนาดตาม ICMPv6 Packet Too Big หาก firewall ปิดกั้นข้อความที่จำเป็น อาจเกิดอาการเชื่อมต่อได้แต่ข้อมูลก้อนใหญ่ค้าง ซึ่งเรียกว่า PMTU black hole ได้

MTU เหมือนความสูงของประตูโกดัง
รถบรรทุกอาจวิ่งบนถนนได้ แต่ถ้าสูงเกินประตูโกดังถัดไป ต้องเปลี่ยนรถหรือแบ่งของก่อนผ่าน การรู้ขนาดประตูเฉพาะจุดแรกไม่พอ เส้นทางทั้งหมดมีคอขวดของตัวเอง และการปิดป้ายแจ้งว่า “รถสูงเกิน” ก็เหมือนปิด ICMP ที่ระบบใช้เรียน Path MTU—รถยังติดอยู่ แต่ไม่มีใครบอกต้นทางว่าควรเปลี่ยนอย่างไร

Checklist สั้น ๆ สำหรับปัญหา VLAN และ MTU

  1. ตรวจว่า endpoint อยู่ VLAN ที่ตั้งใจ และ access port ผูก VLAN ถูกต้อง
  2. ตรวจว่า trunk อนุญาต VLAN นั้นตลอดทาง รวมถึง native/untagged behavior ของสองฝั่งตรงกัน
  3. ตรวจ STP ว่า port forwarding หรือถูก block ด้วยเหตุผลใด
  4. ดู ARP/neighbor table ว่า host หา next-hop address ได้หรือไม่ ไม่ใช่เพียง ping ปลายทางแล้วเดา
  5. ถ้าข้อมูลเล็กผ่านแต่ข้อมูลใหญ่ค้าง ให้ตรวจ interface MTU, tunnel overhead และข้อความ ICMP ที่เกี่ยวข้อง
Layering ช่วยแยกเรื่อง แต่ปัญหาจริงชอบอยู่ตรงรอยต่อ
VLAN เป็น Layer 2, IP subnet เป็น Layer 3 และ MTU เป็นข้อจำกัดของลิงก์ที่ส่งผลต่อ IP และ transport การวิเคราะห์จึงไม่ใช่การเลือกชั้นเดียวแล้วห้ามมองข้ามเส้น แต่ใช้ชั้นเป็นกรอบตั้งคำถาม จากนั้นตามหลักฐานผ่านรอยต่ออย่างมีลำดับ

10สรุปและขั้นตอนถัดไป

  • Data Link Layer เปลี่ยน bit stream เป็น frame ที่มีขอบเขตและข้อมูลกำกับสำหรับลิงก์หนึ่งช่วง
  • Framing มีทั้ง sentinel, byte count, fixed length, byte stuffing และ bit stuffing แต่ละแบบต้องคิดทั้ง data transparency และการกลับมา sync หลังเกิด error
  • Parity และ CRC ใช้ redundancy เพื่อตรวจความผิดปกติ CRC ที่ได้เศษศูนย์หมายถึงไม่พบ error ไม่ใช่รับประกันว่าไม่มี error
  • Reliable link เป็นบริการของบาง protocol ใช้ sequence number, ACK, timeout และ sliding window แต่ Data Link Layer ไม่ได้ retransmit เสมอไป
  • Switch เรียนจาก source MAC และ forward, filter หรือ flood ตามตาราง ส่วน Spanning Tree สร้าง forwarding topology ที่ไม่มี loop
  • CSMA/CD อธิบาย shared half-duplex Ethernet แบบดั้งเดิม ปัจจุบัน switched full-duplex Ethernet โดยทั่วไปไม่มี collision และไม่ใช้ CSMA/CD
  • Wi‑Fi ใช้ CSMA/CA, backoff และ ACK ส่วน RTS/CTS เป็นกลไกเสริมที่ได้รับแนวคิดจาก MACA ไม่ใช่คำตอบที่คุ้มในทุกสถานการณ์
  • Frame มีขอบเขตต่อ hop เมื่อผ่าน router จะถูกแกะและสร้างใหม่ตามลิงก์ถัดไป ขณะที่ Network-layer packet เป็นหน่วยที่ใช้ตัดสินเส้นทางข้ามเครือข่าย
  • VLAN แบ่ง broadcast domain เชิงตรรกะ, 802.1Q tag ระบุ VLAN บน trunk และการสื่อสารข้าม VLAN ต้องผ่าน Layer 3
  • ARP หา MAC ของ next hop บนลิงก์ ไม่ได้ตามหา MAC ของปลายทางไกลทุกครั้ง ส่วน MTU กำหนดขนาด packet ที่ลิงก์บรรจุได้
คำถามซ้อมสอบ
  1. เดินตัวอย่าง bit stuffing/destuffing ของ HDLC จาก bit pattern ที่กำหนด
  2. เดิน Spanning Tree Algorithm ด้วยมือจากตัวอย่างกราฟที่กำหนด
  3. อธิบายที่มาของกฎ "Ethernet frame ต้องยาวอย่างน้อย 512 bit" อย่างละเอียด
  4. อธิบาย hidden/exposed node problem และวิธีที่ MACA แก้ปัญหาทั้งสอง
  5. เปรียบเทียบ CSMA/CD ของ shared Ethernet กับ CSMA/CA ของ Wi‑Fi และอธิบายว่าทำไม wireless ตรวจ collision ระหว่างส่งได้ยาก
  6. ไล่เหตุการณ์เมื่อ IP packet ข้ามจาก Wi‑Fi ผ่าน AP และ switch ไปยัง router ว่า frame และ address เปลี่ยนที่จุดใด

ขั้นตอนถัดไปคือ Network Layer ซึ่งขยายคำถามจาก “ส่งให้ node ถัดไปบนลิงก์นี้อย่างไร” ไปเป็น “จะพา packet ผ่านหลายเครือข่ายไปยังปลายทางได้อย่างไร” MAC address และ switching ช่วยให้ LAN ทำงาน ส่วน IP address และ routing จะช่วยเชื่อม LAN จำนวนมากให้กลายเป็น internetwork

จากพนักงานส่งของประจำอาคาร สู่ระบบนำทางข้ามเมือง
Data Link Layer รู้ว่าจะส่งของผ่านประตูไหนในอาคารหรือพื้นที่เดียวกัน แต่เมื่อปลายทางอยู่อีกเมือง เราต้องมีแผนที่ที่มองไกลกว่านั้น Network Layer จะเข้ามาเลือกเส้นทางระหว่างเครือข่าย โดยยังอาศัย Data Link Layer ส่งของให้ถึงจุดถัดไปทีละช่วง ไม่มีชั้นใดเดินทางทั้งหมดได้ลำพัง

ถ้าจะตรวจว่าตนเองเข้าใจบทนี้แล้วหรือยัง ลองเล่า frame หนึ่งใบตั้งแต่ออกจาก network adaptor ผ่าน switch ไปถึง router โดยระบุให้ได้ว่าใครเพิ่ม header ใครตรวจ FCS ใครเรียน source MAC และเหตุใด router ต้องสร้าง frame ใหม่ ถ้าอธิบายได้โดยไม่ใช้คำว่า “ส่งต่อไปเรื่อย ๆ” กลบรายละเอียด และรู้ว่าคุณสมบัติใดเป็นของ Ethernet คุณสมบัติใดเป็นของ Wi‑Fi และคุณสมบัติใดเป็นแนวคิดทั่วไปของ Data Link Layer แปลว่าโครงสร้างหลักเริ่มเข้าที่แล้ว