พื้นฐาน IPV4
ส่วนย่อยกลับมารวมเป็นดาตาแกรมได้อย่างไร?
เมื่อได้รับอนุญาต เราเตอร์อาจแบ่งดาตาแกรม IPv4 เพื่อให้มีขนาดพอดีกับลิงก์ถัดไป โฮสต์ผู้รับจะจัดกลุ่มส่วนย่อยที่เกี่ยวข้องกัน วางเพย์โหลดแต่ละส่วนตามค่าออฟเซ็ต และรอให้ครบทุกส่วน หากมีส่วนใดขาดหายไป ดาตาแกรมที่ไม่สมบูรณ์อาจหมดเวลารอ แผนภาพด้านล่างอธิบายกลไก ไม่ใช่ผลการวัดผลิตภัณฑ์
เส้นทาง
ผู้ส่ง → เราเตอร์ → ปลายทาง
เราเตอร์อาจแบ่งส่วนเมื่อได้รับอนุญาตและ MTU ของฮอปถัดไปมีขนาดเล็กกว่า
ฟิลด์
ID · ออฟเซ็ต · MF
ผู้รับใช้ที่อยู่ โปรโตคอล และ ID เพื่อจัดกลุ่มส่วนย่อย และใช้ออฟเซ็ตเพื่อวางส่วนย่อยในตำแหน่งที่ถูกต้อง
ส่วนที่ขาดหายไป
รอ → หมดเวลารอ → ทิ้ง
การมีเพียงส่วนย่อยสุดท้ายไม่ได้ยืนยันว่าเพย์โหลดครบถ้วน
รายการตรวจสอบเพื่อสืบหาปัญหา — ขยาย
| รายการตรวจสอบ | สิ่งที่ต้องยืนยัน | วิธีตรวจสอบ |
|---|---|---|
| เส้นทาง | อินเทอร์เฟซและ MTU | บันทึกเส้นทางจริง |
| ส่วนย่อย | ที่อยู่ โปรโตคอล ID ออฟเซ็ต และ MF | เปรียบเทียบข้อมูลการจับแพ็กเก็ตที่ได้รับอนุญาต |
| การสูญเสีย | ครอบคลุมข้อมูลครบถ้วน | เปรียบเทียบข้อมูลการจับแพ็กเก็ตตามเส้นทางกับที่ผู้รับ |
ข้อมูลที่คอนโทรลเลอร์ส่งไม่ได้มาถึงในรูปดาตาแกรม IP ที่สมบูรณ์เพียงชุดเดียวเสมอไป บางครั้งข้อมูลถูกแบ่งเป็นส่วนย่อย ผู้รับรู้ได้อย่างไรว่าส่วนใดอยู่ในชุดเดียวกัน และแต่ละส่วนควรอยู่ตรงไหน? จะเกิดอะไรขึ้นหากส่วนใดส่วนหนึ่งมาไม่ถึงเลย? หากต้องการเข้าใจการแบ่งส่วนของ IPv4 ต้องแยกการสวิตช์ Ethernet การกำหนดเส้นทาง IP และการประกอบกลับที่ผู้รับออกจากกัน

เริ่มจากแยกความแตกต่างระหว่างดาตาแกรม IP กับเฟรม Ethernet
คอนโทรลเลอร์ เกตเวย์ และเซิร์ฟเวอร์แลกเปลี่ยนข้อมูลผ่านลิงก์ต่าง ๆ ดาตาแกรม IP ถูกบรรทุกอยู่ในการห่อหุ้มชั้นนอกที่เหมาะกับลิงก์ปัจจุบัน โดยบน Ethernet จะเดินทางอยู่ภายในเฟรม Ethernet เฟรมส่งผ่านระหว่างอุปกรณ์ข้างเคียง ขณะที่ที่อยู่ IP ช่วยระบุปลายทางในชั้นเครือข่าย ชั้นเหล่านี้มีส่วนหัวและข้อจำกัดด้านความยาวต่างกัน
หน่วยส่งข้อมูลสูงสุดของ IP หรือ MTU ของอินเทอร์เฟซ กำหนดขีดจำกัดขนาดแพ็กเก็ต IP ที่ส่งผ่านอินเทอร์เฟซนั้น เส้นทางระหว่างซับเน็ตอาจผ่านอินเทอร์เฟซ IP หลายอินเทอร์เฟซซึ่งมีขีดจำกัดต่างกัน แพ็กเก็ตที่มีขนาดพอดีกับช่วงต้นทางไม่จำเป็นต้องมีขนาดพอดีกับฮอปถัดไป คู่มือนี้เน้นฟิลด์ของส่วนย่อยและการประกอบกลับ ไม่ได้สื่อว่าความล้มเหลวของแพ็กเก็ตขนาดใหญ่ทุกกรณีเกิดจากการแบ่งส่วน
การแบ่งส่วนเกิดขึ้นได้เมื่อใด?
ผู้ส่ง IPv4 อาจแบ่งส่วนก่อนส่ง เราเตอร์ที่ส่งต่อ IPv4 ก็สามารถแบ่งแพ็กเก็ตเป็นส่วนย่อยที่เล็กลงได้ หากแพ็กเก็ตมีขนาดเกิน MTU ของฮอปถัดไปและอนุญาตให้แบ่งส่วน ส่วนย่อยแต่ละส่วนมีส่วนหัว IP ของตนเอง และบรรทุกเพย์โหลด IP เดิมบางส่วน
หากดาตาแกรมต้นฉบับตั้งแฟล็ก DF หรือ Don’t Fragment ไว้ และต้องผ่านฮอปถัดไปที่มี MTU เล็กกว่า เราเตอร์จะไม่สามารถแบ่งดาตาแกรมนั้นได้ตามปกติ โดยทั่วไปเราเตอร์จะทิ้งแพ็กเก็ตและส่งข้อผิดพลาด ICMP ที่เหมาะสมกลับไป แต่การตอบกลับจริงขึ้นอยู่กับอุปกรณ์และการกรอง ส่วนผู้ส่งจะปรับขนาดแพ็กเก็ตหรือไม่นั้นขึ้นอยู่กับโปรโตคอลและการนำไปใช้งาน
สวิตช์อุตสาหกรรม Layer 2 ทั่วไปส่งต่อเฟรม Ethernet โดยไม่ได้แบ่งดาตาแกรม IPv4 ที่มีขนาดเกินให้เป็นส่วนย่อย IP อุปกรณ์ที่มีความสามารถในการกำหนดเส้นทางอาจประมวลผลทราฟฟิก IP แตกต่างกันตามอินเทอร์เฟซ การกำหนดค่า และเส้นทางจริง คำว่าสวิตช์หรือเกตเวย์บนตัวเครื่องไม่ได้ยืนยันพฤติกรรมของทุกพอร์ต
ผู้รับระบุส่วนย่อยที่เกี่ยวข้องกันได้อย่างไร?
ส่วนหัวของส่วนย่อย IPv4 มีที่อยู่ต้นทางและปลายทาง โปรโตคอล และค่าระบุ ผู้รับใช้ฟิลด์เหล่านี้ร่วมกันเพื่อเชื่อมโยงส่วนย่อยกับดาตาแกรมต้นฉบับ ฟิลด์ค่าระบุมีหน้าที่หลักเพื่อรองรับการแบ่งส่วนและการประกอบกลับ อย่าถือว่าฟิลด์นี้เป็นหมายเลขประจำแพ็กเก็ตที่ไม่ซ้ำกันทั่วโลกอย่างถาวรสำหรับทุกแพ็กเก็ต
ลองนึกถึงเอกสารยาวที่แบ่งเป็นหลายหน้า ป้ายระบุชุดและข้อมูลผู้รับช่วยจัดกลุ่มหน้าต่าง ๆ ได้ อย่างไรก็ตาม การเปรียบเทียบนี้มีข้อจำกัด อุปกรณ์เครือข่ายใช้ฟิลด์ของแพ็กเก็ตและกฎการประกอบกลับ ไม่ได้ทำความเข้าใจเนื้อหาเอกสาร และ ID ไม่ใช่การยืนยันตัวตนหรือกลไกความปลอดภัย
ข้อมูลการจับแพ็กเก็ตที่ผู้ส่ง เราเตอร์ และผู้รับอาจแสดงมุมมองต่างกัน อย่าจัดกลุ่มส่วนย่อยโดยใช้เพียง ID หรือรวมข้อมูลการจับแพ็กเก็ตจากต่างทิศทางและต่างตำแหน่งโดยไม่มีบริบท ให้ระบุจุดจับแพ็กเก็ต เวลา ที่อยู่ IP และโปรโตคอลก่อน แล้วจึงตรวจสอบฟิลด์ของส่วนย่อย

ออฟเซ็ตและแฟล็ก MF บอกอะไรเรา?
ออฟเซ็ตของส่วนย่อยระบุว่าเพย์โหลดของส่วนย่อยนั้นอยู่ตรงไหนในเพย์โหลด IP ต้นฉบับ ค่านี้แสดงเป็นหน่วยละแปดไบต์ ไม่ใช่หมายเลขไบต์ของเฟรม Ethernet ผู้รับใช้ออฟเซ็ตเพื่อวางส่วนย่อยให้ถูกตำแหน่ง ไม่ใช่เพียงนำมาต่อกันตามลำดับที่มาถึง ส่วนย่อยที่อยู่ภายหลังอาจมาถึงก่อนก็ได้
MF หมายถึง More Fragments หรือยังมีส่วนย่อยเพิ่มเติม โดยปกติส่วนย่อยที่ไม่ใช่ส่วนสุดท้ายจะตั้ง MF เป็น 1 ส่วนสุดท้ายจะตั้ง MF เป็น 0 การพบ MF = 0 บอกตำแหน่งสิ้นสุดของดาตาแกรม แต่ไม่ได้พิสูจน์ว่าส่วนก่อนหน้ามาถึงครบแล้ว ผู้รับยังต้องมีข้อมูลครอบคลุมครบตั้งแต่ต้นจนจบ ก่อนส่งเพย์โหลดที่ประกอบกลับแล้วไปยังขั้นถัดไป
การแบ่งส่วนยังต้องเป็นไปตามกฎการจัดแนวด้วย กล่าวคือ โดยปกติความยาวเพย์โหลดของส่วนย่อยต้องเป็นจำนวนเท่าของแปดไบต์ ยกเว้นส่วนย่อยสุดท้าย ผู้ปฏิบัติงานไม่จำเป็นต้องคำนวณฟิลด์เลขฐานสองทุกฟิลด์ด้วยตนเอง แต่ควรตรวจสอบว่าเครื่องมือจับแพ็กเก็ตแสดงค่าดิบของฟิลด์ออฟเซ็ต หรือตำแหน่งไบต์ที่แปลงค่าแล้ว
จะเกิดอะไรขึ้นหากส่วนหนึ่งสูญหาย?
โดยทั่วไปผู้รับจะเก็บสถานะการประกอบกลับไว้ชั่วคราวและรอส่วนย่อยที่ขาดหายไป หากดาตาแกรมยังไม่สมบูรณ์เมื่อสถานะนั้นหมดเวลารอ ดาตาแกรมจะถูกทิ้ง โดยปกติแอปพลิเคชันไม่สามารถใช้ส่วนย่อยที่เหลือแทนดาตาแกรม IP ที่สมบูรณ์ได้ ขีดจำกัดบัฟเฟอร์ การจัดการเมื่อหมดเวลารอ และนโยบายความปลอดภัยแตกต่างกันไปตามระบบ ดังนั้นคำอธิบายทั่วไปจึงไม่ได้ระบุค่าของผลิตภัณฑ์ใดโดยเฉพาะ
ยิ่งมีส่วนย่อยมาก ก็ยิ่งมีชิ้นส่วนที่ส่งแยกกันอย่างอิสระมากขึ้นสำหรับดาตาแกรมหนึ่งชุด ส่วนที่ขาดหายไปเพียงส่วนเดียวอาจทำให้ไม่สามารถประกอบดาตาแกรมทั้งชุดกลับได้ จึงต้องพิจารณาเส้นทางทั้งหมดและส่วนย่อยแต่ละส่วน แต่ความล้มเหลวของแพ็กเก็ตขนาดใหญ่เพียงอย่างเดียวไม่ได้พิสูจน์ว่ามีส่วนย่อยสูญหาย เพราะความแออัด การกรอง ภาระของอุปกรณ์ และปัญหาลิงก์อื่น ๆ อาจแสดงอาการคล้ายกัน
TCP หรือแอปพลิเคชันจะส่งซ้ำหรือไม่เป็นเรื่องของชั้นที่สูงกว่า และขึ้นอยู่กับโปรโตคอลและการนำไปใช้งาน การแบ่งส่วนของ IPv4 เองไม่ได้มีกลไกทั่วไปสำหรับการส่งซ้ำแต่ละส่วนย่อยอย่างเชื่อถือได้ แอปพลิเคชันที่ใช้ UDP ไม่ควรสันนิษฐานว่า IP จะส่งเพย์โหลดที่ขาดหายไปมาทดแทนโดยอัตโนมัติ

ควรบันทึกอะไรบ้างในการสืบหาปัญหา?
ในสภาพแวดล้อมทดสอบที่ได้รับอนุญาต ให้เริ่มจากจัดทำแผนผังผู้ส่ง สวิตช์ Layer 2 อินเทอร์เฟซกำหนดเส้นทาง ทันเนล และผู้รับ บันทึก MTU ของอินเทอร์เฟซ การตั้งค่า DF โปรโตคอล ตำแหน่งและเวลาที่จับแพ็กเก็ต สำหรับกลุ่มส่วนย่อยที่สงสัยแต่ละกลุ่ม ให้ตรวจสอบที่อยู่ต้นทางและปลายทาง โปรโตคอล ค่าระบุ ออฟเซ็ต และ MF แทนการดูเพียงความยาวแพ็กเก็ต
หากข้อมูลที่ผู้ส่งแสดงดาตาแกรมที่สมบูรณ์ แต่อินเทอร์เฟซขาออกของเราเตอร์แสดงส่วนย่อยหลายส่วน ให้ตรวจสอบการส่งต่อ IP และ MTU ของอินเทอร์เฟซ หากส่วนย่อยทั้งหมดออกจากอินเทอร์เฟซนั้น แต่มีเพียงบางส่วนถึงผู้รับ ให้สืบหาการสูญหายหรือการกรองตามเส้นทางจริง การกำหนดค่ามิเรอร์ทราฟฟิก การถ่ายโอนภาระการประมวลผลของอินเทอร์เฟซเครือข่าย และตำแหน่งจับแพ็กเก็ตอาจส่งผลต่อสิ่งที่มองเห็น ภาพหน้าจอเพียงภาพเดียวไม่ได้แสดงเครือข่ายทั้งหมด
ควรพิจารณาวิธีที่อุปกรณ์ความปลอดภัยจัดการส่วนย่อยด้วย กฎบางข้อจะตรวจสอบพอร์ตในชั้นขนส่ง แต่โดยปกติส่วนย่อยที่ไม่ใช่ส่วนแรกจะไม่มีส่วนหัวชั้นขนส่งครบถ้วน วิธีที่อุปกรณ์เชื่อมโยงสถานะและการอนุญาตให้ส่วนย่อยผ่านขึ้นอยู่กับการนำไปใช้งานและกฎของอุปกรณ์นั้น การที่ส่วนย่อยแรกผ่านไม่ได้พิสูจน์ว่าทุกส่วนย่อยผ่านแล้ว ให้บันทึกการกำหนดค่าปัจจุบันไว้ และประสานการเปลี่ยนแปลงกับผู้รับผิดชอบด้านความปลอดภัยในการปฏิบัติงานและความมั่นคงปลอดภัย
หากการประกอบกลับล้มเหลวซ้ำ ๆ ให้ตรวจสอบ MTU ของเส้นทาง การสูญหายของแพ็กเก็ต และการกรอง ก่อนที่จะเพียงเพิ่มเวลารอของผู้รับ แอปพลิเคชันแบบเรียลไทม์และแอปพลิเคชันที่ต้องการข้อมูลครบถ้วนอาจมีข้อจำกัดต่างกัน ให้ตัดสินใจเปลี่ยนแปลงโดยอ้างอิงการออกแบบโปรโตคอล เอกสารอุปกรณ์ และการทดสอบภายใต้การควบคุม
สำหรับการควบคุมการผลิต ให้เจ้าของสถานที่อนุมัติช่วงเวลาและขอบเขตการทดสอบ อย่าปิดใช้งานไฟร์วอลล์ เพิ่มขนาดเฟรม หรือเปิดใช้งานการกำหนดเส้นทางโดยไม่เข้าใจผลกระทบและไม่มีแผนย้อนกลับ ยืนยันการรองรับโปรโตคอลและขอบเขตเครือข่ายก่อนทดสอบการเปลี่ยนแปลงในวงจำกัด
แยกแต่ละขั้นตอนออกจากกัน
การแบ่งส่วนของ IPv4 เป็นกลไกในชั้นเครือข่าย ผู้รับใช้ที่อยู่ โปรโตคอล ค่าระบุ ออฟเซ็ต และข้อมูล MF เพื่อประกอบดาตาแกรมกลับ ส่วนย่อยอาจมาถึงไม่เรียงลำดับ แต่ดาตาแกรมต้องครบถ้วนและเป็นไปตามกฎของผู้รับก่อนส่งขึ้นไปยังชั้นที่สูงกว่า MTU การกำหนดเส้นทาง IP ขีดจำกัดเฟรมของสวิตช์ และการส่งซ้ำของแอปพลิเคชันเป็นคนละขั้นตอนกัน และต้องใช้หลักฐานแยกกัน
สวิตช์อุตสาหกรรมและเกตเวย์ FCTELE สามารถเป็นส่วนหนึ่งของเครือข่าย Ethernet อุตสาหกรรมได้ ผลิตภัณฑ์และเฟิร์มแวร์เฉพาะรุ่นจะรองรับการกำหนดเส้นทาง IP การตั้งค่า MTU ของอินเทอร์เฟซ หรือการกรองหรือไม่นั้น ต้องตรวจสอบจากเอกสารของผลิตภัณฑ์ ภาพประกอบเหล่านี้อธิบายกลไกทั่วไป ไม่ได้แสดงผลการวัดหรือวงจรภายในของ FCTELE รุ่นใดโดยเฉพาะ
เอกสารอ้างอิง
RFC 791: อินเทอร์เน็ตโปรโตคอล · RFC 6864: ฟิลด์ค่าระบุของ IPv4 · ข้อมูลผลิตภัณฑ์สวิตช์อุตสาหกรรมแบบจัดการได้ของ FCTELE.
แปลจากบทความทางเทคนิคภาษาจีน: อ่านบทความต้นฉบับภาษาจีน.
คำถามที่พบบ่อย
สวิตช์ Ethernet แบ่งดาตาแกรม IPv4 เป็นส่วนย่อยหรือไม่?
สวิตช์ Layer 2 ทั่วไปส่งต่อเฟรม ส่วนการแบ่งส่วน IP อาจเกิดขึ้นที่ผู้ส่ง IPv4 หรือที่เราเตอร์เมื่อได้รับอนุญาต
MF = 0 หมายความว่าส่วนย่อยมาถึงครบแล้วหรือไม่?
ไม่ใช่ ค่านี้ระบุส่วนย่อยสุดท้าย ผู้รับยังต้องมีข้อมูลครอบคลุมเพย์โหลดต้นฉบับอย่างครบถ้วน
จะเกิดอะไรขึ้นหากมีส่วนย่อยขาดหายไป?
ผู้รับจะรอตามกฎการประกอบกลับของตน หากสถานะการประกอบกลับหมดเวลารอ ดาตาแกรมที่ไม่สมบูรณ์จะถูกทิ้ง
ขอบเขตและข้อมูลอ่านเพิ่มเติม
นี่คือคำอธิบายทั่วไปเกี่ยวกับ IPv4 ไม่ใช่การทดสอบหรือการวัดผลิตภัณฑ์


