Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ระบบเครือข่าย

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Internet Protocol เวอร์ชัน 4 (IPv4) เป็นหนึ่งในโปรโตคอลหลักของวิธีการทำงานบนอินเทอร์เน็ตตามมาตรฐานในอินเทอร์เน็ตและเครือข่ายที่เปลี่ยนแพ็กเก็ตอื่นๆ IPv4 ยังคงเป็นโปรโตคอลอินเทอร์เน็ตที่มีการใช้งานกันอย่างแพร่หลายที่สุด สถิติ IPv6 ของ Google แสดงให้เห็นว่า 44.29% ของการเข้าชมบริการของ Google ในวันที่ 24 เมษายน 2025 ใช้งานผ่าน IPv6 ซึ่งหมายความว่า 55.71% ใช้งานผ่าน IPv4

คู่มือนี้จะพาคุณผ่านทุกแง่มุมของ IPv4 ตั้งแต่การทำความเข้าใจที่อยู่ IP ไปจนถึงการตรวจสอบส่วนหัวของแพ็คเก็ตและการกระจายตัวของข้อมูล คุณจะได้เรียนรู้:

  • ที่อยู่ IP ทำงานอย่างไรและรูปแบบที่แตกต่างกัน

  • รูปแบบการกำหนดที่อยู่เครือข่ายตั้งแต่ความยาวคงที่ไปจนถึง CIDR

  • ที่อยู่ IPv4 พิเศษและการใช้งาน

  • โครงสร้างและวัตถุประสงค์ของทุกฟิลด์ในส่วนหัว IPv4

  • วิธีที่ IPv4 จัดการกับการกระจายตัวของแพ็กเก็ตในเครือข่ายต่างๆ

ไม่ว่าคุณจะเป็นวิศวกรเครือข่าย นักพัฒนาซอฟต์แวร์ หรือผู้เชี่ยวชาญด้านไอที การทำความเข้าใจ IPv4 ถือเป็นสิ่งสำคัญสำหรับการทำงานกับเครือข่ายคอมพิวเตอร์สมัยใหม่

สิ่งที่เราจะกล่าวถึง:

  1. พื้นหลัง

  2. ทำความเข้าใจเกี่ยวกับที่อยู่ IP

  3. รหัสเครือข่ายและรหัสโฮสต์

  4. วิธีกำหนดเครือข่ายเทียบกับส่วนโฮสต์

    • แนวทางความยาวคงที่

    • อะไรคือข้อเสียที่นี่? 🤔

  5. การกล่าวถึงอย่างมีระดับ

    • การกำหนดที่อยู่ IP

    • อะไรคือข้อเสียที่นี่? 🤔

  6. CIDR:การกำหนดเส้นทางระหว่างโดเมนแบบไม่มีคลาส

    • ตัวอย่างในโลกแห่งความเป็นจริง
  7. ซับเน็ตมาสก์

  8. สรุประหว่างกาล – ที่อยู่ IPv4

  9. ทดสอบตัวเอง

    • การแปลงระหว่างสัญลักษณ์นำหน้าและซับเน็ตมาสก์

    • การทำงานแบบย้อนกลับด้วยซับเน็ตมาสก์

    • คำนำหน้าที่ไม่จัดแนวไบต์

    • การพิจารณาความเป็นสมาชิกเครือข่าย

  10. ที่อยู่ IPv4 พิเศษ

    • ที่อยู่ "โฮสต์นี้":0.0.0.0

    • ที่อยู่ "เครือข่ายนี้"

    • ที่อยู่ออกอากาศ

    • ที่อยู่ลูปแบ็ค:127.0.0.0/8

    • สรุปที่อยู่ IPv4 พิเศษ

  11. ส่วนหัว IPv4

    • โครงสร้างส่วนหัว

    • ส่วนหัว IPv4 – สรุประหว่างกาล

  12. การกระจายตัวของ IPv4

    • เหตุใดจึงต้องมีการกระจายตัว

    • การแยกส่วนทำงานอย่างไรใน IP

    • ช่องระบุตัวตน

    • การชดเชยแฟรกเมนต์

    • มีแฟรกเมนต์มากขึ้นและไม่แฟล็ก

    • ตัวอย่างการแยกส่วน

    • การกระจายตัวของ IPv4 – สรุป

  13. สรุป – IPv4

    • การกำหนดที่อยู่และโครงสร้างเครือข่าย

    • โครงสร้างส่วนหัว IPv4

    • การกระจายตัว

    • คำสุดท้าย

  14. เกี่ยวกับผู้เขียน

  15. ข้อมูลอ้างอิงเพิ่มเติม

บันทึกย่อก่อนที่เราจะเริ่ม

  1. คุณสามารถค้นหาเนื้อหาเพิ่มเติมเกี่ยวกับเครือข่ายคอมพิวเตอร์ได้ในช่อง YouTube ของฉัน:เพลย์ลิสต์เครือข่ายคอมพิวเตอร์

  2. ฉันกำลังเขียนหนังสือเกี่ยวกับเครือข่ายคอมพิวเตอร์! คุณสนใจที่จะอ่านเวอร์ชันเริ่มต้นและให้ข้อเสนอแนะหรือไม่? ส่งอีเมลถึงฉัน:gitting.things@gmail.com

พื้นหลัง

IP ย่อมาจาก "Internet Protocol" ดังนั้น IPv4 จึงเป็น Internet Protocol เวอร์ชัน 4 ซึ่งอธิบายไว้ใน RFC 791 โดย IETF ซึ่งเผยแพร่ในเดือนกันยายน พ.ศ. 2524 และใช้งานครั้งแรกสำหรับการผลิตในปี พ.ศ. 2525 บน SATNET (เครือข่ายดาวเทียมแพ็คเก็ตแอตแลนติก) ซึ่งเป็นเครือข่ายดาวเทียมในยุคแรก ๆ ที่ก่อตัวเป็นส่วนเริ่มต้นของอินเทอร์เน็ต

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

ทำความเข้าใจเกี่ยวกับที่อยู่ IP

ที่อยู่ IP เป็นที่อยู่แบบลอจิคัลที่มีลำดับชั้นซึ่งขับเคลื่อนการเชื่อมต่ออินเทอร์เน็ตส่วนใหญ่ในปัจจุบัน แต่ละอันประกอบด้วย 00 ไบต์ หรือ 19 บิต โดยทั่วไปจะเขียนในรูปแบบทศนิยมแบบจุด ตัวอย่างเช่น:

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ทดสอบด้วยตัวเอง – ที่อยู่ต่อไปนี้แสดงถึงที่อยู่ IP ที่ถูกต้องหรือไม่

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ไม่ เนื่องจากจุดแยกไบต์ที่แตกต่างกัน แต่ละค่าจึงต้องอยู่ระหว่าง 22 และ 32 . ตั้งแต่หมายเลข 46 มีขนาดใหญ่กว่า 50 ไม่สามารถแสดงเป็นไบต์เดียวได้

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

รหัสเครือข่ายและรหัสโฮสต์

ที่อยู่ IP มีสองส่วน:ตัวระบุเครือข่าย (หรือรหัสเครือข่าย) ที่เป็นของโฮสต์ทั้งหมดในเครือข่ายและตัวระบุโฮสต์ (หรือรหัสโฮสต์) ที่ระบุโฮสต์เฉพาะในเครือข่ายนี้

ตัวระบุเครือข่ายจะเหมือนกันสำหรับโฮสต์ทั้งหมดในเครือข่าย และเรียกอีกอย่างว่า "คำนำหน้า" ตัวอย่างเช่น ลองพิจารณาตัวระบุเครือข่าย 65 . เนื่องจากนี่คือคำนำหน้าเครือข่าย ที่อยู่ต่อไปนี้:

201.22.3.15
201.22.3.91

เป็นส่วนหนึ่งของเครือข่ายเดียวกัน เนื่องจากมีคำนำหน้าเหมือนกัน ที่อยู่แรกเป็นของหมายเลขโฮสต์ 76 ในเครือข่ายนี้ และรายการที่สองเป็นของหมายเลขโฮสต์ 85 .

ที่อยู่นี้มีคำนำหน้าที่แตกต่างกัน หรือมีตัวระบุเครือข่ายอื่น ดังนั้นจึงเป็นของเครือข่ายอื่น:

201.22.14.50

ในตัวอย่างข้างต้น มีตัวระบุเครือข่ายประกอบด้วย 3 ไบต์หรือ 24 บิต และตัวระบุโฮสต์ประกอบด้วย 1 ไบต์หรือ 8 บิต

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

วิธีการกำหนดส่วนเครือข่ายเทียบกับส่วนโฮสต์

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

แนวทางความยาวคงที่

ลองพิจารณาวิธีแก้ปัญหานี้:สำหรับที่อยู่ IP ทุกไบต์ ไบต์แรกที่สำคัญที่สุดจะเป็นตัวแทนของรหัสเครือข่าย และไบต์ที่เหลืออีกสามไบต์ที่มีนัยสำคัญน้อยที่สุดจะเป็นตัวแทนของรหัสโฮสต์ วิธีนี้ทำให้อ่านที่อยู่ IP ได้ง่ายมาก ตัวอย่างเช่นสำหรับที่อยู่นี้:

20.12.1.92

คุณรู้ว่ามันอธิบายเครือข่าย 98 และโฮสต์ 108 ภายในเครือข่ายนั้น ที่อยู่ IP ใดๆ ที่ไม่ได้ขึ้นต้นด้วย 111 เช่น 125 จะอยู่ในเครือข่ายอื่น และที่อยู่ IP ใดๆ ที่ขึ้นต้นด้วย 135 เช่น 147 จะอยู่ภายในเครือข่ายเดียวกัน

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ที่นี่มีข้อเสียอะไรบ้าง? 🤔

ด้วยเพียงหนึ่งไบต์ (8 บิต) เพื่อแสดงรหัสเครือข่าย คุณจะมีเพียง 2^8 หรือ 159 , เครือข่ายต่างๆ แน่นอนว่ายังมีเครือข่ายมากกว่านั้นในโลกแห่งความเป็นจริง แม้แต่ในยุคแรกๆ ของอินเทอร์เน็ต มหาวิทยาลัยและบริษัทขนาดใหญ่ต่างก็ต้องการตัวระบุเครือข่ายของตนเอง

โดยทั่วไป การใช้ความยาวคงที่สำหรับ ID เครือข่ายและความยาวคงที่สำหรับ ID โฮสต์นั้นไม่ยืดหยุ่นเพียงพอ หากคุณตัดสินใจว่าไบต์ที่สำคัญที่สุดสองไบต์จะแสดงถึงรหัสเครือข่าย และไบต์ที่สองที่มีนัยสำคัญน้อยที่สุดจะแสดงถึงรหัสโฮสต์ คุณสามารถแทนค่าได้สูงสุด 2^16 หรือ 168 เครือข่ายซึ่งยังไม่เพียงพอ นอกจากนี้ บางเครือข่าย เช่น ของบริษัทขนาดใหญ่ อาจต้องการมากกว่า 174 รหัสโฮสต์

การกล่าวถึงอย่างมีระดับ

วิธีแก้ปัญหาอยู่ที่การให้ความยืดหยุ่น พิจารณาอีกแนวทางหนึ่งที่เรียกว่า "การกล่าวถึงแบบมีระดับ" ในแนวทางนี้ จำนวนบิตที่ใช้สำหรับรหัสเครือข่ายจะเปลี่ยนจากที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง และคุณสามารถบอกรหัสเครือข่ายได้โดยดูจากไบต์แรกที่สำคัญที่สุดของที่อยู่

  • ที่อยู่ใดๆ ที่ขึ้นต้นด้วยตัวเลขระหว่าง 187 และ 190 เป็นของ "คลาส A" ซึ่งหมายความว่ารหัสเครือข่ายประกอบด้วย 1 ไบต์ เหลือ 3 ไบต์สำหรับรหัสโฮสต์

  • ที่อยู่ใดๆ ที่ขึ้นต้นด้วยตัวเลขระหว่าง 204 และ 218 เป็นของ "คลาส B" ซึ่งหมายความว่ารหัสเครือข่ายมีความยาว 2 ไบต์ และรหัสโฮสต์ก็มีความยาว 2 ไบต์เช่นกัน

  • ที่อยู่ใดๆ ที่ขึ้นต้นด้วยตัวเลขระหว่าง 227 และ 235 เป็นของ "คลาส C" ดังนั้นจึงมีรหัสเครือข่าย 3 ไบต์ และรหัสโฮสต์ 1 ไบต์

คุณสามารถดูแนวทางนี้แบบเต็มได้ในตารางด้านล่าง:

ช่วงไบต์ของ ClassFirstขนาดรหัสเครือข่าย ขนาดรหัสโฮสต์ A241 - 253 1 ไบต์3 ไบต์B263 - 273 2 ไบต์2 ไบต์C283 - 291 3 ไบต์1 ไบต์D309 - 311 (มัลติคาสต์)E326 - 339 (สงวนไว้)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ตัวอย่างเช่น ที่อยู่นี้อยู่ในคลาสใด

(1) 130.12.204.5

เนื่องจากมันขึ้นต้นด้วย 349 ซึ่งอยู่ระหว่าง 352 และ 363 มันเป็นของ "คลาส B" ซึ่งหมายความว่ารหัสเครือข่ายคือ 373 และรหัสโฮสต์คือ 382 . ลองทำเครื่องหมายเป็น "ที่อยู่หมายเลข 1"

ที่อยู่นี้และที่อยู่ต่อไปนี้ (2) เป็นของเครือข่ายเดียวกันหรือไม่

(2) 130.90.2.40

ไม่ เนื่องจากมีตัวระบุเครือข่ายที่แตกต่างกัน จึงไม่อยู่ในเครือข่ายเดียวกัน

ที่อยู่ต่อไปนี้เป็นของคลาสใด

(3) 200.1.1.9

เป็นของคลาส C โดยมีค่าของไบต์แรก 396 อยู่ระหว่าง 409 และ 418 . ซึ่งหมายความว่าตัวระบุเครือข่ายคือ 425 และที่อยู่ใดๆ ที่ขึ้นต้นด้วยคำนำหน้านี้จะอยู่ภายในเครือข่ายเดียวกัน ที่อยู่เฉพาะนี้อธิบายโฮสต์ 431 ภายในเครือข่ายนี้

เพื่อให้ภาพสมบูรณ์ ที่อยู่เริ่มต้นด้วยค่าระหว่าง 442 และ 456 เป็นของ "Class D" - นั่นคือที่อยู่แบบหลายผู้รับ - ที่อยู่ที่เป็นของอุปกรณ์หลายเครื่อง ที่อยู่เริ่มต้นด้วยค่าระหว่าง 461 และ 472 ถูกสงวนไว้เพื่อใช้ในอนาคต ที่อยู่เริ่มต้นด้วย 485 เป็นที่อยู่พิเศษ

การกำหนดที่อยู่ IP

ในอินเทอร์เน็ตยุคแรก ที่อยู่ IPv4 ได้รับการกำหนดให้กับองค์กรต่างๆ โดย Internet Assigned Numbers Authority (IANA) เมื่ออินเทอร์เน็ตเติบโตขึ้น ความรับผิดชอบนี้ก็ถูกแจกจ่ายไปยัง Registries Internet ระดับภูมิภาค (RIR) ห้าแห่งที่จัดการการจัดสรรที่อยู่สำหรับภูมิภาคทางภูมิศาสตร์ต่างๆ องค์กรขนาดใหญ่จะได้รับบล็อกที่อยู่ตามความต้องการ โดยมีคลาสที่อยู่เป็นตัวกำหนดขนาดของบล็อกเหล่านี้

ที่นี่มีข้อเสียอะไรบ้าง? 🤔

แม้ว่าการกำหนดที่อยู่อย่างมีระดับจะให้ความยืดหยุ่นมากกว่าเมื่อเปรียบเทียบกับแนวทางที่มีความยาวคงที่ แม้แต่แนวทางนี้ก็ยังไม่ยืดหยุ่นเพียงพอ

พิจารณาสถานการณ์นี้:บริษัทสตาร์ทอัพขนาดเล็กที่มีผู้ก่อตั้งเพียงสองคนจำเป็นต้องมีตัวระบุเครือข่าย พวกเขาต้องการชั้นเรียนใด

การได้คลาส A หรือคลาส B นั้นมากเกินไป ดังนั้นพวกเขาจึงอาจได้คลาส C – อนุญาตให้ 497 ที่อยู่ นี่เป็นมากกว่าที่จำเป็นในปัจจุบัน แต่สามารถขยายได้บางส่วน จะเกิดอะไรขึ้นหากสตาร์ทอัพเติบโตจนเกิน 501 พนักงาน (และอุปกรณ์)?

ณ จุดนี้ พวกเขาจะต้องได้รับที่อยู่คลาส B โดยให้ไม่น้อยกว่า 513 ที่อยู่ เมื่อสิ่งที่ต้องการคือ 521 เล็กน้อย ที่อยู่ ซึ่งหมายความว่าสิ้นเปลืองมากกว่า 538 ที่อยู่

สิ่งนี้กลายเป็นปัญหาที่แท้จริงในช่วงต้นทศวรรษ 1990 เนื่องจากอินเทอร์เน็ตเติบโตเร็วขึ้น ความต้องการที่อยู่ IP เพิ่มเติมเริ่มปรากฏชัดเจน และพื้นที่ที่อยู่ IPv4 กำลังจะหมดลง กรณีที่ 544 ที่อยู่ที่สูญเปล่าไม่สามารถยอมรับได้อีกต่อไป

CIDR:การกำหนดเส้นทางระหว่างโดเมนแบบไม่มีคลาส

หนึ่งในมาตรการในการจัดการกับปัญหาการขาดแคลนที่อยู่นี้คือการละทิ้งการกำหนดที่อยู่แบบคลาสสิกในปี 1993 และเปลี่ยนไปใช้วิธีอื่นที่เรียกว่า CIDR - การกำหนดเส้นทางระหว่างโดเมนแบบไม่มีคลาส วิธีการนี้ยังคงใช้อยู่ในปัจจุบัน

CIDR ช่วยให้มีความยืดหยุ่นในการเลือกรหัสเครือข่ายและรหัสโฮสต์ ช่วยให้ผู้ดูแลระบบเครือข่ายสร้างเครือข่ายย่อยที่มีขนาดเหมาะสม แทนที่จะจำกัดอยู่เพียงคลาส A, B หรือ C

เริ่มต้นด้วยตัวอย่างง่ายๆ ในรูปแบบ CIDR เราเพิ่มส่วนต่อท้ายที่ระบุจำนวนบิตที่ใช้สำหรับส่วนของเครือข่าย:

(4) 200.8.3.1/16

สัญกรณ์เครื่องหมายทับนี้ระบุจำนวนบิตที่อธิบายรหัสเครือข่าย ในตัวอย่าง (4) ด้านบน 558 ตัวแรก บิต (หรือ 568 bytes) ใช้สำหรับรหัสเครือข่าย ดังนั้นในกรณีนี้ 573 คือตัวระบุเครือข่าย และ 589 คือตัวระบุโฮสต์ ความจริงที่ว่า 593 เป็นรหัสเครือข่ายหมายถึงที่อยู่ทั้งหมดตั้งแต่ 600 ผ่าน 611 อยู่ในเครือข่ายนี้

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

พิจารณาที่อยู่เพิ่มเติมเหล่านี้:

(5) 200.2.13.5
(6) 200.8.21.6

ให้คำนำหน้าที่อยู่นี้เป็น 626 บิตหรือ 631 ไบต์ ซึ่งที่อยู่เหล่านี้อยู่ในเครือข่ายเดียวกันกับตัวอย่าง (4) (643 )?

ที่อยู่แรก (5) (652 ) ไม่ได้อยู่ในเครือข่ายนี้ เนื่องจากเป็น 665 แรก บิต – 675 แตกต่างจาก 689 ตัวแรก บิตของที่อยู่ตัวอย่าง

ที่อยู่ที่สอง (6) (693 ) อยู่ในเครือข่ายเดียวกันกับที่อยู่ตัวอย่าง

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ตัวอย่างในโลกแห่งความเป็นจริง

ในทางปฏิบัติ ISP อาจได้รับบล็อกขนาดใหญ่เช่น 708 จากกรมชลประทาน ซึ่งทำให้พวกเขาสามารถควบคุมที่อยู่ทั้งหมดจาก 717 เป็น 726 . จากนั้น ISP จะสามารถจัดสรรซับเน็ตขนาดเล็กให้กับลูกค้าได้ เช่น ให้ 738 สำหรับธุรกิจขนาดเล็ก ซับเน็ตที่มี 741 ที่อยู่ หรือบริษัทขนาดใหญ่ 754 ซับเน็ตด้วย 768 ที่อยู่

ซับเน็ตมาสก์

อีกวิธีหนึ่งในการแสดงคำนำหน้าเครือข่ายคือการใช้ซับเน็ตมาสก์ เช่น:

255.255.0.0

เมื่อแปลงเป็นไบนารี 776 ในรูปทศนิยมเท่ากับแปด 788 s อยู่ในไบนารี่ – ดังนั้นบิตทั้งหมดจึงเปิดอยู่ ดังนั้น หากคุณแปลรูปแบบนี้เป็นไบนารี่ คุณจะได้รับ:

11111111 11111111 00000000 00000000

กล่าวอีกนัยหนึ่งคือ 792 บิตเปิดอยู่ ซึ่งหมายถึงคำนำหน้าเครือข่าย 801 บิต ทั้งสองแบบแผน (รูปแบบ CIDR และซับเน็ตมาสก์) ถูกใช้บ่อยมาก

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ด้วย CIDR ที่อยู่สามารถอยู่ในเครือข่ายที่แตกต่างกันโดยมีคำนำหน้าเครือข่ายที่แตกต่างกันหรือซับเน็ตมาสก์ หากคุณพิจารณาที่อยู่ตัวอย่างเดียวกันแต่ใช้คำนำหน้าต่างกัน ให้พูดว่า 817 บิต – ที่อยู่เพิ่มเติมทั้งสองแห่งจะอยู่ในเครือข่ายเดียวกัน เนื่องจากที่อยู่ทั้งหมดใช้ 827 แรกร่วมกัน บิต – 834 .

คุณจะนำเสนอคำนำหน้าเครือข่าย 848 อย่างไร บิตเป็นซับเน็ตมาสก์? คุณต้องมี 859 ตัวแรก บิตที่จะเปิด นั่นหมายถึง 860 เป็นทศนิยม และบิตที่เหลือปิดอยู่ ส่งผลให้ซับเน็ตมาสก์นี้:

255.0.0.0

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

จะเกิดอะไรขึ้นหากคุณใช้คำนำหน้าเครือข่าย 878 บิต? ก่อนอื่น คุณจะแสดงออกว่าเป็นซับเน็ตมาสก์อย่างไร คุณต้องมี 884 บิตที่จะเปิด นั่นคือ 3 คูณ 8 บิตที่จะเปิด ผลลัพธ์ที่ได้คือ:

255.255.255.0

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ขณะนี้ ไม่มีที่อยู่เพิ่มเติมใดที่อยู่ภายในเครือข่ายเดียวกันกับที่อยู่ตัวอย่าง เนื่องจากไม่ได้แชร์รหัสเครือข่าย 896 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

โปรดทราบว่าคำนำหน้าเครือข่ายไม่จำเป็นต้องแสดงถึงไบต์เต็ม ตัวอย่างเช่น คุณสามารถใช้คำนำหน้าเครือข่าย 906 บิตหรือ 916 บิตหรือ 927 บิต เมื่อความยาวของคำนำหน้าไม่ใช่ผลคูณของ 931 ซับเน็ตมาสก์จะมีค่าอื่นที่ไม่ใช่ 942 หรือ 954 ในตำแหน่งใดตำแหน่งหนึ่ง

กล่าวถึงประเด็นที่เกี่ยวข้องกับบริษัทสตาร์ทอัพ หากสตาร์ทอัพมี 960 พนักงาน พวกเขาจะต้องได้รับ 972 - บิตรหัสเครือข่าย เหลือ 982 บิตสำหรับโฮสต์ภายในเครือข่าย ซึ่งหมายถึง 2^9 หรือ 995 ที่อยู่ซึ่งควรจะเพียงพอ

สรุประหว่างกาล – ที่อยู่ IPv4

ในส่วนนี้ คุณได้เรียนรู้เกี่ยวกับที่อยู่ IPv4 แล้ว ที่อยู่ IP เป็นแบบลำดับชั้น ที่อยู่แบบลอจิคัลที่ประกอบด้วย 1006 ไบต์ ที่อยู่ IP มีสองส่วน:ตัวระบุเครือข่ายที่เป็นของโฮสต์ทั้งหมดในเครือข่าย และตัวระบุโฮสต์ซึ่งระบุโฮสต์เฉพาะในเครือข่าย

คุณได้สำรวจตัวเลือกต่างๆ ในการกำหนดตัวระบุเครือข่ายและตัวระบุโฮสต์:

  1. แนวทางที่มีความยาวคงที่ – เข้มงวดและจำกัดเกินไป

  2. แนวทางการจัดการอย่างมีระดับ – ดีกว่าแต่ยังคงสิ้นเปลือง

  3. CIDR (การกำหนดเส้นทางระหว่างโดเมนแบบไม่มีคลาส) – ยืดหยุ่นและมีประสิทธิภาพ

CIDR ให้ความยืดหยุ่นมากกว่ามากและช่วยแก้ไขปัญหาสำคัญเรื่องการขาดแคลนที่อยู่ IPv4 อย่างไรก็ตาม CIDR เป็นเพียงส่วนหนึ่งของการจัดการปัญหาการขาดแคลนที่อยู่ IPv4 พร้อมด้วยโซลูชันอื่นๆ รวมถึง NAT (Network Address Translation) และสุดท้ายคือ IPv6

ส่วนถัดไปจะสำรวจที่อยู่ IPv4 พิเศษ จากนั้นตรวจสอบส่วนหัวของแพ็กเก็ต IPv4

ทดสอบตัวเอง

ตอนนี้ให้ฝึกฝนแนวคิดที่คุณได้เรียนรู้แล้วและให้แน่ใจว่าคุณรู้สึกสบายใจกับแนวคิดเหล่านั้น

ใช้เวลาสักครู่เพื่อลองตอบคำถามต่อไปนี้ก่อนที่จะตรวจสอบคำตอบ

การแปลงระหว่างสัญลักษณ์นำหน้าและซับเน็ตมาสก์

คุณจะแสดงคำนำหน้าเครือข่าย 1016 อย่างไร บิต เขียนดังนี้ 1025 เป็นซับเน็ตมาสก์หรือไม่

คุณต้องมี 1030 บิตที่เปิดอยู่ เมื่อ 1042 บิตอยู่ที่คุณได้รับ 1051 เป็นทศนิยม ดังนั้นคุณจะใช้:

255.255.0.0

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

เมื่อพิจารณาจากคำนำหน้าเครือข่ายนี้ ที่อยู่เหล่านี้เป็นของเครือข่ายเดียวกันหรือไม่

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ใช่ พวกเขาทำเช่นนั้น เนื่องจากมี 1068 ที่สำคัญที่สุดเหมือนกัน บิตหรือสองไบต์

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ที่อยู่นี้เป็นของเครือข่ายเดียวกันกับที่อยู่ก่อนหน้าหรือไม่

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ใช่แล้ว ขอย้ำอีกครั้งว่ามีการใช้ไบต์ที่สำคัญที่สุดสองไบต์เหมือนกัน

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

แล้วอันนี้ล่ะ? มันอยู่ในเครือข่ายเดียวกันกับที่อยู่ก่อนหน้าหรือไม่

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ไม่ เนื่องจากสองไบต์แรกไม่ใช่ 1074 – นี่คือเครือข่ายอื่น ที่อยู่นี้จึงอธิบายโฮสต์ 1085 ภายในเครือข่าย 1099 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

การทำงานแบบย้อนกลับด้วย Subnet Masks

เรามาลองวิธีอื่นกันดีกว่า คุณมีซับเน็ตมาสก์นี้:

255.255.255.0

คุณจะแสดงออกโดยใช้คำนำหน้าเครือข่ายอย่างไร

คุณมี 1104 สามครั้ง ซึ่งหมายถึงสามครั้ง 1115 บิตที่เปิดอยู่ ดังนั้นโดยรวมแล้วคุณมี 1128 บิตที่เปิดอยู่ ดังนั้นคุณจึงสามารถเขียน 1137 ได้ . ซึ่งหมายความว่า 1144 ไบต์

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

เมื่อพิจารณาจากซับเน็ตมาสก์นี้ ที่อยู่ (1) และ (3) ด้านบนเป็นของเครือข่ายเดียวกันหรือไม่

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

พวกเขาทำเช่นนั้น เนื่องจากทั้งสองมีไบต์สามไบต์ที่สำคัญที่สุดเหมือนกัน – เครือข่าย 1157 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

แล้วที่อยู่ (1) และ (2) ล่ะ?

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

เมื่อพิจารณาถึงคำนำหน้าเครือข่ายนี้ ทั้งสองรายการจึงไม่ได้อยู่ในเครือข่ายเดียวกัน ที่อยู่แรกเป็นของเครือข่าย 1161 และที่อยู่ที่สองเป็นของเครือข่าย 1171 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

คำนำหน้าที่ไม่จัดแนวไบต์

คำนำหน้าเครือข่ายไม่จำเป็นต้องสอดคล้องกับ 1187 บิตหรือไบต์เต็ม สมมติว่าคุณมีคำนำหน้าเครือข่าย 1198 บิต คุณจะแปลงสิ่งนั้นเป็นซับเน็ตมาสก์อย่างไร

ไบต์แรกชัดเจน:คุณมี 1201 บิตเปิด ดังนั้นไบต์แรกคือ 1216 . แล้วตอนต่อไปล่ะ?

ในไบนารี่ คุณจะต้องมี 1 เพิ่มเติมอีก 6 วินาที ตามด้วย 2 0 ดังนั้นในไบนารี่ คุณจะเขียนว่า:

11111100

เมื่อแปลงเป็นทศนิยม เลขฐานสองนี้จะแทน 1220 . ดังนั้นซับเน็ตมาสก์ของคุณคือ:

255.252.0.0

อีกวิธีหนึ่งในการแปลงนี้:คุณรู้ว่าเลข 1 แปดตัวในไบนารี่แทน 1236 เป็นทศนิยม คุณยังทราบด้วยว่า 1241 ในไบนารี่คือ 1254 ดังนั้นคุณจึงสามารถลบ 1269 ได้ จาก 1274 และรับ 1286 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ต่อไปให้ลองวิธีอื่น คุณมีซับเน็ตมาสก์ต่อไปนี้:

255.255.224.0

มีกี่บิตที่แสดงถึงคำนำหน้าเครือข่าย

สองไบต์แรกชัดเจน:คุณมี 1295 บิต การแปลงไบต์ที่สามเป็นไบนารี่:1309 ในรูปทศนิยมคือ 1315 ในรูปแบบไบนารี ซึ่งหมายความว่าคุณมีเวลาเพิ่มอีกสาม 1 วินาที ดังนั้นคุณจึงสามารถเขียนซับเน็ตมาสก์ด้านบนเป็นคำนำหน้า 1320 บิต – 1337 บิตสำหรับทั้งสอง 1349 ไบต์ และ 1350 บิตเพิ่มเติมสำหรับ 1369 ไบต์

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

การพิจารณาความเป็นสมาชิกเครือข่าย

ลองพิจารณาที่อยู่ต่อไปนี้:

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

พวกเขาเป็นส่วนหนึ่งของเครือข่ายเดียวกันหรือไม่? 🤔

ขึ้นอยู่กับซับเน็ตมาสก์

หากคำนำหน้าเครือข่ายคือ 1371 จากนั้นจะเป็นส่วนหนึ่งของเครือข่ายเดียวกัน เนื่องจากมีรหัสเครือข่ายเดียวกัน

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ในทางกลับกัน หากคำนำหน้าเครือข่ายคือ 1385 จากนั้นจะมีรหัสเครือข่ายที่แตกต่างกัน ดังนั้นจึงไม่ได้อยู่ในเครือข่ายเดียวกัน แต่จะเกิดอะไรขึ้นกับคำนำหน้าในระหว่างนั้น? พวกเขาจะอยู่ในเครือข่ายเดียวกันสำหรับคำนำหน้า 1397 หรือไม่ ? 1409 ?

วิธีตอบคำถามนี้คือการแปลงไบต์ที่สองของที่อยู่เหล่านี้เป็นไบนารี สำหรับที่อยู่แรก ไบต์นี้คือ 1419 ซึ่งในไบนารี่คือ:

00011000

สำหรับที่อยู่ที่สอง ไบต์ที่สองคือ 1421 ซึ่งในไบนารี่คือ:

00010111

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

คุณจะเห็นได้ว่า 1436 ที่สำคัญที่สุด บิตภายในไบต์ที่สองจะเหมือนกัน หากคุณเพิ่ม 1445 ตัวแรก บิตของที่อยู่ คุณจะเห็นว่า 1450 ที่สำคัญที่สุด บิตของที่อยู่เหล่านี้เหมือนกัน

ดังนั้น หากคุณมีคำนำหน้าเครือข่าย 1461 ที่อยู่เหล่านี้เป็นของเครือข่ายเดียวกันหรือไม่

ใช่แล้ว – 1477 ที่สำคัญที่สุด บิตเหมือนกัน

แล้ว 1488 ล่ะ ?

ไม่ ด้วยคำนำหน้าเครือข่ายนี้ พวกเขาจะไม่แชร์ตัวระบุเครือข่ายเดียวกันกับ 1492 บิตนั้นแตกต่าง

แนวทางปฏิบัตินี้จะช่วยให้คุณรู้สึกสบายใจกับซับเน็ตมาสก์และคำนำหน้าเครือข่าย ในส่วนถัดไป คุณจะได้เรียนรู้เกี่ยวกับที่อยู่ IP พิเศษ จากนั้นตรวจสอบส่วนหัวของแพ็กเก็ต IP

ที่อยู่ IPv4 พิเศษ

ตอนนี้คุณคุ้นเคยกับที่อยู่ IP และซับเน็ตมาสก์แล้ว เรามาสำรวจที่อยู่ IP บางส่วนที่มีความหมายพิเศษกันดีกว่า

ที่อยู่ "โฮสต์นี้":0.0.0.0

ที่อยู่ 1503 หมายถึง "โฮสต์นี้" และใช้ในสองสถานการณ์:

ขั้นแรก เมื่อเครื่องบูทขึ้นและยังไม่มีที่อยู่ IP ที่อยู่ IP คือที่อยู่แบบลอจิคัลที่ต้องกำหนดให้กับเครื่อง ก่อนที่จะมอบหมายงานนี้ อุปกรณ์จะไม่มีที่อยู่ IP เลย หากอุปกรณ์จำเป็นต้องสื่อสารในขั้นตอนนี้ อุปกรณ์อาจใช้ที่อยู่พิเศษนี้ 1511 .

ประการที่สอง เมื่อเขียนแอปพลิเคชันเครือข่ายที่ต้องฟังการเชื่อมต่อขาเข้าบนอินเทอร์เฟซเครือข่ายทั้งหมด ตัวอย่างเช่น หากเครื่องมีอินเทอร์เฟซ 2 แบบ โดยอินเทอร์เฟซหนึ่งมีที่อยู่ IP 1527 และอีกอันมีที่อยู่ 1536 – ฟังที่อยู่ 1547 หมายถึงการยอมรับการเชื่อมต่อไม่ว่าอินเทอร์เฟซเครือข่ายใดจะได้รับก็ตาม

ที่อยู่ "เครือข่ายนี้"

ที่อยู่พิเศษอีกประเภทหนึ่งคือที่อยู่เริ่มต้นด้วยศูนย์ โดยที่ศูนย์หมายถึง "เครือข่ายนี้"

ตัวอย่างเช่น หากคุณมีเครื่องที่มีที่อยู่:

12.34.55.55

และคำนำหน้าเครือข่าย 1556 บิต เครื่องนี้สามารถส่งแพ็กเก็ตไปยังอุปกรณ์อื่นบนเครือข่ายโดยใช้ที่อยู่แบบเต็ม เช่น 1567 หรือใช้เครื่องหมายศูนย์พิเศษและส่งแพ็กเก็ตไปที่:

0.0.66.66

ซึ่งหมายความว่า "ส่งแพ็กเก็ตไปยังโฮสต์ 1574 บนเครือข่ายนี้” แน่นอนว่าผู้รับจะต้องทราบคำนำหน้าเครือข่ายที่เกี่ยวข้องด้วยจึงจะตีความที่อยู่นี้ได้อย่างถูกต้อง

ที่อยู่ออกอากาศ

ที่อยู่ 1586 โดยที่บิตทั้งหมดถูกตั้งค่าเป็น 1597 คือที่อยู่ของโฮสต์ทั้งหมดในเครือข่ายท้องถิ่น - ที่อยู่การออกอากาศ ซึ่งคล้ายกับที่อยู่ออกอากาศในอีเทอร์เน็ต (1600 ). ในทั้งสองกรณี บิตทั้งหมดจะถูกตั้งค่าเป็น 1615 .

การใช้ตัวระบุเครือข่ายที่เหมาะสมโดยที่ตัวระบุโฮสต์ถูกตั้งค่าเป็น 1 ทั้งหมดสามารถใช้เพื่อส่งแพ็กเก็ตการออกอากาศไปยังเครือข่ายระยะไกลได้ ตัวอย่างเช่น พิจารณาเครือข่าย 1625 และเครือข่ายอื่นที่มีรหัสเครือข่าย 1638 . หากเครื่องอยู่ที่ 1646 ต้องการส่งแพ็คเก็ตไปยังอุปกรณ์ทั้งหมดในเครือข่ายอื่นอาจใช้ที่อยู่ปลายทาง:1657 .

แม้ว่าสิ่งนี้จะได้รับอนุญาตตามข้อกำหนด IP (RFC) แต่ในทางปฏิบัติฟีเจอร์นี้มักจะถูกปิดการใช้งานเนื่องจากสามารถสร้างช่องโหว่ด้านความปลอดภัยได้

ที่อยู่แบบวนกลับ:127.0.0.0/8

ที่อยู่ทั้งหมดในเครือข่าย 1665 (นั่นคือ ที่อยู่ทั้งหมดที่ขึ้นต้นด้วย 1670 ) คือที่อยู่แบบย้อนกลับ แพ็กเก็ตที่ส่งไปยังที่อยู่ใดๆ เหล่านี้จะไม่ได้ใส่ลงในเครือข่ายทางกายภาพ แต่จะถูกประมวลผลภายในระบบปฏิบัติการ สิ่งนี้มีประโยชน์อย่างมากสำหรับการพัฒนาและการดีบัก

ตัวอย่างเช่น เมื่อพัฒนาโปรแกรมแชทธรรมดา คุณต้องมีไคลเอนต์สองตัวที่แลกเปลี่ยนข้อมูล วิธีหนึ่งคือการใช้คอมพิวเตอร์จริงสองเครื่องที่แตกต่างกัน แต่วิธีนี้น่าเบื่อ คุณจะต้องเขียนข้อความบนคอมพิวเตอร์เครื่องหนึ่ง ตรวจสอบคอมพิวเตอร์อีกเครื่องหนึ่งเพื่อดูว่าได้รับหรือไม่ จากนั้นเขียนข้อความบนคอมพิวเตอร์เครื่องที่สอง และกลับไปที่คอมพิวเตอร์เครื่องแรกเพื่อตรวจสอบการรับ

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

ตัวอย่างเช่น คุณอาจใช้ที่อยู่ 1686 โดยมีไคลเอ็นต์หนึ่งรายรับฟังพอร์ต 1692 และอีกอันบนพอร์ต 1701 . เมื่อไคลเอนต์ A ส่งแพ็กเก็ตไปยังไคลเอนต์ B แพ็กเก็ตนี้จะไม่ออกจากการ์ดเครือข่ายของคุณ แต่จะยังคงอยู่ในระบบปฏิบัติการ ไคลเอ็นต์ B ได้รับแพ็กเก็ตจากอินเทอร์เฟซแบบย้อนกลับเหมือนกับว่าได้รับจากเครือข่ายทางกายภาพ

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

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

สรุปที่อยู่ IPv4 พิเศษ

เพื่อสรุปที่อยู่ IPv4 พิเศษที่คุณได้เรียนรู้:

ที่อยู่พิเศษความหมายการใช้งาน 1718 "โฮสต์นี้"ใช้ระหว่างการบูตหรือฟังบนอินเทอร์เฟซทั้งหมดที่อยู่เริ่มต้นด้วย 1725 "เครือข่ายนี้"กำลังส่งไปยังโฮสต์บนเครือข่ายท้องถิ่น1739 การออกอากาศส่งไปยังโฮสต์ทั้งหมดบนเครือข่ายท้องถิ่นรหัสเครือข่ายที่มีทั้งหมด 1 รายการในส่วนโฮสต์การออกอากาศโดยตรงส่งไปยังโฮสต์ทั้งหมดบนเครือข่ายเฉพาะ1748 การทดสอบ Loopback และการดีบักโดยไม่ต้องใช้เครือข่ายทางกายภาพ

ในส่วนถัดไป คุณจะได้เรียนรู้เกี่ยวกับโครงสร้างของส่วนหัว IPv4

เมื่อคุณเข้าใจที่อยู่ IP ซับเน็ต และที่อยู่พิเศษแล้ว ก็ถึงเวลาตรวจสอบโครงสร้างส่วนหัว IPv4 โดยละเอียด

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

แผนภาพด้านบนแสดงส่วนหัวของ IPv4 ตามที่กำหนดใน RFC 791 มาตรวจสอบแต่ละฟิลด์กัน:

เวอร์ชัน (4 บิต)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ส่วนหัวเริ่มต้นด้วยฟิลด์เวอร์ชันซึ่งประกอบด้วยสี่บิต สำหรับแพ็กเก็ต IPv4 เวอร์ชันคือ 1756 ดังนั้นฟิลด์นี้จะมีค่า 1768 เสมอ (หรือ 1770 ในรูปแบบไบนารี)

❓ ทำไมส่วนหัวถึงขึ้นต้นด้วยช่อง Version? 🤔

(หมายเหตุ – เมื่อฉันขึ้นต้นประโยคด้วยเครื่องหมาย ❓มันเป็นคำถามที่ส่งถึงคุณ และฉันขอแนะนำให้คุณลองตอบก่อนอ่านต่อ)

เหตุผลก็คือช่องที่เหลืออาจแตกต่างกันไปตามเวอร์ชัน หากอุปกรณ์เครือข่ายอ่านแพ็กเก็ต IP และฟิลด์เวอร์ชันมีค่า 1787 โดยคาดว่าส่วนที่เหลือของแพ็กเก็ตจะเป็นไปตามโครงสร้าง IPv4 หากมีค่าอื่น เช่น 1797 ฟิลด์ที่เหลือจะแตกต่างกัน เช่นเดียวกับใน IPv6

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

ฟิลด์นี้ระบุความยาวของส่วนหัว

❓ทำไมต้องระบุความยาว? 🤔

ต่างจากอีเธอร์เน็ตที่ขนาดส่วนหัวได้รับการแก้ไข ความยาวส่วนหัวของ IPv4 อาจแตกต่างกันได้เนื่องจากฟิลด์เสริม สำหรับแพ็กเก็ต IP ที่ไม่มีตัวเลือกพิเศษ ส่วนหัวจะประกอบด้วย 1805 ไบต์ ซึ่งเป็นกรณีที่พบบ่อยที่สุด

ฟิลด์ IHL ไม่ได้ระบุความยาวเป็นไบต์โดยตรง แต่เป็นหน่วยคำขนาด 4 ไบต์ ดังนั้นเพื่อระบุความยาว 1815 ไบต์ ค่าจะเป็น 1820 (5 × 4 =20) การเข้ารหัสนี้อนุญาตให้ฟิลด์ใช้เพียง 4 บิตในขณะที่ระบุความยาวส่วนหัวได้สูงสุด 1831 ไบต์ (เมื่อ IHL =1844 ).

แพ็กเก็ต IPv4 ทั่วไปจึงเริ่มต้นด้วยไบต์ 1859 เป็นเลขฐานสิบหก ซึ่งหมายความว่าเป็นเวอร์ชัน 1863 ของโปรโตคอล IP และส่วนหัวคือ 1879 ไบต์ยาว

ประเภทของบริการ (TOS) (8 บิต)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

แนวคิดเบื้องหลังฟิลด์นี้คือไม่ใช่ว่าแพ็กเก็ตทั้งหมดจะมีความสำคัญเท่ากัน คุณอาจต้องการให้ความสำคัญกับแพ็กเก็ตบางแพ็กเก็ตมากกว่าแพ็กเก็ตอื่น

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

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

ความยาวทั้งหมด (16 บิต)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

This field specifies the total length of the IP packet, including both the header and the payload (data).

❓ Why is this needed to specify the length? 🤔

Unfortunately, the IP layer doesn’t necessarily know if some of the bytes in the packet are actually a padding of the second layer. I described this in detail in a previous post, where I showed that in Ethernet protocol, in some cases, the receiving Ethernet entity cannot tell which bytes belong to the payload and which bytes are simply padding. The IP layer needs to know precisely which bytes belong to the actual packet, hence the Total Length field.

❓What is the maximum size of an IPv4 packet? 🤔

Since this field is 1897 bits long, an IPv4 packet may contain a maximum of 2^16-1 bytes, or 1900 bytes, including the header. The minimum size is 1917 bytes, consisting of just the header without options or payload.

Fragmentation Fields (32 bits)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

The next four bytes are dedicated to fragmentation control. I’ll cover these fields in a separate section, as they involve a complex topic deserving special attention.

Time to Live (8 bits)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Despite its name, this field doesn't actually measure time but rather the maximum number of routing hops a packet can traverse before being discarded.

To understand its purpose, consider this scenario:If Machine A sends a packet to Machine B through a series of routers, but there's a routing loop where Router 2 sends to Router 3, which sends to Router 4, which sends back to Router 2, the packet could circulate indefinitely, consuming bandwidth and never reaching its destination.

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

The TTL field prevents this by setting a limit on how many hops a packet can take:

  1. The sender sets an initial TTL value (often 1927 or 1936 )

  2. Each router that handles the packet decrements the TTL by 1949

  3. If a router receives a packet with TTL =1959 , it decrements it to 1963 and discards the packet

  4. The router then sends an ICMP "Time Exceeded" message back to the original sender

This doesn't solve the underlying problem of routing loops, but it prevents packets from circulating forever.

In IPv6, this field is renamed "Hop Limit," which more accurately describes its function.

Protocol (8 bits)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

This field describes the payload of the IPv4 packet. ตัวอย่างเช่น:

  • A value of 1970 means the payload is TCP

  • A value of 1982 means the payload is UDP

This helps the receiving system know which protocol handler should process the packet's contents. It's similar to the Type field in Ethernet, which specifies the protocol of the layer encapsulated within the Ethernet frame.

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

This is a 16-bit checksum used to verify the validity of the header only (that is, excluding the payload). The sender computes this value based on the fields of the header, and the receiver also computes it to validate that the header was received correctly.

❓The checksum must be recalculated by each router. ทำไมเป็นเช่นนั้น? 🤔

Because the TTL field changes at each hop. For example, if a packet starts with TTL =1993 , each router will:

  1. Verify the current checksum based on TTL =2002

  2. Decrement TTL to 2014

  3. Calculate a new checksum based on TTL =2028

  4. Forward the packet with the new checksum

If the checksum verification fails, the device drops the packet. This prevents packets with corrupted headers (which might have incorrect destination addresses, for instance) from being forwarded.

Source and Destination Addresses (32 bits each)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

These fields contain the source and destination IPv4 addresses, respectively. Each is 4 bytes (32 bits) long, as you learned in the previous sections on IPv4 addressing.

Options (Variable Length)

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Most IPv4 packets don't include options, but when present, they can provide additional functionality:

  • Record Route :Each router that handles the packet adds its own address to this option, creating a trace of the packet's path

  • Source Routing :Allows the sender to specify the route the packet should take:

    • Strict Source Routing:The entire route must be followed exactly

    • Loose Source Routing:Certain routers must be traversed, but the exact path between them is flexible

Padding

In some cases, the header ends with padding bytes (usually 2038 s).

❓Why does the IPv4 header have padding?🤔

As explained before, the IHL field specifies the header length in 4-byte units, so the total header length must be a multiple of 4 bytes. If options make the header length not divisible by 4, padding bytes (usually 2042 ) are added to reach the next multiple of 4.

For example, if you have 3 bytes of options, you would need 1 byte of padding to make the total header length a multiple of 4 bytes.

You've now learned about the structure of the IPv4 header, with the exception of the fragmentation fields which I’ll cover in the next section.

The IPv4 header efficiently packs all the necessary routing and control information into a compact structure, typically 20 bytes long (without options). This design allows for fast processing by routers while providing the flexibility needed for internet communication. It is amazing how prominent IPv4 is, even so many years after its publication.

In the next section, you'll learn about IPv4 fragmentation.

IPv4 Fragmentation

In the previous section, you learned about most of the IPv4 header structure, with the exception of 32 bits dedicated to fragmentation. This topic deserves special attention, as it reveals important aspects of how IP packets travel across different networks.

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Why Fragmentation Is Needed

To understand what fragmentation is and why it's needed, consider the following network scenario:

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

In this diagram, you have two different networks where Machine A resides in one network and Machine B resides in another. A router forwards packets between these two networks.

These two networks have different Maximum Transmission Units (MTUs). MTU refers to the maximum size of a frame that can be transmitted in a network. ตัวอย่างเช่น:

  • Machine B is connected to an Ethernet network with an MTU of 2052 bytes

  • Machine A is connected to a different network with an MTU of 2064 bytes

Different MTUs stem from the different protocols and hardware that different networks have. Ethernet has an MTU of 2079 bytes. This maximum size was chosen because RAM was expensive back in the late 1970s when Ethernet was planned, and a receiver would need more RAM if a frame could be bigger. Other networks were devised at different times where RAM prices might have been lower, or just have other considerations that affect the MTU.

Now, consider this scenario:Machine A wants to send a packet to Machine B. This packet is 2085 bytes long. From A's perspective, there's no problem since its network supports packets of this size. Machine A transmits the packet.

When the router receives this packet, it faces a problem:it cannot simply forward the packet to B's network because the packet is too big for the network's MTU. The router must fragment the packet – splitting it into smaller chunks of up to 2091 bytes, which will then be reassembled by Machine B.

How Fragmentation Works in IP

Let's examine the scenario further. The router needs to take an IP packet of 2104 bytes and split it into two fragments, each consisting of up to 2110 bytes. If Machine A sends another packet of 2121 bytes to Machine B, the router will have to split that one too – resulting in four different fragments that will be reassembled into two separate packets.

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

When Machine B receives these fragments, it must ensure that it reassembles fragment #1 together with fragment #2 of packet A, and fragment #1 with fragment #2 of packet B – and not, for instance, fragment #1 of packet A with fragment #2 of packet B. It must also reassemble the fragments in the correct order – so structure a packet that consists of #1#2 and not #2#1.

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

Identification Field

First, focus on making sure Machine B reassembles fragments of the same packet (for example, fragment #1 and fragment #2 of packet A in the example above, rather than fragment #1 of packet A and fragment #2 of packet B). This is achieved using the identification field of IPv4. Fragments belonging to the same packet will have the same identification value. For example, both fragments of packet A might have identification set to 2135 , and both fragments of packet B might have identification of 2146 .

Master IPv4:คู่มือนักพัฒนาเกี่ยวกับพื้นฐานโปรโตคอลและการจัดการแพ็กเก็ต

It's important to note that sharing identification values isn't sufficient for fragments to belong to the same packet. Fragments of the same packet must also share:

  • The same source IP address

  • The same destination IP address

  • The same protocol value (indicating whether the payload is TCP, UDP, and so on)

Fragment Offset

Since IP is a connectionless protocol, there's no guarantee that fragments will arrive at Machine B in the correct order. Fragment #2 of packet A may arrive before fragment #1. To handle this issue, each fragment carries an Offset field, which denotes the offset from the beginning of the original packet.

The Offset field consists of 13 bits, which means it can carry values from 2154 to 2160 (2^13-1). This poses a potential problem, as the maximum size of an IP packet can be 2170 bytes (since the Total Length field of the IP header consists of 16 bits).

To address this limitation, the value encoded in the Offset field is actually multiplied by 2180 (2^3). This means the minimum size of a fragment is 2199 bytes, with the exception of the last fragment.

❓Why do IP packets carry an offset in bytes divided by 8, instead of just a sequential fragment number?🤔

While using sequence numbers might seem simpler, it would create problems when packets need to be fragmented multiple times.

For example, if Computer A sends a packet to the first router, which fragments it into pieces of 2200 bytes and 2217 bytes, and then these fragments are sent to another router that needs to fragment them again into even smaller pieces, how would you number them?

With byte offsets, the solution is straightforward – if the first fragment has an offset of 2226 and the next one has an offset of 2237 , then if we need to split them into maximum 2243 -byte fragments, we'd have:

  • First fragment:2258 bytes with offset 2266

  • Second fragment:2279 bytes with offset 2289

  • Third fragment:2290 bytes with offset 2308

More Fragments and Don't Fragment Flags

When Machine B receives a fragment, it needs to know whether this is an entire packet by itself or if it should expect additional fragments. For this purpose, each IP fragment carries a More Fragments (2313 ) bit that is set to 2329 for every fragment that is not the last fragment of the packet. For the last fragment, it's set to 2335 .

In case the packet consists of a single fragment – the 2342 bit will be set to 2351 , and the offset field will also hold the value 2369 (that is, 13 bits of 2373 s).

Another bit related to fragmentation is the Don't Fragment (2381 ) bit. When this flag is turned on, intermediate devices should not fragment the original packet, even if it exceeds the MTU. Instead, they should drop it and typically send an ICMP "Fragmentation Needed" message back to the source.

In our example, if Machine A sets the Don't Fragment bit to 2399 , the router would drop the packet, and notify Machine A about it.

Note that right after the identification field and before the 2402 flag, there is a reserved bit set to 2414 . This bit was reserved in case it is needed in the future, for a reason unknown to the original authors of IPv4.

Fragmentation Example

Consider again our example above – with Machine A residing in a network where the MTU is 2420 , and Machine B residing in a network where the MTU is 2430 . Machine A sends a packet which is 2448 bytes long.

❓Can you fill the values in these tables?

First Fragment: Total Length IdentificationDon’t FragmentMore FragmentsOffset

Second Fragment: Total Length IdentificationDon’t FragmentMore FragmentsOffset

For our example above, the values of the relevant fragmentation fields in IP would be as follows:

First Fragment:

  • Total Length:2455 (including 2460 bytes of IP header, so 2475 bytes of payload)

  • Identification:2487 (arbitrary value)

  • Don't Fragment bit:2490 (off, to allow further fragmentation if needed)

  • More Fragments bit:2506 (on, as this is not the last fragment)

  • Offset:2510 (it's the first fragment)

Second Fragment:

  • Total Length:2527 (including 2538 bytes of IP header, so 2543 bytes of payload – together with the first fragment, we get to 2550 bytes of payload)

  • Identification:2560 (same as first fragment, indicating they belong together)

  • Don't Fragment bit:2579 (off, to allow further fragmentation if needed)

  • More Fragments bit:2582 (off, as this is the last fragment)

  • Offset:2592 (1480/8 =185, or 2606 in hexadecimal)

IPv4 Fragmentation – Summary

You've now learned about the final part of the IPv4 Header:fragmentation. Fragmentation is necessary to allow packets to travel across networks with different MTUs. The IPv4 header includes several fields specifically designed to support fragmentation:

  • Identification (16 bits):Identifies which fragments belong together

  • Flags (3 bits):Including the "More Fragments" and "Don't Fragment" flags

  • Fragment Offset (13 bits):Indicates where in the original packet this fragment belongs

With this knowledge, you now understand every bit and byte of the IPv4 header and how IP packets can traverse networks with different characteristics.

Summary – IPv4

In this comprehensive guide to IPv4, you've learned about the fundamental building blocks of Internet communications. Let's recap the key concepts we covered:

Addressing and Network Structure

  • IPv4 addresses are 32-bit numbers typically written in dotted decimal notation

  • Networks can be identified using various methods:

    • Fixed-length approach (historically)

    • Classful addressing (A, B, C, D, E classes)

    • CIDR (modern approach allowing flexible network sizes)

  • Special addresses serve specific purposes:

    • 2610 for "this host"

    • 2625 for loopback

    • 2636 for broadcast

  • The header contains crucial fields for packet routing and processing:

    • Version and IHL for header interpretation

    • Type of Service for traffic prioritization

    • Total Length for packet size

    • Various fields for fragmentation control

    • TTL to prevent infinite routing loops

    • Protocol to identify the encapsulated protocol

    • Checksum for error detection

    • Source and destination addresses

Fragmentation

  • Allows IPv4 packets to traverse networks with different MTUs

  • Uses three key fields:

    • Identification to group fragments

    • Flags to control fragmentation

    • Fragment Offset to reassemble packets

Final Words

While IPv4 has limitations, particularly its address space constraints, its elegant design and robust features have allowed it to remain the backbone of the Internet for over four decades. Understanding IPv4 provides essential context for working with modern networks and helps in transitioning to newer protocols like IPv6.

About the Author

Omer Rosenbaum is Swimm’s Chief Technology Officer. He's the author of the Brief YouTube Channel. He's also a cyber training expert and founder of Checkpoint Security Academy. He's the author of Gitting Things Done (in English) and Computer Networks (in Hebrew). You can find him on Twitter.

Additional References

  • Computer Networks Playlist - on my Brief channel

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น