ส่วนหัวของแพ็คเก็ต IP: รูปแบบ, ฟิลด์
⚡ สรุปอย่างชาญฉลาด
ส่วนหัวของ IP คือข้อมูลเมตาที่วางไว้ที่จุดเริ่มต้นของทุกแพ็กเก็ต IP ซึ่งประกอบด้วยฟิลด์ต่างๆ เช่น เวอร์ชัน ความยาวส่วนหัว ความยาวทั้งหมด ระยะเวลาคงอยู่ โปรโตคอล ผลรวมตรวจสอบ และที่อยู่ต้นทางและปลายทางที่เราเตอร์อ่านเพื่อส่งข้อมูล
ส่วนหัวของ IP คืออะไร?
ส่วนหัวของแพ็กเก็ต IP คือข้อมูลเมตาที่อยู่ตอนต้นของแพ็กเก็ต IP โดยจะแสดงข้อมูลต่างๆ เช่น เวอร์ชันของ IP ความยาวของแพ็กเก็ต ต้นทาง และปลายทาง
รูปแบบส่วนหัวของ IPv4 มีความยาว 20 ถึง 60 ไบต์ และประกอบด้วยข้อมูลที่จำเป็นสำหรับการกำหนดเส้นทางและการส่งข้อมูล ประกอบด้วยฟิลด์ต่างๆ เช่น เวอร์ชัน ความยาวส่วนหัว ความยาวทั้งหมด รหัสประจำตัว แฟล็ก ผลรวมตรวจสอบ ที่อยู่ IP ต้นทาง และที่อยู่ IP ปลายทาง ฟิลด์เหล่านี้รวมกันแล้วให้ข้อมูลสำคัญที่จำเป็นสำหรับ transmit ส่งแพ็กเก็ตจากโฮสต์หนึ่งไปยังอีกโฮสต์หนึ่งได้อย่างน่าเชื่อถือ
ส่วนประกอบ/ฟิลด์ส่วนหัว IPv4
แผนภาพด้านล่างแสดงรูปแบบส่วนหัว IPv4 ที่สมบูรณ์ โดยแต่ละฟิลด์ถูกวาดในตำแหน่งและความกว้างบิตที่ถูกต้อง:
ต่อไปนี้คือส่วนประกอบ/ฟิลด์ต่างๆ ของส่วนหัวของแพ็กเก็ต IP:
- เวอร์ชัน: ฟิลด์แรกของส่วนหัว IP คือตัวบ่งชี้เวอร์ชัน 4 บิต ใน IPv4 ค่าของบิตทั้งสี่นี้จะถูกตั้งค่าเป็น 0100 ซึ่งหมายถึง 4 ในเลขฐานสอง หากเราเตอร์ไม่รองรับเวอร์ชันที่ระบุ แพ็กเก็ตจะถูกทิ้ง
- ความยาวส่วนหัวของอินเทอร์เน็ต: ความยาวส่วนหัวของอินเทอร์เน็ต หรือเรียกสั้น ๆ ว่า IHL มีขนาด 4 บิต เรียกอีกอย่างว่า HELEN (Header Length) ส่วนประกอบของ IP นี้แสดงจำนวนคำ 32 บิตที่มีอยู่ในส่วนหัว
- ประเภทบริการ: ประเภทของบริการเรียกอีกอย่างว่า บริการที่แตกต่างกัน Code ค่า Point หรือ DSCP ฟิลด์นี้ให้คุณสมบัติที่เกี่ยวข้องกับคุณภาพการบริการสำหรับการสตรีมข้อมูลหรือการโทร VoIP บิต 3 บิตแรกเป็นบิตลำดับความสำคัญ นอกจากนี้ยังระบุวิธีการจัดการดาตาแกรมด้วย
- ความยาวทั้งหมด: ความยาวทั้งหมดวัดเป็นไบต์ ขนาดขั้นต่ำของดาตาแกรม IP คือ 20 ไบต์ และขนาดสูงสุดคือ 65,535 ไบต์ สามารถใช้ HELEN และความยาวทั้งหมดเพื่อคำนวณขนาดของเพย์โหลดได้ โฮสต์ทั้งหมดจะต้องสามารถอ่านดาตาแกรมขนาด 576 ไบต์ได้ อย่างไรก็ตาม หากดาตาแกรมมีขนาดใหญ่เกินไปสำหรับโฮสต์ในเครือข่าย วิธีการแบ่งส่วนดาตาแกรมจะถูกนำมาใช้กันอย่างแพร่หลาย
- บัตรประจำตัว: ฟิลด์การระบุ (Identification) คือฟิลด์ที่ใช้ระบุส่วนย่อยของดาตาแกรม IP อย่างเฉพาะเจาะจง บางคนแนะนำให้ใช้ฟิลด์นี้เพื่อวัตถุประสงค์อื่น เช่น การเพิ่มข้อมูลสำหรับแพ็กเก็ต tracไอเอ็นจี
- ค่าสถานะ IP: Flags คือฟิลด์สามบิตที่ช่วยให้คุณควบคุมและระบุส่วนย่อย (fragments) การกำหนดค่าที่เป็นไปได้มีดังนี้: บิตที่ 0 สงวนไว้และต้องตั้งค่าเป็นศูนย์; บิตที่ 1 หมายถึงห้ามแบ่งส่วนย่อย; และบิตที่ 2 หมายถึงแบ่งส่วนย่อยได้มากขึ้น
- การชดเชยส่วน: ค่าชดเชยส่วนย่อย (Fragment Offset) แสดงถึงจำนวนไบต์ข้อมูลที่อยู่ข้างหน้าส่วนย่อยเฉพาะในดาตาแกรมนั้นๆ โดยระบุเป็นหน่วย 8 ไบต์ และมีค่าสูงสุด 65,528 ไบต์
- เวลาที่จะมีชีวิตอยู่: นี่คือฟิลด์ 8 บิตที่ระบุเวลาสูงสุดที่ดาตาแกรมสามารถคงอยู่ในระบบอินเทอร์เน็ตได้ ทุกครั้งที่มีการประมวลผลดาตาแกรม ค่า TTL จะลดลงหนึ่ง เมื่อค่า TTL ลดลงเหลือศูนย์ ดาตาแกรมจะถูกทิ้งเพื่อป้องกันไม่ให้แพ็กเก็ตถูกส่งไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด ค่า TTL สามารถอยู่ในช่วงตั้งแต่ 0 ถึง 255
- Protocol: ฟิลด์ส่วนหัวของ IPv4 นี้ระบุว่าโปรโตคอลอินเทอร์เน็ตใดถูกส่งไปในส่วนท้ายของดาตาแกรม ตัวอย่างเช่น เลข 6 ใช้เพื่อระบุ TCP และเลข 17 ใช้เพื่อระบุโปรโตคอล UDP
- การตรวจสอบส่วนหัว: ส่วนประกอบถัดไปคือฟิลด์ตรวจสอบความถูกต้องของส่วนหัวขนาด 16 บิต ซึ่งใช้ตรวจสอบส่วนหัวเพื่อหาข้อผิดพลาด ส่วนหัวของ IP จะถูกเปรียบเทียบกับค่าตรวจสอบความถูกต้อง หากค่าตรวจสอบความถูกต้องของส่วนหัวไม่ตรงกัน แพ็กเก็ตนั้นจะถูกทิ้ง
- ที่อยู่ต้นทาง: ที่อยู่ต้นทางคือที่อยู่แบบ 32 บิตของต้นทางที่ใช้สำหรับแพ็กเก็ต IPv4
- ที่อยู่ปลายทาง: ที่อยู่ปลายทางมีขนาด 32 บิตเช่นกัน และจะเก็บที่อยู่ของผู้รับ
- ตัวเลือก IP: นี่คือฟิลด์เสริมในส่วนหัวของ IPv4 ซึ่งใช้เมื่อค่า IHL (Internet Header Length) มีค่ามากกว่า 5 โดยฟิลด์นี้จะมีค่าและการตั้งค่าที่เกี่ยวข้องกับความปลอดภัย เส้นทางการบันทึก การประทับเวลา และตัวเลือกอื่นๆ ที่คล้ายกัน โดยปกติรายการตัวเลือกจะสิ้นสุดด้วยเครื่องหมาย End of Options List (EOL)
- วันที่: ฟิลด์นี้เก็บข้อมูลจากเลเยอร์โปรโตคอลที่ส่งต่อข้อมูลไปยังเลเยอร์ IP
วิธีคำนวณความยาวส่วนหัวของ IPv4
ฟิลด์ Internet Header Length (IHL) บอกเราเตอร์ว่าส่วนหัวมีความยาวเท่าใด เพื่อให้เราเตอร์รู้ว่าส่วนหัวสิ้นสุดที่ใดและข้อมูลเริ่มต้นที่ใด เนื่องจากฟิลด์นี้มีความกว้างเพียง 4 บิต จึงไม่ได้จัดเก็บความยาวเป็นไบต์โดยตรง แต่จะนับส่วนหัวเป็นคำ 32 บิต โดยแต่ละคำเท่ากับ 4 ไบต์
ในการแปลงค่า IHL เป็นไบต์ ให้คูณด้วย 4:
- จำนวนขั้นต่ำ: ค่า IHL ที่ถูกต้องตามกฎหมายที่เล็กที่สุดคือ 5 ดังนั้น 5 × 4 = 20 ไบต์ นี่คือส่วนหัวที่ไม่มีตัวเลือกเพิ่มเติม
- สูงสุด: ค่า IHL ที่ใหญ่ที่สุดคือ 15 ดังนั้น 15 × 4 = 60 ไบต์ ส่วนที่เหลืออีก 40 ไบต์เป็นข้อมูลสำหรับฟิลด์เสริม
ลองพิจารณาตัวอย่างการคำนวณ หากแพ็กเก็ตมาถึงโดยมีค่า IHL เท่ากับ 6 ความยาวของส่วนหัวจะเป็น 6 × 4 = 24 ไบต์ ซึ่งหมายความว่ามีตัวเลือก 4 ไบต์อยู่หลังส่วนหัวมาตรฐาน 20 ไบต์ ในการหาขนาดของเพย์โหลด ให้คำนวณโดยใช้สูตรtracความยาวของส่วนหัวจะคำนวณจากช่องความยาวทั้งหมด หากความยาวทั้งหมดคือ 1,500 ไบต์ และส่วนหัวคือ 24 ไบต์ ดังนั้นส่วนของข้อมูลจะมีขนาด 1,500 − 24 = 1,476 ไบต์
การคำนวณนี้มีความสำคัญในระหว่างการแบ่งส่วนข้อมูล เนื่องจากเราเตอร์ต้องทราบขนาดของส่วนหัวเพื่อคำนวณว่าแต่ละส่วนสามารถรองรับข้อมูลได้มากแค่ไหนโดยไม่เกินขีดจำกัดสูงสุดของเครือข่าย Transmission หน่วย (MTU)
ส่วนหัวของ IPv4 เทียบกับ IPv6
ส่วนหัวของ IPv6 ได้รับการออกแบบใหม่ให้เรียบง่ายและประมวลผลได้เร็วกว่าส่วนหัวของ IPv4 โดยใช้ความยาวคงที่และย้ายตัวเลือกที่ใช้งานไม่บ่อยไปไว้ในส่วนหัวส่วนขยายแยกต่างหาก ทำให้เราเตอร์สามารถส่งต่อแพ็กเก็ตด้วยความเร็วสูงสุด ตารางด้านล่างเปรียบเทียบส่วนหัวทั้งสองแบบทีละฟิลด์:
| คุณสมบัติ (Feature) | ส่วนหัว IPv4 | ส่วนหัว IPv6 |
|---|---|---|
| ขนาดส่วนหัว | 20 ถึง 60 ไบต์ (แปรผันได้) | 40 ไบต์ (คงที่) |
| จำนวนฟิลด์ | 13 ช่องกรอกข้อมูล พร้อมตัวเลือกเพิ่มเติม | 8 ช่อง |
| ความยาวของที่อยู่ | แหล่งที่มาและปลายทาง 32 บิต | แหล่งที่มาและปลายทาง 128 บิต |
| ผลรวมตรวจสอบส่วนหัว | ปัจจุบัน | ลบออก |
| ฟิลด์การแตกตัว | ในส่วนหัวพื้นฐาน (การระบุตัวตน, แฟล็ก, ออฟเซ็ต) | ย้ายไปยังส่วนหัวส่วนขยาย Fragment แล้ว |
| ตัวเลือก | อยู่ภายในส่วนหัว | ขนส่งในส่วนหัวส่วนขยาย |
| ฟิลด์ความยาว | ความยาวทั้งหมด (ส่วนหัวบวกข้อมูล) | ความยาวของข้อมูล (เฉพาะข้อมูล) |
เนื่องจาก IPv6 ตัดส่วนตรวจสอบความถูกต้อง (checksum) และตัวเลือกความยาวแปรผันออกไป ส่วนหัวของ IPv6 จึงมีฟิลด์น้อยลงและสามารถประมวลผลได้ด้วยฮาร์ดแวร์โดยไม่ต้องคำนวณใหม่ทุกครั้งที่ส่งต่อไปยังปลายทางอื่น
เหตุใดส่วนหัว IP จึงมีความสำคัญ
ทุกฟิลด์ในส่วนหัวของที่อยู่ IP มีอยู่เพื่อให้เราเตอร์และโฮสต์สามารถส่งแพ็กเก็ตข้ามเครือข่ายต่างๆ ได้โดยไม่ต้องมีการเชื่อมต่อถาวรระหว่างกัน ส่วนหัวนี้เองที่ทำให้การสลับแพ็กเก็ตทำงานได้
- สายงานการผลิต: ที่อยู่ปลายทางจะบอกเราเตอร์แต่ละตัวว่าควรส่งแพ็กเก็ตไปที่ใด ในขณะที่ที่อยู่ต้นทางจะอนุญาตให้ส่งการตอบกลับและข้อความแสดงข้อผิดพลาดกลับมาได้
- การป้องกันการเกิดลูป: ค่า Time to Live จะลดลงทุกครั้งที่มีการส่งต่อแพ็กเก็ต ดังนั้นแพ็กเก็ตที่ส่งผิดเส้นทางจะถูกทิ้งไปแทนที่จะวนเวียนอยู่ในอินเทอร์เน็ตตลอดไป
- ส่งมอบตามโปรโตคอลที่ถูกต้อง: ฟิลด์ Protocol จะบอกโฮสต์ผู้รับว่าควรส่งข้อมูลผ่านโปรโตคอล TCP, UDP หรือโปรโตคอลอื่น
- Integrity และการประกอบใหม่: ค่าตรวจสอบความถูกต้อง (checksum) ช่วยป้องกันส่วนหัวจากการเสียหาย และฟิลด์ Identification, Flags และ Fragment Offset ช่วยให้สามารถสร้างดาตาแกรมที่แตกเป็นส่วนๆ ขึ้นมาใหม่ให้อยู่ในลำดับที่ถูกต้องได้
สำหรับวิศวกรเครือข่าย การอ่านข้อมูลในสาขาเหล่านี้อย่างละเอียดจะช่วยเพิ่มพูนความรู้ได้ TCP / IP การบันทึกข้อมูลมักเป็นวิธีที่เร็วที่สุดในการวินิจฉัยปัญหาแพ็กเก็ตตกหล่น วงวนการกำหนดเส้นทาง และการตั้งค่าที่ไม่ถูกต้อง ที่อยู่ IP.


