IPv4 Subnetting ทำงานอย่างไร


439

นี่เป็นคำถามที่ยอมรับได้เกี่ยวกับ IPv4 Subnets

ที่เกี่ยวข้อง:

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

  • หากฉันมีเครือข่ายฉันจะรู้ได้อย่างไรว่าจะแบ่งย่อยอย่างไร
  • หากฉันได้รับ netmask ฉันจะรู้ได้อย่างไรว่าช่วงเครือข่ายมีไว้เพื่ออะไร
  • บางครั้งมีเครื่องหมายทับแล้วตามด้วยตัวเลขตัวเลขนั้นคืออะไร?
  • บางครั้งมีซับเน็ตมาสก์ แต่ก็มีรูปแบบสัญลักษณ์แทนพวกเขาดูเหมือนกัน แต่แตกต่างกันหรือไม่
  • มีคนพูดถึงบางสิ่งเกี่ยวกับการรู้เลขฐานสองสำหรับเรื่องนี้?

คำตอบสองส่วนนี้อธิบายทุกสิ่งที่คุณอยากรู้เกี่ยวกับการคำนวณที่อยู่ IPv4 และอีกมากมาย
Ron Maupin

คำตอบ:


648

มีซับเน็ต IP เพื่อให้เราเตอร์เลือกปลายทางที่เหมาะสมสำหรับแพ็กเก็ต คุณสามารถใช้เครือข่ายย่อย IP เพื่อแยกเครือข่ายที่ใหญ่ขึ้นด้วยเหตุผลเชิงตรรกะ (ไฟร์วอลล์ ฯลฯ ) หรือความต้องการทางกายภาพ (โดเมนออกอากาศเล็ก ฯลฯ )

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

นับถึง 1

หากคุณมีความเชี่ยวชาญในรูปแบบไบนารี (ฐาน 2) แล้วคุณสามารถข้ามส่วนนี้ได้

สำหรับพวกคุณที่เหลืออยู่: ทำให้คุณอับอายเพราะไม่คล่องแคล่วในระบบเลขฐานสอง!

ใช่ - นั่นอาจจะรุนแรงสักหน่อย มันเป็นเรื่องง่ายมากที่จะเรียนรู้ที่จะนับเป็นไบนารี่และเรียนรู้ทางลัดในการแปลงไบนารี่เป็นทศนิยมและย้อนกลับ คุณควรรู้วิธีการทำ

การนับเลขฐานสองนั้นง่ายมากเพราะคุณต้องรู้วิธีนับ 1 เท่านั้น!

ลองนึกถึง "odometer" ของรถยกเว้นว่าไม่เหมือนกับเครื่องวัดระยะทางแบบดั้งเดิมแต่ละหลักสามารถนับได้สูงสุด 1 จาก 0 เมื่อรถสดจากโรงงานเครื่องวัดระยะทางจะอ่าน "00000000"

เมื่อคุณขับไมล์แรกของคุณแล้วมาตรวัดระยะทางจะอ่าน "00000001" จนถึงตอนนี้ดีมาก

เมื่อคุณขับไมล์ที่สองของคุณเลขตัวแรกของเครื่องวัดระยะทางย้อนกลับไปที่ "0" (เนื่องจากค่าสูงสุดคือ "1") และหลักที่สองของเครื่องวัดระยะทางจะเลื่อนไปที่ "1" ทำให้เครื่องวัดระยะทางอ่าน " 00000010" ดูเหมือนว่าหมายเลข 10 ในรูปแบบเลขฐานสิบ แต่จริงๆแล้วคือ 2 (จำนวนไมล์ที่คุณขับรถมาจนถึงตอนนี้) ในรูปแบบเลขฐานสอง

เมื่อคุณขับไมล์ที่สามแล้วมาตรวัดระยะทางจะอ่าน "00000011" เนื่องจากตัวเลขตัวแรกของมาตรวัดระยะทางจะเปลี่ยนอีกครั้ง ตัวเลข "11" ในรูปแบบเลขฐานสองจะเหมือนกับเลขทศนิยม 3

ในที่สุดเมื่อคุณขับไมล์ที่สี่ของคุณทั้งสองหลัก (ซึ่งอ่าน "1" ในตอนท้ายของไมล์ที่สาม) ย้อนกลับไปที่ตำแหน่งศูนย์และหลักที่สามม้วนขึ้นไปที่ตำแหน่ง "1" ทำให้เรา " 00000100" นั่นคือการแทนเลขฐานสองของเลขทศนิยม 4

คุณสามารถจดจำสิ่งเหล่านี้ได้หากคุณต้องการ แต่คุณเพียงแค่ต้องเข้าใจว่าเครื่องวัดระยะทางเล็ก ๆ "หมุน" เมื่อจำนวนที่นับนั้นใหญ่ขึ้นเท่าใด มันเหมือนกับการทำงานของเครื่องวัดระยะทางทศนิยมแบบดั้งเดิมยกเว้นว่าตัวเลขแต่ละหลักจะต้องเป็น "0" หรือ "1" ใน "binary odometer" ของเราเท่านั้น

ในการแปลงเลขฐานสิบเป็นเลขฐานสองคุณสามารถหมุนเครื่องวัดระยะทางไปข้างหน้าทำเครื่องหมายโดยทำเครื่องหมายนับเสียงดัง ๆ จนกว่าคุณจะหมุนเป็นจำนวนครั้งเท่ากับจำนวนทศนิยมที่คุณต้องการแปลงเป็นเลขฐานสอง อะไรก็ตามที่ปรากฏบนเครื่องวัดระยะทางหลังจากที่การม้วนและการรีดนั้นจะเป็นการแสดงเลขฐานสองของจำนวนทศนิยมที่คุณนับได้

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

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

การกันอย่างรวดเร็ว: แต่ละหลักในเลขฐานสองเรียกว่า "บิต" นั่นคือ "b" จาก "ไบนารี" และ "มัน" จาก "หลัก" บิตเป็นเลขฐานสอง

การแปลงเลขฐานสองเช่นพูดว่า "1101011" เป็นทศนิยมนั้นเป็นกระบวนการง่ายๆที่มีอัลกอริธึมเล็กน้อยที่มีประโยชน์

เริ่มต้นด้วยการนับจำนวนบิตในเลขฐานสอง ในกรณีนี้มี 7 ทำ 7 ส่วนบนกระดาษ (ในใจของคุณในไฟล์ข้อความ ฯลฯ ) และเริ่มกรอกจากขวาไปซ้าย ในช่องด้านขวาสุดให้ป้อนหมายเลข "1" เพราะเราจะเริ่มต้นด้วย "1" เสมอ ในช่องถัดไปทางซ้ายให้ใส่ค่าสองเท่าในช่องทางด้านขวา (เช่น "2" ในช่องถัดไป "4" ในช่องถัดไป) และดำเนินการต่อไปจนกว่าช่องทั้งหมดจะเต็ม (คุณจะจำตัวเลขเหล่านี้ได้ซึ่งเป็นพลังของ 2 ในขณะที่คุณทำสิ่งนี้มากขึ้นเรื่อย ๆ ฉันดีถึง 131,072 ในหัวของฉัน แต่ฉันมักจะต้องใช้เครื่องคิดเลขหรือกระดาษหลังจากนั้น)

ดังนั้นคุณควรมีสิ่งต่อไปนี้บนกระดาษของคุณในช่องเล็ก ๆ ของคุณ

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

ถอดความบิตจากเลขฐานสองด้านล่างของช่องดังนี้:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

ตอนนี้เพิ่มสัญลักษณ์และคำนวณคำตอบสำหรับปัญหา:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

ทำคณิตศาสตร์ทั้งหมดคุณควรมากับ:

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

แค่นั้นแหละ "1101011" ในทศนิยมคือ 107 มันเป็นเพียงขั้นตอนง่าย ๆ และคณิตศาสตร์ง่าย

การแปลงทศนิยมเป็นไบนารีนั้นง่ายดายและเป็นอัลกอริธึมพื้นฐานแบบเดียวกัน

สมมติว่าเราต้องการแปลงเลข 218 เป็นไบนารี เริ่มต้นทางด้านขวาของกระดาษเขียนหมายเลข "1" ทางซ้ายให้เพิ่มค่านั้นเป็นสองเท่า (เช่น "2") แล้วเลื่อนไปทางซ้ายของกระดาษเพิ่มค่าสุดท้ายเป็นสองเท่า หากจำนวนที่คุณกำลังจะเขียนมากกว่าจำนวนที่จะแปลงหยุดเขียน มิฉะนั้นให้เพิ่มจำนวนก่อนหน้าและเขียนต่อไป (การแปลงตัวเลขจำนวนมากเช่น 34,157,216,092 ไปเป็นไบนารีโดยใช้อัลกอริทึมนี้อาจค่อนข้างน่าเบื่อ แต่ก็เป็นไปได้อย่างแน่นอน)

ดังนั้นคุณควรมีกระดาษของคุณ:

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

คุณหยุดเขียนตัวเลขที่ 128 เพราะเพิ่มเป็นสองเท่า 128 ซึ่งจะให้ 256 คุณจะมีขนาดใหญ่กว่าจำนวนที่ถูกแปลง (218)

เริ่มจากหมายเลขซ้ายสุดเขียน "218" เหนือ (128) แล้วถามตัวเองว่า: "218 มีขนาดใหญ่กว่าหรือเท่ากับ 128" หากคำตอบคือใช่ให้ขีด "1" ด้านล่าง "128" ด้านบน "64" เขียนผลลัพธ์ของ 218 ลบ 128 (90)

ดูที่ "64" ถามตัวเองว่า: "มีขนาดใหญ่กว่าหรือเท่ากับ 64 64" ดังนั้นคุณต้องเขียน "1" ด้านล่าง "64" จากนั้นลบ 64 จาก 90 และเขียนข้างบน "32" (26)

เมื่อคุณไปที่ "32" คุณจะพบว่า 32 ไม่มากกว่าหรือเท่ากับ 26 ในกรณีนี้ให้เขียน "0" ด้านล่าง "32" คัดลอกหมายเลข (26) จากด้านบน 32 "ไปด้านบน" 16 "จากนั้นถามคำถามเดียวกันกับตัวเลขที่เหลือต่อไป

เมื่อคุณทำเสร็จแล้วคุณควรจะ:

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

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

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

แยกที่อยู่

คิดว่าการกำหนดเส้นทาง IP เหมือนกับการส่งพิซซ่า

เมื่อคุณถูกขอให้ส่งพิซซ่าไปที่ "123 Main Street" มันชัดเจนสำหรับคุณในฐานะมนุษย์ที่คุณต้องการไปที่อาคารหมายเลข "123" บนถนนที่มีชื่อว่า "Main Street" มันง่ายที่จะรู้ว่าคุณต้องไปที่ 100-block ของถนนสายหลักเพราะหมายเลขอาคารอยู่ระหว่าง 100 ถึง 199 และบล็อกของเมืองส่วนใหญ่จะมีเลขเป็นร้อย คุณ "เพิ่งรู้" วิธีแยกที่อยู่

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

คอมพิวเตอร์แต่ละเครื่อง (หรือ "โฮสต์") ในเครือข่าย IP ได้รับการกำหนดค่าด้วยที่อยู่ IP ที่ไม่ซ้ำกันและซับเน็ตมาสก์ ที่อยู่ IP นั้นสามารถแบ่งออกเป็นองค์ประกอบ "หมายเลขอาคาร" (เช่น "123" ในตัวอย่างด้านบน) ที่เรียกว่า "รหัสโฮสต์" และส่วนประกอบ "ชื่อถนน" (เช่น "ถนนสายหลัก" ในตัวอย่างด้านบน) ที่เรียกว่า "รหัสเครือข่าย" สำหรับสายตามนุษย์ของเราเป็นเรื่องง่ายที่จะเห็นว่าหมายเลขอาคารและชื่อถนนอยู่ใน "123 Main Street" แต่ยากที่จะเห็นการแบ่งใน "10.13.216.41 ที่มีซับเน็ตมาสก์ 255.255.192.0"

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

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

      10.      13.     216.      41
00001010.00001101.11011000.00101001

เขียนซับเน็ตมาสก์เป็นไบนารีเช่นกัน

     255.     255.     192.       0
11111111.11111111.11000000.00000000

เขียนแบบเคียงข้างกันคุณจะเห็นว่าจุดในซับเน็ตมาสก์ที่ "1" "หยุด" เข้าแถว "ถึงจุดหนึ่งในที่อยู่ IP นั่นคือจุดที่ ID เครือข่ายและการแยก ID โฮสต์ ดังนั้นในกรณีนี้:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

เราเตอร์ใช้ subnet mask เพื่อ "mask out" บิตที่ครอบคลุมโดย 1 ใน IP address (แทนที่บิตที่ไม่ใช่ "masked out" ด้วย 0's) เพื่อแยก ID เครือข่าย:

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

ในทำนองเดียวกันโดยใช้ subnet mask เพื่อ "mask out" บิตที่ครอบคลุมโดย 0 ในที่อยู่ IP (แทนที่บิตที่ไม่ใช่ "masked out" ด้วย 0's อีกครั้ง) เราเตอร์สามารถแยก ID โฮสต์:

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

สายตามนุษย์ของเราไม่ง่ายที่จะเห็น "ตัวแบ่ง" ระหว่างรหัสเครือข่ายและรหัสโฮสต์เนื่องจากอยู่ระหว่าง "หมายเลขอาคาร" และ "ชื่อถนน" ในที่อยู่ทางกายภาพในระหว่างการจัดส่งพิซซ่า แต่ผลสุดท้ายคือ เหมือนกัน.

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

คำศัพท์เพิ่มเติม

คุณจะเห็นซับเน็ตมาสก์เขียนทั่วอินเทอร์เน็ตและตลอดเวลาที่เหลือของคำตอบนี้เป็น (IP / หมายเลข) สัญกรณ์นี้เรียกว่าสัญกรณ์ "Classless Inter-Domain Routing" (CIDR) "255.255.255.0" ประกอบด้วย 24 บิตของ 1 เมื่อเริ่มต้นและจะเร็วกว่าในการเขียนว่าเป็น "/ 24" มากกว่า "255.255.255.0" ในการแปลงหมายเลข CIDR (เช่น "/ 16") เป็นมาสก์ซับเน็ตทศนิยมแบบจุดเพียงเขียนจำนวน 1 นั้นแล้วแบ่งออกเป็นกลุ่ม 8 บิตและแปลงเป็นทศนิยม (เช่น "/ 16" คือ "255.255.0.0" เป็นต้น)

ย้อนกลับไปใน "วันเก่า" ไม่ได้ระบุมาสก์เครือข่ายย่อย แต่ได้มาจากการดูที่อยู่ IP บางบิต ตัวอย่างเช่นที่อยู่ IP ที่ขึ้นต้นด้วย 0 - 127 มีซับเน็ตมาสก์โดยนัยที่ 255.0.0.0 (เรียกว่าที่อยู่ IP "คลาส A")

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

อุปกรณ์บางอย่างใช้สัญกรณ์ที่เรียกว่า "สัญลักษณ์ตัวแทน" "wildcard mask" ไม่มีอะไรมากไปกว่า subnet mask ที่มี 0 ทั้งหมดที่จะมี 1 และ 1 ของที่จะมี 0 "หน้ากากตัวแทน" ของ a / 26 คือ:

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

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

เราเตอร์ทำงานอย่างไร

อย่างที่ฉันได้พูดไปแล้วเราเตอร์ IP มีงานคล้าย ๆ กับพนักงานขับรถส่งพิซซ่าเพราะพวกเขาจำเป็นต้องนำสินค้า (แพ็คเก็ต) ไปยังจุดหมายปลายทาง เมื่อนำเสนอด้วยแพ็กเก็ตที่ถูกผูกไว้สำหรับที่อยู่ 192.168.10.2 เราเตอร์ IP จำเป็นต้องกำหนดว่าอินเทอร์เฟซเครือข่ายใดที่จะทำให้แพ็กเก็ตนั้นใกล้กับปลายทางมากที่สุด

สมมติว่าคุณเป็นเราเตอร์ IP และคุณมีอินเตอร์เฟสที่เชื่อมต่อกับคุณตามหมายเลข:

  • Ethernet0 - 192.168.20.1, subnet mask / 24
  • Ethernet1 - 192.168.10.1, subnet mask / 24

หากคุณได้รับแพ็คเก็ตที่จะส่งด้วยที่อยู่ปลายทาง "192.168.10.2" มันค่อนข้างง่ายที่จะบอก (ด้วยสายตามนุษย์ของคุณ) ว่าแพ็กเก็ตควรถูกส่งออกไปที่อินเตอร์เฟส Ethernet1 เนื่องจากที่อยู่อินเตอร์เฟส Ethernet1 สอดคล้องกับปลายทางของแพ็กเก็ต ที่อยู่ คอมพิวเตอร์ทุกเครื่องที่เชื่อมต่อกับส่วนต่อประสาน Ethernet1 จะมีที่อยู่ IP เริ่มต้นด้วย "192.168.10" เนื่องจากรหัสเครือข่ายของที่อยู่ IP ที่กำหนดให้กับส่วนต่อประสาน Ethernet1 ของคุณคือ "192.168.10.0"

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

  • รหัสเครือข่าย: 192.168.20.0 (11000000.10101000.00010100.00000000) - มาสก์เครือข่ายย่อย 24 บิต - อินเตอร์เฟส Ethernet0
  • รหัสเครือข่าย: 192.168.10.0 (11000000.10101000.00001010.00000000) - subnet mask 24 บิต - อินเตอร์เฟส Ethernet1

สำหรับแพ็กเก็ตขาเข้าของเราที่ถูกผูกไว้สำหรับ "192.168.10.2" เราต้องการเพียงแปลงที่อยู่ของแพ็คเก็ตนั้นเป็นไบนารี่ (ในฐานะมนุษย์ - เราเตอร์จะรับมันเป็นไบนารี่ออฟไลน์เริ่มต้นด้วย) ตาราง (ขึ้นอยู่กับจำนวนบิตใน subnet mask) จนกระทั่งเราจับคู่รายการ

  • ปลายทางแพ็กเก็ตที่เข้ามา: 11000000.10101000.00001010.00000010

เปรียบเทียบกับรายการในตารางเส้นทางของเรา:

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

รายการสำหรับ Ethernet0 ตรงกับ 19 บิตแรกที่ดี แต่จากนั้นหยุดการจับคู่ นั่นหมายความว่าไม่ใช่อินเทอร์เฟซปลายทางที่เหมาะสม คุณจะเห็นว่าอินเตอร์เฟส Ethernet1 ตรงกับ 24 บิตของที่อยู่ปลายทาง อ้า! แพ็คเก็ตถูกผูกไว้สำหรับอินเตอร์เฟส Ethernet1

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

เส้นทางคงที่

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

เริ่มจากการเรียกเราเตอร์จากตัวอย่างก่อนหน้า "เราเตอร์ A" คุณรู้ตารางเส้นทางของ RouterA แล้ว:

  • รหัสเครือข่าย: 192.168.20.0 (11000000.10101000.00010100.00000000) - subnet mask / 24 - อินเตอร์เฟสเราเตอร์ A-Ethernet0
  • รหัสเครือข่าย: 192.168.10.0 (11000000.10101000.00001010.00000000) - subnet mask / 24 - อินเตอร์เฟสเราเตอร์ A-Ethernet1

สมมติว่ามีเราเตอร์อีกตัวหนึ่ง "เราเตอร์ B" ที่มีที่อยู่ IP 192.168.10.254/24 และ 192.168.30.1/24 ที่กำหนดให้กับอินเตอร์เฟส Ethernet0 และ Ethernet1 มันมีตารางเส้นทางต่อไปนี้:

  • รหัสเครือข่าย: 192.168.10.0 (11000000.10101000.00001010.00000000) - subnet mask / 24 - อินเตอร์เฟสเราเตอร์ B-Ethernet0
  • รหัสเครือข่าย: 192.168.30.0 (11000000.10101000.00011110.00000000) - subnet mask / 24 - อินเตอร์เฟสเราเตอร์ B-Ethernet1

ในศิลปะ ASCII ที่สวยงามเครือข่ายมีลักษณะดังนี้:

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

คุณจะเห็นว่าเราท์เตอร์ B รู้วิธี "รับ" เครือข่าย 192.168.30.0/24 ว่าเราเตอร์ A ไม่รู้อะไรเลย

สมมติว่าพีซีที่มีที่อยู่ IP 192.168.20.13 เชื่อมต่อกับเครือข่ายที่เชื่อมต่อกับอินเตอร์เฟส Ethernet0 ของเราเตอร์ A จะส่งแพ็กเก็ตไปยังเราเตอร์ A เพื่อส่งมอบ แพ็กเก็ตสมมุติฐานของเราถูกกำหนดไว้สำหรับที่อยู่ IP 192.168.30.46 ซึ่งเป็นอุปกรณ์ที่เชื่อมต่อกับเครือข่ายที่เชื่อมต่อกับอินเตอร์เฟส Ethernet1 ของเราเตอร์ B

ด้วยตารางเส้นทางที่แสดงด้านบนไม่มีรายการในตารางเส้นทางของเราเตอร์ที่ตรงกับปลายทาง 192.168.30.46 ดังนั้นเราเตอร์ A จะส่งคืนแพ็กเก็ตไปยังพีซีที่ส่งด้วยข้อความ "ปลายทางเครือข่ายที่ไม่สามารถเข้าถึงได้"

ในการทำให้เราเตอร์ A "ทราบ" ถึงการมีอยู่ของเครือข่าย 192.168.30.0/24 เราเพิ่มรายการต่อไปนี้ไปยังตารางเส้นทางในเราเตอร์ A:

  • รหัสเครือข่าย: 192.168.30.0 (11000000.10101000.00011110.00000000) - subnet mask / 24 - สามารถเข้าถึงได้ผ่าน 192.168.10.254

ด้วยวิธีนี้เราเตอร์ A มีรายการตารางเส้นทางที่ตรงกับปลายทาง 192.168.30.46 ของแพ็กเก็ตตัวอย่างของเรา รายการตารางเส้นทางนี้บอกว่า "ถ้าคุณได้รับแพ็กเก็ตที่ถูกผูกไว้สำหรับ 192.168.30.0/24 ให้ส่งไปที่ 192.168.10.254 เพราะเขารู้วิธีจัดการกับมัน" นี่เป็นการกระทำแบบ "ส่งพิซซ่าที่แผนกต้อนรับ" ที่คล้ายคลึงกันที่ฉันได้กล่าวถึงก่อนหน้านี้ - ส่งแพ็กเก็ตไปยังคนอื่นที่รู้วิธีเข้าใกล้ปลายทาง

การเพิ่มรายการในตารางเส้นทาง "ด้วยมือ" เรียกว่าการเพิ่ม "เส้นทางคงที่"

หาก Router B ต้องการส่งแพ็กเก็ตไปยังเครือข่ายย่อย 192.168.20.0 255.255.255.0 เครือข่ายมันจะต้องมีรายการในตารางเส้นทางของมันด้วย:

  • รหัสเครือข่าย: 192.168.20.0 (11000000.10101000.00010100.00000000) - subnet mask / 24 - เข้าถึงได้ผ่าน: 192.168.10.1 (ที่อยู่ IP ของเราเตอร์ A ในเครือข่าย 192.168.10.0)

สิ่งนี้จะสร้างพา ธ สำหรับการจัดส่งระหว่างเครือข่าย 192.168.30.0/24 และเครือข่าย 192.168.20.0/24 ทั่วเครือข่าย 192.168.10.0/24 ระหว่างเราเตอร์เหล่านี้

คุณต้องการให้แน่ใจว่าเราเตอร์ทั้งสองด้านของ "เครือข่ายคั่นระหว่างหน้า" นั้นมีรายการตารางเส้นทางสำหรับเครือข่าย "ปลายสุด" ถ้าเราเตอร์ B ในตัวอย่างของเราไม่มีรายการตารางเส้นทางสำหรับเครือข่าย "ปลายสุด" 192.168.20.0/24 ต่อกับเราเตอร์แพ็กเก็ตสมมุติจากพีซีที่ 192.168.20.13 จะไปยังอุปกรณ์ปลายทางที่ 192.168.30.46 แต่การตอบกลับใด ๆ ที่ 192.168.30.46 พยายามส่งกลับจะถูกส่งกลับโดยเราเตอร์ B ว่า "เครือข่ายปลายทางไม่สามารถเข้าถึงได้" การสื่อสารทางเดียวโดยทั่วไปไม่พึงประสงค์ ตรวจสอบให้แน่ใจเสมอว่าคุณคิดถึงปริมาณข้อมูลที่ไหลในทั้งสองทิศทางเมื่อคุณคิดถึงการสื่อสารในเครือข่ายคอมพิวเตอร์

คุณสามารถได้รับไมล์สะสมจำนวนมากจากเส้นทางคงที่ โปรโตคอลการกำหนดเส้นทางแบบไดนามิกเช่น EIGRP, RIP และอื่น ๆ ไม่มีอะไรมากไปกว่าวิธีการที่เราเตอร์จะแลกเปลี่ยนข้อมูลเส้นทางระหว่างกันซึ่งในความเป็นจริงแล้วสามารถกำหนดค่าด้วยเส้นทางแบบคงที่ได้ ข้อดีอย่างหนึ่งของการใช้โปรโตคอลการเราต์แบบไดนามิกบนเส้นทางแบบสแตติกนั้นคือโปรโตคอลแบบไดนามิกเส้นทางสามารถเปลี่ยนตารางการเราต์แบบไดนามิกตามเงื่อนไขของเครือข่าย (การใช้แบนด์วิดท์, ส่วนต่อประสาน "กำลังลง" ฯลฯ ) และแบบไดนามิก โปรโตคอลการกำหนดเส้นทางอาจส่งผลให้เกิดการกำหนดค่าที่ "เส้นทางไปรอบ ๆ " ความล้มเหลวหรือคอขวดในโครงสร้างพื้นฐานเครือข่าย (โปรโตคอลแบบไดนามิกเส้นทางมีWAYนอกขอบเขตของคำตอบนี้แม้ว่า.)

คุณไม่สามารถไปจากที่นี่ได้

ในกรณีของเราท์เตอร์ตัวอย่าง A จะเกิดอะไรขึ้นเมื่อแพ็กเก็ตที่เชื่อมโยงกับ "172.16.31.92" เข้ามา

ดูที่ตารางเส้นทางเราเตอร์ไม่ว่าปลายทางหรือเส้นทางคงที่ตรงกับ 24 บิตแรกที่ 172.18.31.92 (ซึ่งคือ 10101100.00010000.00011111.01011100, BTW)

ดังที่เราทราบแล้ว Router A จะส่งคืนแพ็กเก็ตไปยังผู้ส่งผ่านข้อความ "ปลายทางของเครือข่ายที่ไม่สามารถเข้าถึงได้"

บอกว่ามีเราเตอร์อื่น (เราเตอร์ C) นั่งอยู่ตามที่อยู่ "192.168.20.254" เราเตอร์ C มีการเชื่อมต่อกับอินเทอร์เน็ต!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

มันจะดีถ้าเราเตอร์ A สามารถกำหนดเส้นทางแพ็คเก็ตที่ไม่ตรงกับอินเทอร์เฟซท้องถิ่นใด ๆ จนถึงเราเตอร์ C ซึ่งเราเตอร์ C สามารถส่งพวกเขาไปยังอินเทอร์เน็ตได้ ป้อนเส้นทาง "เกตเวย์เริ่มต้น"

เพิ่มรายการที่ท้ายตารางเส้นทางของเราดังนี้:

  • รหัสเครือข่าย: 0.0.0.0 (00000000.00000000.00000000.00000000) - subnet mask / 0 - เราเตอร์ปลายทาง: 192.168.20.254

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

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

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

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

การวางผังเมืองและการกำหนดเส้นทาง IP

การแบ่งเครือข่ายย่อย IP เป็นเครือข่ายย่อย IP ที่เล็กลงเป็นการวางผังเมือง ในการวางผังเมืองการแบ่งเขตจะใช้เพื่อปรับให้เข้ากับลักษณะทางธรรมชาติของภูมิประเทศ (แม่น้ำทะเลสาบ ฯลฯ ) เพื่อมีอิทธิพลต่อการไหลของการจราจรระหว่างส่วนต่าง ๆ ของเมืองและแยกการใช้ที่ดินประเภทต่างๆ (อุตสาหกรรมที่อยู่อาศัย ฯลฯ ) . IP subnetting นั้นเหมือนกันจริงๆ

มีสาเหตุหลักสามประการที่ทำให้คุณต้อง subnet เครือข่าย:

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

  • ในเครือข่ายอีเทอร์เน็ตคุณอาจใช้เครือข่ายย่อยเพื่อ จำกัด ปริมาณการออกอากาศในส่วนที่กำหนดของเครือข่าย โปรโตคอลชั้นแอปพลิเคชันใช้ความสามารถในการออกอากาศของ Ethernet เพื่อจุดประสงค์ที่มีประโยชน์มาก เมื่อคุณมีโฮสต์มากขึ้นเรื่อย ๆ ในเครือข่ายอีเธอร์เน็ตเดียวกันเปอร์เซ็นต์ของการรับส่งข้อมูลออกอากาศบนสาย (หรืออากาศในอีเธอร์เน็ตไร้สาย) สามารถเพิ่มขึ้นจนถึงจุดที่สร้างปัญหาในการส่งทราฟฟิกที่ไม่ออกอากาศ (ในอดีตการรับส่งข้อมูลออกอากาศอาจครอบงำ CPU ของโฮสต์โดยบังคับให้พวกเขาตรวจสอบแต่ละแพ็กเก็ตออกอากาศซึ่งมีโอกาสน้อยกว่าในปัจจุบัน) การรับส่งข้อมูลที่มากเกินไปบนสวิตช์อีเธอร์เน็ตยังสามารถมาในรูปแบบ เงื่อนไขนี้เกิดจากสวิตช์อีเทอร์เน็ตไม่สามารถติดตามทุกปลายทางบนเครือข่ายและเป็นสาเหตุที่เครือข่ายอีเทอร์เน็ตสวิตช์ไม่สามารถปรับให้มีจำนวนโฮสต์ไม่สิ้นสุด ผลของการท่วมเฟรมไปยังจุดหมายปลายทางที่ไม่รู้จักนั้นคล้ายคลึงกับผลกระทบของการรับส่งสัญญาณออกอากาศที่มากเกินไปสำหรับจุดประสงค์ของเครือข่ายย่อย

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

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

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

สำหรับวัตถุประสงค์ของคำตอบนี้การสร้างเครือข่ายย่อยของเราเป็นเพียงข้อกังวลหลักของเรา แทนที่จะทำงานเป็นทศนิยมตามที่คุณต้องการกับการวางผังเมืองคุณทำงานเป็นเลขฐานสองเพื่ออธิบายขอบเขตของแต่ละเครือข่ายย่อย

ดำเนินการต่อใน: เครือข่ายย่อยของIPv4 ทำงานอย่างไร

(ใช่ ... เรามีขนาดสูงสุดของคำตอบ (30000 ตัวอักษร))


13
@ โจเซฟ: มันเป็นคำบรรยายที่ฉันส่งมาหลายครั้งเกินไปสำหรับความดีของตัวเอง > ยิ้ม <ฉันจะดูที่ส่วนไบนารีของคุณ ฉันเกลียดที่จะสอนเกี่ยวกับคณิตศาสตร์ (ซึ่งจริงๆแล้วความเข้าใจเลขฐานสองคือ - นับในฐาน 2) เพราะฉันไม่ค่อยเก่ง
Evan Anderson

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

28
อย่าทำลายมัน
โจเซฟ Kern

3
+1 สำหรับการโพสต์ที่ครอบคลุมมากที่สุดเท่าที่เคยเห็นใน ServerFault
สกอตต์ Lundberg

3
เพิ่มขึ้นถ้าสำหรับคำอุปมาวัดระยะทางเท่านั้น ตอนนี้ฉันรู้วิธีที่จะอธิบายว่าไบนารีทำงานอย่างไรกับผู้คน
phuzion

142

ต่อจาก: เครือข่ายย่อยของIPv4 ทำงานอย่างไร

ISP ของคุณให้ช่วงของรหัสเครือข่าย 192.168.40.0/24 (11000000.10101000.00101000.00000000) คุณรู้ว่าคุณต้องการใช้อุปกรณ์ไฟร์วอลล์ / เราเตอร์เพื่อ จำกัด การสื่อสารระหว่างส่วนต่าง ๆ ของเครือข่ายของคุณ (เซิร์ฟเวอร์, คอมพิวเตอร์ไคลเอนต์, อุปกรณ์เครือข่าย) และเช่นนี้คุณต้องการทำลายส่วนต่างๆของเครือข่ายของคุณ ลงในซับเน็ต IP (ซึ่งอุปกรณ์ไฟร์วอลล์ / เราเตอร์สามารถกำหนดเส้นทางระหว่าง)

คุณมี:

  • คอมพิวเตอร์เซิร์ฟเวอร์ 12 เครื่อง แต่คุณอาจได้มากถึง 50%
  • 9 สวิตช์
  • 97 ไคลเอ็นต์คอมพิวเตอร์ แต่คุณอาจได้รับมากกว่านี้

เป็นวิธีที่ดีในการแยก 192.168.40.0/24 เป็นชิ้นส่วนเหล่านี้คืออะไร?

คิดในพลังที่เท่ากันของสองและทำงานกับอุปกรณ์ที่เป็นไปได้จำนวนมากขึ้นคุณสามารถมากับ:

  • คอมพิวเตอร์เซิร์ฟเวอร์ 18 เครื่อง - พลังที่ใหญ่ที่สุดถัดไปของทั้งสองคือ 32
  • 9 สวิตช์ - พลังที่ยิ่งใหญ่ที่สุดของสองคือ 16
  • 97 คอมพิวเตอร์ไคลเอนต์ - พลังที่ยิ่งใหญ่ที่สุดของสองคือ 128

ในเครือข่ายย่อย IP ที่ระบุมีที่อยู่สองแห่งที่สงวนไว้ซึ่งไม่สามารถใช้เป็นที่อยู่ IP ของอุปกรณ์ที่ถูกต้อง - ที่อยู่ที่มีศูนย์ทั้งหมดในส่วน ID โฮสต์และที่อยู่กับที่อยู่ทั้งหมดในส่วน ID โฮสต์ ดังนั้นสำหรับ IP subnet ใด ๆ ที่ได้รับจำนวนที่อยู่ของโฮสต์ที่มีอยู่คือสองถึงพลังของปริมาณ 32 ลบจำนวนบิตใน subnet mask ลบด้วย 2 ดังนั้นในกรณีของ 192.168.40.0/24 เรา จะเห็นได้ว่าซับเน็ตมาสก์มี 24 บิต ซึ่งปล่อยให้ 8 บิตพร้อมใช้งานสำหรับ ID โฮสต์ เรารู้ว่ากำลัง 2 ถึง 8 คือ 256 - หมายถึง 256 บิตที่เป็นไปได้ของการรวมกันพอดีกับสล็อต 8 บิตกว้าง เนื่องจากการรวมกันของ "11111111" และ "00000000" ของ 8 บิตนั้นไม่ได้รับอนุญาตให้ใช้กับ ID โฮสต์ซึ่งจะทำให้เรามีโฮสต์ที่เป็นไปได้ 254 ตัวที่สามารถกำหนดได้ในเครือข่าย 192.168.40.0/24

ในบรรดาโฮสต์ 254 นั้นดูเหมือนว่าเราสามารถใส่คอมพิวเตอร์ไคลเอนต์สวิตช์และคอมพิวเตอร์เซิร์ฟเวอร์ในพื้นที่นั้นใช่ไหม มาลองกัน.

คุณมีซับเน็ตมาสก์ 8 บิตเพื่อ "เล่นกับ" (ที่เหลืออีก 8 บิตของที่อยู่ IP 192.168.40.0/24 ที่ซับเน็ตมาสก์ให้บริการโดย ISP ของคุณไม่ครอบคลุม) เราต้องหาวิธีใช้ 8 บิตเหล่านั้นเพื่อสร้างหมายเลขเครือข่ายเฉพาะที่สามารถรองรับอุปกรณ์ข้างต้นได้

เริ่มต้นด้วยเครือข่ายที่ใหญ่ที่สุด - คอมพิวเตอร์ไคลเอนต์ คุณรู้ว่าพลังงานที่ใหญ่กว่าถัดไปของสองอุปกรณ์จากจำนวนของอุปกรณ์ที่เป็นไปได้คือ 128 ตัวเลข 128 ในหน่วยไบนารี่คือ "10,000000" โชคดีสำหรับเราที่เหมาะกับสล็อต 8 บิตที่เรามีให้ฟรี (ถ้าไม่เช่นนั้นจะเป็นเครื่องบ่งชี้ว่าซับเน็ตเริ่มต้นของเรานั้นเล็กเกินไปที่จะรองรับอุปกรณ์ทั้งหมดของเรา)

มาดู ID เครือข่ายของเราที่ ISP ของเราจัดเตรียมไว้และเพิ่ม subnet mask เพียงเล็กน้อยให้แบ่งมันออกเป็นสองเครือข่าย:

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

มองดูมันจนกว่ามันจะสมเหตุสมผล เราเพิ่มซับเน็ตมาสก์โดยเพิ่มความยาวหนึ่งบิตทำให้รหัสเครือข่ายครอบคลุมหนึ่งบิตที่จะใช้เป็นรหัสโฮสต์ เนื่องจากหนึ่งบิตอาจเป็นศูนย์หรือหนึ่งเราจึงแบ่งเครือข่าย 192.168.40.0 ของเราออกเป็นสองเครือข่ายอย่างมีประสิทธิภาพ ที่อยู่ IP แรกที่ถูกต้องในเครือข่าย 192.168.40.0/25 จะเป็น ID โฮสต์แรกที่มี "1" ในบิตขวาสุด:

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

โฮสต์ที่ถูกต้องแรกในเครือข่าย 192.168.40.128 จะเป็น ID โฮสต์แรกที่มี "1 'ในบิตขวาสุด:

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

โฮสต์ที่ถูกต้องสุดท้ายในแต่ละเครือข่ายจะเป็น ID โฮสต์ที่มีทุก ๆ บิตยกเว้นบิตที่ถูกต้องที่สุดตั้งค่าเป็น "1":

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

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

  • คอมพิวเตอร์ไคลเอนต์ - 192.168.40.0/25 - IP ที่ถูกต้อง: 192.168.40.1 - 192.168.40.126

ตอนนี้เพื่อแยกเครือข่ายที่สองสำหรับเซิร์ฟเวอร์และสวิตช์ของเราเราก็ทำแบบเดียวกัน

เรามีคอมพิวเตอร์เซิร์ฟเวอร์ 12 เครื่อง แต่เราอาจซื้อมากถึง 6 เครื่อง มาวางแผนกันวันที่ 18 ซึ่งทำให้เรามีพลังสูงสุดต่อไปเป็น 2 เป็น 32 ในเลขฐานสอง 32 คือ "100000" ซึ่งมีความยาว 6 บิต เรามีซับเน็ตมาสก์ 7 บิตเหลืออยู่ใน 192.168.40.128/25 ดังนั้นเราจึงมีบิตเพียงพอที่จะ "เล่น" ต่อไป การเพิ่ม subnet mask อีกหนึ่งบิตทำให้เรามีเครือข่ายอีกสองเครือข่าย:

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

ดังนั้นตอนนี้เราได้แยก 192.168.40.128/25 ออกเป็นสองเครือข่ายซึ่งแต่ละอันมีซับเน็ตมาสก์ 26 บิตหรือมี ID โฮสต์ที่เป็นไปได้ทั้งหมด 62 รายการ - 2 ^ (32 - 26) - 2

นั่นหมายความว่าเครือข่ายทั้งสองนั้นมีที่อยู่เพียงพอสำหรับเซิร์ฟเวอร์และสวิตช์ของเรา! ทำบันทึกย่อ:

  • เซิร์ฟเวอร์ - 192.168.40.128/26 - IP ที่ถูกต้อง: 192.168.40.129 - 192.168.40.190
  • สวิตช์ - 192.168.40.192/26 - IP ที่ถูกต้อง: 192.168.40.193 - 192.168.40.254

เทคนิคนี้เรียกว่า subnet masking (VLSM) ที่มีความยาวผันแปรได้และหากนำไปใช้อย่างเหมาะสมจะทำให้ "คอร์เราเตอร์" มีตารางเส้นทางที่เล็กกว่า (ผ่านกระบวนการที่เรียกว่า "การสรุปเส้นทาง") ในกรณีของ ISP ของเราในตัวอย่างนี้พวกเขาอาจไม่รู้เลยว่าเราได้ subnet มาแล้ว 192.168.40.0/24 หากเราเตอร์ของพวกเขามีแพ็กเก็ตที่ถูกผูกไว้สำหรับ 192.168.40.206 (สวิตช์ตัวใดตัวหนึ่งของเรา) พวกเขาต้องการเพียงแค่ส่งผ่านไปยังเราเตอร์ของเราเท่านั้น (ตั้งแต่ 192.168.40.206 ตรงกับรหัสเครือข่ายและซับเน็ตมาสก์ 192.168.40.0/24 ) และเราเตอร์ของเราจะไปถึงปลายทาง สิ่งนี้จะป้องกันเราต์ซับเน็ตออกจากตารางการเราต์ (ฉันทำให้มันง่ายขึ้นที่นี่ แต่คุณเข้าใจแล้ว)

คุณสามารถวางแผนเครือข่ายขนาดใหญ่ทางภูมิศาสตร์ได้ในลักษณะเดียวกัน ตราบใดที่คุณทำ "การวางผังเมือง" ที่ถูกต้องล่วงหน้า (คาดการณ์จำนวนโฮสต์ในแต่ละเครือข่ายย่อยด้วยความแม่นยำและเป็นตาต่ออนาคต) คุณสามารถสร้างลำดับชั้นการกำหนดเส้นทางขนาดใหญ่ที่ที่เราเตอร์หลัก "สรุป "ไปยังเส้นทางจำนวนน้อยมาก ตามที่เราเห็นด้านบนเส้นทางที่มากขึ้นที่อยู่ในตารางเส้นทางของเราเตอร์นั้นช้ากว่าที่มันจะทำงานได้ การออกแบบเครือข่าย IP ด้วย VLSM และการรักษาตารางเส้นทางเล็ก ๆ เป็นสิ่งที่ดี (tm)

ความไม่สมจริงของตัวอย่าง

โลกของตัวละครในคำตอบนี้คือตัวละคร โดยทั่วไปคุณสามารถสร้างเครือข่ายย่อยบนอีเธอร์เน็ตสวิตช์ที่ทันสมัยซึ่งมีโฮสต์มากกว่า 254 (ขึ้นอยู่กับปริมาณการใช้ข้อมูล) ดังที่ได้กล่าวไว้ในความคิดเห็นการใช้ / 24 เครือข่ายระหว่างเราเตอร์ไม่สอดคล้องกับ Real Life (tm) มันทำให้เป็นตัวอย่างที่น่ารัก แต่เสียพื้นที่ที่อยู่ โดยทั่วไปแล้วจะใช้ a / 30 หรือ a / 31 (ดูhttp://www.faqs.org/rfcs/rfc3021.htmlเพื่อดูรายละเอียดเกี่ยวกับวิธีการทำงานของ / 31 - พวกเขาอยู่นอกเหนือขอบเขตของคำตอบนี้แน่นอน) ใช้เครือข่าย ลิงก์ที่เป็นจุดต่อจุดระหว่างเราเตอร์สองตัว


ข้อผิดพลาดเล็กน้อย: รหัสหลังจาก "โฮสต์ที่ถูกต้องล่าสุด ... " เปลี่ยนกลับเป็นการเรียกว่า "โฮสต์ที่ถูกต้องแรก" ฉันคิดว่าควรจะพูดว่า "ครั้งสุดท้าย"
JoeCool1986

@ JoeCool1986 - จับได้ดี
Evan Anderson

2
ฉันจะยกระดับคำตอบนี้เพื่อให้แน่ใจว่าคำตอบทั้งสองนั้นจะถูกเก็บไว้ตามลำดับ
l46kok

ในส่วนที่คุณสร้างสองซับเน็ตจาก 192.168.40.128 และสร้าง ID เครือข่ายที่ 192.168.40.192 192 มาจากไหน
user6607

@ user6607 เครือข่ายย่อยนับถอยหลัง (โดยไม่มีช่องว่าง) ตัวอย่างเช่นเครือข่ายย่อยครั้งแรกที่จะแสดงเป็น0 00000000ซับเน็ตที่สองเป็น128เช่นนั้น10000000และซับเน็ตที่สาม192ถูกแสดงเป็น11000000ฯลฯ เพียงแค่นับถอยหลังเพื่อค้นหาซับเน็ตใหม่
โจเซฟเคอร์

76

Sub-ตาข่าย

การแบ่งตาแหน่งนั้นไม่ใช่เรื่องยาก แต่สามารถข่มขู่ได้ งั้นมาเริ่มกันด้วยขั้นตอนที่ง่ายที่สุด เรียนรู้ที่จะนับเป็นเลขฐานสอง

เลขฐานสอง

Binary เป็นระบบการนับฐาน 2 ประกอบด้วยตัวเลขเพียงสองตัว (1 และ 0) การนับรายได้ในลักษณะนี้

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

ดังนั้นถ้าคุณแค่จินตนาการว่าแต่ละ 1 เป็นตัวยึดตำแหน่งสำหรับค่า (ค่าไบนารีทั้งหมดเป็นกำลังสอง)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

ดังนั้น ... 100000 = 32 และ 10,000000 = 128 และ 11111111 = 255

เมื่อฉันพูดว่า "ฉันมีซับเน็ตมาสก์ 255.255.255.0" ฉันหมายถึง "ฉันมีซับเน็ตมาสก์ที่ 11111111.11111111111111111111110000000000" เราใช้ซับเน็ตเป็นตัวย่อ

ช่วงเวลาในที่อยู่ให้คั่นทุก ๆ 8 หลักเลขฐานแปด (เลขแปดตัว) นี่คือเหตุผลที่ IPv4 รู้จักกันในชื่อพื้นที่ 32 บิต (8 * 4)

ทำไมต้องซับเน็ต

ที่อยู่ IPv4 (192.168.1.1) ขาดตลาด การแบ่งย่อยทำให้เรามีวิธีเพิ่มจำนวนเครือข่ายที่มีอยู่ (หรือโฮสต์) นี่คือเหตุผลด้านการบริหารและเหตุผลทางเทคนิค

ที่อยู่ IP แต่ละอันแบ่งออกเป็นสองส่วนแยกกันคือเครือข่ายและโฮสต์ ตามค่าเริ่มต้นที่อยู่คลาส C (192.168.1.1) ใช้ 3 octets แรก (192.168.1) สำหรับส่วนเครือข่ายของที่อยู่ และ octet ที่ 4 (.1) เป็นส่วนของโฮสต์

ตามค่าเริ่มต้นที่อยู่ IP และซับเน็ตมาสก์สำหรับที่อยู่ Class C จะเป็นดังนี้

IP     192.168.1.1 
Subnet 255.255.255.0

ในรูปแบบไบนารีเช่นนี้

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

ดูตัวอย่างไบนารีอีกครั้ง สังเกตว่าฉันพูดว่าสาม octets แรกถูกใช้สำหรับเครือข่ายหรือไม่ ขอให้สังเกตว่าส่วนเครือข่ายทั้งหมดนั้นเป็นอย่างไร นั่นคือการแบ่งย่อยทั้งหมดคือ มาขยาย

ระบุว่าฉันมี octet เดียวสำหรับส่วนโฮสต์ของฉัน (ในตัวอย่างด้านบน) ฉันสามารถมีโฮสต์ได้ 256 คนเท่านั้น (256 คือค่าสูงสุดของอ็อกเท็ตนับจาก 0) แต่มีเคล็ดลับเล็กน้อยอีกข้อหนึ่ง: คุณต้องลบที่อยู่โฮสต์ 2 แห่งจากที่มีอยู่ (ปัจจุบัน 256) ที่อยู่แรกในช่วงจะเป็นเครือข่าย (192.168.1.0) และที่อยู่สุดท้ายในช่วงจะเป็นการออกอากาศ (192.168.1.255) ดังนั้นคุณมี 254 ที่อยู่สำหรับโฮสต์ในเครือข่ายเดียว

กรณีศึกษา

สมมติว่าฉันให้กระดาษต่อไปนี้แก่คุณ

Create 4 networks with 192.168.1.0/24.

ลองดูที่นี่ กระบวนการ / 24 เรียกว่าสัญกรณ์ CIDR แทนที่จะอ้างอิง 255.255.255.0 เราเพิ่งอ้างอิงบิตที่เราต้องการสำหรับเครือข่าย ในกรณีนี้เราต้องการ 24 บิต (3 * 8) จากที่อยู่ 32 บิต เขียนออกมาเป็นเลขฐานสอง

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

ต่อไปเรารู้ว่าเราต้องการทราบจำนวนเครือข่ายย่อยที่เราต้องการ ดูเหมือนว่า 4 เนื่องจากเราจำเป็นต้องสร้างเครือข่ายมากขึ้น (ปัจจุบันเรามีเพียงเครือข่ายเดียว) ให้พลิกบิตได้บ้าง

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

ตอนนี้เราได้ตัดสินใจในวันที่ / 26 มาเริ่มจัดสรรโฮสต์กัน คณิตศาสตร์ง่ายๆ

32(bits) - 26(bits) = 6(bits) for host addresses.

เรามี 6 บิตในการจัดสรรในแต่ละเครือข่ายสำหรับโฮสต์ จำไว้ว่าเราต้องลบ 2 สำหรับแต่ละเครือข่าย

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

ตอนนี้เราต้องคิดออกว่าโฮสต์ไปไหน กลับไปที่ไบนารี!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

ด้วยวิธีนี้คุณสามารถคำนวณ subnet ทั้งหมดได้

Wild Cards มาส์ กแบบ wild card เป็น subnet mask แบบคว่ำ

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

ต่อไป

Google สำหรับคำว่า 'super-netting' และ 'VLSM (subnet mask sub length length)' สำหรับหัวข้อขั้นสูงเพิ่มเติม

ฉันสามารถดูตอนนี้ที่ผมใช้เวลานานเกินไปในการตอบสนอง ... ถอนหายใจ


1
"ระบุว่าฉันมี octet เดียวสำหรับส่วนโฮสต์ของฉัน (ในตัวอย่างด้านบน) ฉันสามารถมี 255 โฮสต์ได้เท่านั้น (255 เป็นค่าสูงสุดของ octet) แต่มีเคล็ดลับเล็กน้อย: คุณต้องลบที่อยู่โฮสต์ 2 แห่ง จากที่มีอยู่ (ปัจจุบัน 255) ที่อยู่แรกในช่วงจะเป็นเครือข่าย (192.168.1.0) และที่อยู่สุดท้ายในช่วงจะเป็นการออกอากาศ (192.168.1.255) ดังนั้นคุณจึงมี 253 ที่อยู่สำหรับ โฮสต์ในเครือข่ายเดียว "... นี่ไม่ถูกต้อง
joeqwerty

1
มีค่าที่เป็นไปได้ 256 ค่าสำหรับ octet: 0 ถึง 255 รวมเป็น 256 256 -2 (ที่อยู่เครือข่ายและการออกอากาศ) = 254 ที่อยู่โฮสต์ที่เป็นไปได้
joeqwerty

อุ่ย ขอบคุณ! :-) ปิดไปทีละอย่างฉันไม่รู้เลยว่าฉันจัดการเพลงนั้นได้อย่างไร
โจเซฟเคอร์น

1
-1 ขออภัย แต่ไม่มี "คลาส" ตั้งแต่ RFC 1519 ในปี 1993 ไม่มีใครควรพูดถึงพวกเขานอกบริบททางประวัติศาสตร์ พวกเขากำลังสับสนและก่อให้เกิดความเข้าใจผิดมากมาย
Chris S

คริสคุณอาจพูดถูก แต่ชั้นเรียนยังคงสอนในช่วงต้นปี 2000 ใน CCNA และหลักสูตรระดับปริญญาตรีส่วนใหญ่
โจเซฟ Kern

34

บทเรียนประวัติโดยย่อ: แต่เดิมที่อยู่ unicast IPv4 ถูกแบ่งออกเป็น 3 คลาสโดยแต่ละอันมีความยาวมาสก์ 'เริ่มต้น' ที่เกี่ยวข้อง (เรียกว่ามาสก์ซับเน็ตคลาสซี่)

  • คลาส A: ทุกอย่างในช่วง 1.0.0.0 -> 127.255.255.255 ซับเน็ตมาสก์ที่มีระดับ 255.0.0.0 (/ 8 ในรูปแบบ CIDR)
  • คลาส B: ทุกอย่างในช่วง 128.0.0.0 -> 191.255.255.255 ซับเน็ตมาสก์ที่มีระดับ 255.255.0.0 (/ 16 ในรูปแบบ CIDR)
  • คลาส C: ทุกอย่างในช่วง 192.0.0.0 -> 223.255.255.255 ซับเน็ตมาสก์ที่มีระดับ 255.255.255.0 (/ 24 ในรูปแบบ CIDR)

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

อย่างไรก็ตามเมื่อเครือข่ายไอพีเติบโตขึ้นมันก็เห็นได้ชัดว่าวิธีนี้มีปัญหา เพื่อชื่อ แต่สาม:

ในโลกที่มีระดับเครือข่ายย่อยทั้งหมดต้องมีรูปแบบของ / 8, / 16, หรือ / 24 นี่หมายความว่า subnet ที่เล็กที่สุดที่สามารถกำหนดค่าได้คือ / 24 ซึ่งอนุญาตให้โฮสต์ 254 แอดเดรส (.0 และ. 255 ถูกจองเป็นเครือข่ายและที่อยู่การออกอากาศตามลำดับ) นี่เป็นสิ่งที่สิ้นเปลืองอย่างมากโดยเฉพาะการเชื่อมโยงแบบจุดต่อจุดโดยมีเราเตอร์เพียงสองตัวเท่านั้น

แม้หลังจากข้อ จำกัด นี้ผ่อนคลายโพรโทคอลการกำหนดเส้นทางก่อนหน้านี้ (เช่นRIPv1 ) ไม่ได้โฆษณาความยาวมาสก์ที่เกี่ยวข้องกับคำนำหน้า IP ในกรณีที่ไม่มีมาสก์เฉพาะก็จะใช้มาสก์ของอินเตอร์เฟสที่เชื่อมต่อโดยตรงในเครือข่ายที่มีระดับเดียวกันหรือถอยกลับไปใช้มาสก์ที่มีระดับ ตัวอย่างเช่นหากคุณต้องการใช้เครือข่าย 172.16.0.0 สำหรับลิงค์ระหว่างเราเตอร์ที่มี / 30 รูปแบบเครือข่ายย่อยทั้งหมดจาก 172.16.0.0 - 172.16.255.255 จะต้องมีรูปแบบ / 30 (16384 เครือข่ายย่อยแต่ละคนมี IP ที่ใช้งานได้ 2 แห่ง )

ตารางเส้นทางของเราเตอร์อินเทอร์เน็ตเริ่มใช้หน่วยความจำมากขึ้นเรื่อย ๆ สิ่งนี้เป็นที่รู้จักกันในชื่อของ 'ระเบิดตารางเส้นทาง' หากผู้ให้บริการมี 16 เครือข่ายที่ต่อเนื่องกัน / 24 ตัวอย่างเช่นพวกเขาจะต้องโฆษณาคำนำหน้าทั้งหมด 16 คำแทนที่จะเป็นบทสรุปเดียวที่ครอบคลุมช่วงทั้งหมด

การปรับแต่งที่เกี่ยวข้องสองรายการทำให้เราสามารถก้าวข้ามข้อ จำกัด ข้างต้นได้

  1. ซับเน็ตมาสก์แบบยาวตัวแปร (VLSM)
  2. CIDR (การกำหนดเส้นทางระหว่างโดเมนแบบไม่ Classless)

VLSM หมายถึงความสามารถของโปรโตคอลการเราต์เพื่อรองรับซับเน็ตมาสก์ที่แตกต่างกันภายในเครือข่ายที่มีระดับเดียวกัน ตัวอย่างเช่น:

192.168.1.0/24

สามารถแบ่งออกเป็น:

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

ซึ่งอนุญาตให้ใช้พื้นที่ที่อยู่อย่างมีประสิทธิภาพมากขึ้น ซับเน็ตอาจมีการกำหนดขนาดอย่างถูกต้องสำหรับจำนวนโฮสต์ / เราเตอร์ที่จะเชื่อมต่อกับพวกเขา

CIDR ใช้ VLSM และขยายไปในทางอื่น นอกเหนือจากการแบ่งเครือข่าย classful เดียวเป็น subnets ขนาดเล็ก CIDR ช่วยให้การรวมเครือข่าย classful หลายเป็นสรุปเดียว ตัวอย่างเช่นเครือข่าย Class B (/ 16) ต่อไปนี้:

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

สามารถรวม / สรุปด้วยคำนำหน้าเดียว:

172.16.0.0/14

ในแง่ของ subnetting: subnet mask มีความยาว 32 บิต ความยาวรูปแบบแสดงจำนวนบิตที่ระบุส่วนเครือข่ายของที่อยู่ ตัวอย่างเช่น:

10.1.1.0/24
  • ซับเน็ตมาสก์ที่มีระดับเป็น / 8
  • ซับเน็ตมาสก์จริงคือ / 24
  • 16 bits (24-8) ได้รับการ 'ยืม' สำหรับการใช้งานเครือข่ายย่อย

ซึ่งหมายความว่าสมมติว่าเน็ตเวิร์ก 10.0.0.0/8 ทั้งหมดถูกซับเน็ตลงใน / 24s จะมีซับเน็ต 65536 (2 ^ 16) อยู่ในช่วงนี้ (นี่คือสมมติว่าแพลตฟอร์มที่คุณใช้รองรับหมายเลขเครือข่ายย่อยเป็น 0 และ 255 ดูที่ ip subnet-zero ของซิสโก้)

มี 8 บิตที่เหลืออยู่ใน 'ส่วนโฮสต์' ของที่อยู่ ซึ่งหมายความว่ามีที่อยู่ IP 256 ที่พร้อมใช้งาน (2 ^ 8) ซึ่งสงวนไว้ 2 แห่ง (10.1.1.0 เป็นที่อยู่เครือข่าย 10.1.1.255 เป็นที่อยู่การออกอากาศที่กำกับโดยเครือข่ายย่อย) สิ่งนี้จะทำให้ที่อยู่ IP ที่ใช้งานได้ 254 รายการบนซับเน็ตนี้ ((2 ^ 8) - 2)


4
จริงๆแล้วมี 5 ชั้น
dbasnett

5
เป็นจริง แต่เราจำเป็นต้องได้รับการจัดการกับคลาส E และคลาสที่จองไว้สำหรับคำถาม 'บทนำสู่ subnetting' หรือไม่ :)
Murali Suriar

2
คุณนำประวัติมาเป็นคำถามแนะนำตัว ... จากนั้นปล่อยให้มันไม่สมบูรณ์ ไม่แน่ใจว่าอันไหนแย่กว่ากัน
Chris S

7

ช่วงเครือข่าย: เครือข่ายที่มีการอ้างอิงเสมอโดย 2 หมายเลข: หนึ่งเพื่อกำหนดเครือข่ายและอื่น ๆ เพื่อตรวจสอบว่าคอมพิวเตอร์ (หรือโฮสต์) ที่อยู่ในเครือข่ายนั้น เนื่องจากที่อยู่ nertwork แต่ละรายการมีความยาว 32 บิตตัวเลขทั้งสองจึงต้องพอดีกับ 32 บิตเหล่านี้

การกำหนดหมายเลขเครือข่ายมีความสำคัญเนื่องจากนี่เป็นสิ่งที่ ICANN แจกแจงเมื่อคุณขอช่วง IP เครือข่าย หากเราไม่มีมันจะไม่มีใครสามารถบอกความแตกต่างระหว่างเครือข่ายของฉันกับ AT & Ts ดังนั้นในขณะที่ตัวเลขเหล่านี้จะต้องไม่ซ้ำกันไม่มีใครต้องการกำหนดหมายเลขให้กับโฮสต์ที่อยู่ในเครือข่ายของฉัน ดังนั้นการแยก - ส่วนแรกได้รับการจัดการโดยคนในเครือข่ายส่วนที่สองคือทั้งหมดของฉันที่จะมอบให้กับเครื่องที่ฉันต้องการ

หมายเลขเครือข่ายไม่ได้รับการแก้ไขที่บิตจำนวนหนึ่ง - ตัวอย่างเช่นถ้าฉันมีเพียง 200 เครื่องที่จะจัดการตัวเองฉันจะมีความสุขอย่างสมบูรณ์แบบด้วยหมายเลขเครือข่ายที่ใช้ 24 บิตทำให้ฉันเหลือเพียง 8 บิตสำหรับตัวเอง - ซึ่งเพียงพอสำหรับโฮสต์สูงสุด 255 ราย ในขณะที่หมายเลขเครือข่ายใช้ 24 บิตเราสามารถมีได้มากหมายถึงผู้คนจำนวนมากสามารถมีเครือข่ายของตนเอง

ในอดีตสิ่งนี้เรียกว่าเครือข่ายคลาส C (คลาส B ใช้ 16 บิตสำหรับหมายเลขเครือข่ายและคลาส A ใช้ 8 บิตดังนั้นจึงมีเครือข่ายคลาส A อยู่เพียงไม่กี่ตัว)

ทุกวันนี้อนุสัญญาการตั้งชื่อนี้ได้ล้าสมัยไปแล้ว มันถูกแทนที่ด้วยแนวคิดที่เรียกว่า CIDR CIDR ระบุจำนวนบิตสำหรับโฮสต์ของคุณอย่างชัดเจนหลังเครื่องหมายทับ ดังนั้นตัวอย่างของฉันด้านบน (คลาส C) จึงเรียกว่าเป็น CIDR / 24

สิ่งนี้ทำให้เรามีความยืดหยุ่นเพิ่มขึ้นเล็กน้อยก่อนที่ฉันจะมี 300 โฮสต์เพื่อจัดการฉันต้องการเครือข่ายคลาส B! ตอนนี้ฉันจะได้รับ / 23 CIDR ดังนั้นฉันจึงมี 9 บิตสำหรับฉันและ 23 บิตสำหรับหมายเลขเครือข่าย ICANN อาจไม่มีเครือข่ายประเภทนี้ แต่ถ้าฉันมีเครือข่ายภายในหรือให้เช่าเครือข่ายบางส่วนจาก ISP สิ่งนี้ทำให้การจัดการง่ายขึ้น - โดยเฉพาะอย่างยิ่งเมื่อลูกค้าของพวกเขาได้รับ / 29 (ทิ้งฉันไว้) . 3 บิตหรือสูงสุด 8 เครื่อง) ซึ่งช่วยให้ผู้คนจำนวนมากขึ้นที่จะมีที่อยู่ IP ที่มีอยู่ของตัวเอง จนกว่าเราจะได้รับ IPv6 สิ่งนี้ค่อนข้างสำคัญ


อย่างไรก็ตาม ... ในขณะที่ฉันรู้ว่า / 24 CIDR นั้นเทียบเท่ากับเครือข่ายคลาส C เก่าและ a / 16 เป็นคลาส B และ / 8 เป็นคลาส A ... ฉันยังคงนิ่งงันพยายามคำนวณ a / 22 ใน หัวของฉัน. โชคดีที่มีเครื่องมือที่ทำสิ่งนี้ให้ฉัน :)

อย่างไรก็ตาม - ถ้าคุณรู้ว่า / 24 คือ 8 บิตสำหรับโฮสต์ (และ 24 บิตสำหรับเครือข่าย) จากนั้นฉันรู้ว่า / 23 ให้ฉันเพิ่มบิตซึ่งเพิ่มจำนวนโฮสต์เป็นสองเท่า


-1 ขออภัย แต่การกล่าวถึงคลาสนอกการอ้างอิง "historical" นั้นไม่เหมาะสมในวันนี้ พวกเขาไม่ได้ "ตกเทรนด์แฟชั่น" พวกเขาเลิกใช้งานอย่างเป็นทางการโดย RFC 1519 ในปี 1993 พวกเขาสับสนว่าเป็น h * ll ทั้งหมดและก่อให้เกิดความเข้าใจผิด ๆ
Chris S

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

5

ฉันจะโพสต์และตอบคำถามที่เกี่ยวข้องสองสามข้อระหว่างทาง:

  • ทำไมคุณเห็น255.255.255.0บ่อยครั้ง
  • ทำไม192.168.0.1?
  • ทำไม127.0.0.1?

ทำไมตัวเลขแปลก ๆ เช่น 255, 192, 168, 127?


8 +8 + 8 + 8 บิตทศนิยมประ

ที่อยู่อินเทอร์เน็ตเช่น194.60.38.10ใช้เครื่องหมายจุดทศนิยมเพื่อแบ่ง 32 บิตออกเป็น 8 + 8 + 8 + 8 บิต วิธีการประทศนิยมแปลงแต่ละหมายเลขไบนารีแล้วซ้าย padding กับ0's

ยกตัวอย่างเช่น.60.→ 60 = 32 + 16 + 8 + 4 → →111100.00111100.

ดังนั้น 194.60.38.10 จึงเป็นจุดทศนิยมสำหรับที่อยู่ 4 × 8 = 32 บิต11000010.00111100.00100110.00001010ตั้งแต่ 38 → 100110, 10 → 1010และอื่น ๆ 194 ต้องการทั้ง 8 บิต ส่วนที่เหลือเป็นเบาะ

มีเบาะ

เมื่อคุณคิดว่า 255, 192 และ 127 ในไบนารีแบบ 8 บิตคุณสามารถเข้าใจได้ง่ายขึ้นว่าทำไมทศนิยมบางตัวจึงเป็นเรื่องธรรมดา:

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

ตัวเลขทศนิยมเหล่านี้เกิดขึ้นเพื่อแสดงถึงบล็อกแบบ 8 บิตที่สะดวกสบายเช่น■■■■■■■■, ■□□□□□□□และ□■■■■■■■ ดังนั้นคุณไม่เคยเห็น 256 = 2⁹เพราะของวงเงิน 8 บิตและ 127 = 128-1 = 2⁸-1 เป็นบิตพลิกจากอำนาจของสองและอำนาจของทั้งสอง10………00000'ใน เลขฐานสอง.

  • 168 = 10101000

Subnet masks: Mine ของฉันคือของฉัน + คุณมีอะไรเป็นของคุณ

ซับเน็ตมาสก์จะแบ่งที่อยู่อินเทอร์เน็ต 32 บิตแต่ละรายการเป็น ID เครือข่ายและ ID โฮสต์ ในขณะที่ที่อยู่อินเทอร์เน็ตสามารถมีส่วนผสมของ 1 และ 0, ซับเน็ตมาสก์เริ่มต้นด้วย 1 เท่านั้นและลงท้ายด้วย 0 เท่านั้น

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

การปิดกั้น 8 + 8 + 8 = 24 บิตแรกและการตั้งค่า 8 บิตสุดท้ายเป็นวิธีการแยก IP ■■□□□□■□ | □□■■■■□□ | □□■□□■ ■□ | □□□□■□■□เป็นสองชิ้น:

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ host

หากเจ้าของเครือข่ายย่อย (พูดว่าOmniCorp ) ต้องการ IP ภายในมากขึ้นพวกเขาสามารถซื้อเพิ่มได้ (พูดว่า 8 + 8 = 16 บิต) ทางด้านขวามือของเครือข่ายเช่นนี้

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ host

เห็นได้ชัดว่ามีการแลกเปลี่ยนภายใน 32-bit = 2³² = 4,294,967,296 พื้นที่ที่อยู่ตัวเลือก: หากคุณซื้อรหัสเครือข่าย (ด้านซ้าย) มากขึ้นเครือข่ายภายในของคุณจะมี ID โฮสต์ (ด้านขวา) มากขึ้นเพื่อกำหนด

คนราคาถูกจึงมีหน้ากากเครือข่ายย่อยของ

255.255.255.0 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□

แม้แต่คนที่ถูกกว่าก็มี

255.255.255.128 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■□□□□□□□

หรือ 255.255.255.192 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■■□□□□□□

ตามความเชื่อของชาวบ้านมันไม่ใช่ Roger Miller แต่เป็นผู้ดูแลระบบต่ำที่มีหน้ากาก 255.255.255.254 ซึ่งตอนแรกเขียนKing of the Roadแทนที่ "ฉันไม่ได้มีเครือข่ายย่อยขนาดใหญ่" สำหรับ "ฉันไม่มีบุหรี่ ”

ฉันสูบบุหรี่ของฉันลงไปที่ก้น

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


เครื่องหมายทับต่อท้ายหลังจาก IP หมายถึงอะไร (เช่น 194.60.38.10/24)

เนื่องจากมาสก์เครือข่ายย่อย (ซึ่งแบ่ง "ของพวกเขา" จาก "ของเรา") มักจะเริ่มต้นด้วย1's และเนื่องจากเราเกลียดการรวมพลังของสองยิ่งกว่าที่เราเกลียดการหาพลังของสองในสถานที่แรกที่มีคนคิดค้น CIDR (เครื่องหมายสแลชหลัง IP)

194.60.38.10/24 หมายถึง "submask มี 24 อันจากนั้นส่วนที่เหลือเป็นศูนย์" ดังนั้น

■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ด้วย 8 + 8 + 8 บิตเป็นของ "พวกเขา" และ 8 บิต เป็นของ“ เรา”

กลับเพลงของกุ๊ยข้างบน

  • /31 เป็นนักแต่งเพลง
  • /24เป็นชนชั้นกลาง ( 255.255.255.0= ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□
  • /16 อุดมไปด้วย■■■■■■■■ | ■■■■■■■■ | □□□□□□□□ | □□□□□□□□
  • /8 อุดมไปด้วยสุดยอด■■■■■■■■ | □□□□□□□□ | □□□□□□□□ | □□□□□□□□
  • /1หรือ/0จะเป็น IANA หรืออะไรบางอย่าง





†ใช้bc -l; obase=10; 60เป็นตัวอย่าง


รูปภาพมีความสัมพันธ์กับคำตอบอย่างไร? มันเป็นเพียงการมุ่งเน้นที่คำตอบหรือไม่ :)
simhumileco

4

ในขณะที่ข้างต้นถูกต้อง (ขออภัย TL; DR) การคำนวณซับเน็ตยังคงทำให้ผู้ดูแลระบบเครือข่ายจำนวนมากเศร้าโศก จริงๆแล้วมีวิธีที่ง่ายมากในการทำการคำนวณ subnet คุณสามารถทำได้เกือบทั้งหมดในหัวของคุณและมีน้อยมากที่คุณต้องจดจำ สำหรับแอปพลิเคชันส่วนใหญ่ไม่จำเป็นต้องเข้าใจการแทนค่าแบบไบนารีแม้ว่ามันจะมีประโยชน์สำหรับการทำความเข้าใจที่สมบูรณ์ของซับเน็ต ที่นี่ฉันจะคุยเรื่อง IPv4 เท่านั้น IPv6 อยู่นอกขอบเขตของการสนทนานี้

จำสิ่งนี้ไว้:

มีสามสิ่งสำคัญที่ต้องจำ: เครือข่ายย่อยทั้งหมดขึ้นอยู่กับพลังของสองและมีหมายเลขคีย์ที่สอง: 256 และ 32 เพิ่มเติมในภายหลัง

อันดับแรกให้ดูที่ตารางที่มีกำลัง 2:

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

การคำนวณกำลังของ 2 เป็นเรื่องง่าย: การเพิ่มจำนวนเต็มในพลังงานจะเพิ่มผลลัพธ์เป็นสองเท่า 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16, และอื่น ๆ จำนวนที่อยู่ทั้งหมดในซับเน็ตต้องเป็นกำลัง 2เสมอ

เนื่องจากแต่ละอ็อกเท็ตของซับเน็ต IPv4 สูงถึง 256, 256จึงเป็นจำนวนที่สำคัญมากและเป็นพื้นฐานสำหรับส่วนที่เหลือของคณิตศาสตร์

การปรับขนาดเครือข่ายย่อย

เราจะเริ่มต้นด้วยคำถามง่าย ๆ : "จำนวนที่อยู่ในซับเน็ตถ้ามาสก์คือ 255.255.255.248?" เราจะเพิกเฉยสาม octets แรกก่อนเพื่อดูที่สุดท้าย นี่คือความง่าย: ลบ 248 จาก 256 256 ลบ 248 เท่ากับ 8 มี 8 ที่อยู่ (รวมถึงเครือข่ายและที่อยู่การออกอากาศ) สิ่งที่ตรงกันข้ามใช้งานได้: "ถ้าฉันต้องการมีซับเน็ตที่มีที่อยู่ 16 แห่งซับเน็ตมาสก์จะเป็นอย่างไร" 256 ลบ 16 เท่ากับ 240 ซับเน็ตมาสก์จะเป็น 255.255.255.248

ตอนนี้ถ้าเราต้องการขยายที่อยู่เกิน 256 ที่อยู่ (ในอดีตเป็น "คลาส C") มันจะซับซ้อนขึ้นเล็กน้อย: ถ้า octet สุดท้ายของเราคือ 0 และ octet ที่สามของเราคือ 240, (255.255.240.0) เราทำคณิตศาสตร์ในออคเต็ตที่สามและพบว่าจะมีที่อยู่ 16 แห่ง ดังนั้นเราจึงคูณ 16 ด้วย 256 (จำนวนที่อยู่ใน octet ล่าสุด) เพื่อรับ 4,096 หากทั้งสอง octet สุดท้ายเป็น 0 (เช่น 255.240.0.0) เราจะนำผลลัพธ์การลบออกจาก octet ที่สอง (เราจะบอกว่ามันคือ 16 อีกครั้ง) คูณ แต่ 256 (ที่อยู่ใน octet ที่สาม) คูณด้วย 256 (ที่อยู่ในออคเต็ตสุดท้าย) เพื่อรับ 1,048,576 ที่อยู่ ง่ายเหมือนที่! (ตกลงดังนั้นการย้อนกลับเป็นเรื่องยากขึ้นเล็กน้อยหากเราต้องการซับเน็ตที่มี 1,048,576 ที่อยู่เราจะต้องหารจำนวนนั้น 256 ครั้งเพื่อให้ได้จำนวนที่เราสามารถลบได้จาก 256)

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

เมื่อเรารู้วิธีคำนวณ subnet mask แล้วเราจะทราบได้อย่างไรว่าที่อยู่เครือข่ายคืออะไร ง่ายมาก: มันมักจะมีที่อยู่หลายแห่งในเครือข่ายย่อยของเรา ดังนั้นถ้าเรามีที่อยู่ 16 แห่งในซับเน็ตของเราที่อยู่เครือข่ายที่เป็นไปได้จะเป็น 0, 16, 32, 48, 64 และอื่น ๆ มากถึง 240 (โปรดทราบว่า 0 คือจำนวนทวีคูณที่ถูกต้องของตัวเลขใด ๆ 0 เท่ากับ 0)

และแน่นอนที่อยู่การออกอากาศจะเป็นที่อยู่สุดท้ายในขอบเขต ดังนั้นถ้าเรามี 16 ที่อยู่ในซับเน็ตของเราและเราเลือกที่อยู่เครือข่ายเป็น 10.3.54.64 ที่อยู่การออกอากาศจะเป็น (64 + 16-1 = 79) 10.3.54.79

สัญกรณ์ CIDR

แล้วสัญกรณ์ CIDR ล่ะ จะแปลสิ่งนั้นไปยังและจากซับเน็ตมาสก์สไตล์ IPv4 ได้อย่างไร?

จำพลังของเราสองคนได้ไหม? ตอนนี้เรามีหมายเลขคีย์อื่นที่ต้องจำนอกเหนือจาก 256: 32 จำไว้ว่าสัญกรณ์ CIDR อธิบายจำนวนบิตที่สำคัญในที่อยู่ IPv4 และมี 32 บิตในที่อยู่ IPv4, 8 สำหรับแต่ละ octet ดังนั้นถ้าเรามีซับเน็ตมาสก์ของ 255.255.255.240 นั่นคือ 16 ที่อยู่ ถ้าเราดูที่ตาราง "กำลัง 2" เราจะเห็นว่า 16 เป็นสองกำลังสี่ (2 ^ 4) ดังนั้นเราจึงลบจำนวนพลังงานนั้น - 4 - จาก 32 และได้ 28, สัญกรณ์ CIDR ของเราสำหรับซับเน็ตมาสก์ของ 255.255.255.240, สัญกรณ์ CIDR ของเราคือ / 28

และถ้าเราได้ CIDR ของ / 28 เราจะลบมันออก (28) จาก 32 เป็น 4 ยกกำลัง 2 (4) กำลัง (2 ^ 4) เพื่อรับ 16; จากนั้นลบที่ (16) จาก 256 เพื่อรับ 240; หรือ 255.255.255.240


ขอบคุณ แต่ฉันยังคงคลุมเครือเกี่ยวกับวิธีที่พีซีใช้ซับเน็ตมาสก์ เมื่อแอปพลิเคชันบนพีซีต้องการส่งข้อมูลมันจะห่อหุ้มมันไว้ในแพ็คเก็ต ซับเน็ตมาสก์กำหนดวิธีการห่อหุ้มแพ็กเก็ตหรือไม่? ตัวอย่างเช่นหากพีซีต้องการส่งแพ็คเก็ตบนเครือข่ายท้องถิ่นก็จะใช้เฟรมอีเธอร์เน็ตen.wikipedia.org/wiki/Ethernet_frameและถ้ามันต้องการนอกเครือข่ายก็จะใช้แพ็คเก็ต tcp en.wikipedia.org/wiki / … ?
aquagremlin

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

สิ่งนี้เกิดขึ้นในเลเยอร์ด้านล่าง TCP อุปกรณ์แต่ละชิ้นมีที่อยู่ฮาร์ดแวร์ (MAC) ที่เชื่อมโยงกับที่อยู่ IP ในตาราง ARP ของอุปกรณ์ สิ่งนี้ถูกสร้างขึ้นผ่านการค้นพบ เมื่อแพ็กเก็ตถูกกำหนดไว้สำหรับโฮสต์บนเครือข่ายท้องถิ่นมันจะถูกแท็กด้วย MAC สำหรับอุปกรณ์ปลายทาง เมื่อแพ็กเก็ตถูกกำหนดไว้สำหรับรีโมตโฮสต์นั้นจะถูกแท็กด้วย MAC สำหรับเราเตอร์ในเครือข่ายท้องถิ่น เมื่อมันผ่านเราเตอร์ MAC จะถูกปล้นและติดแท็กด้วย MAC ของเราเตอร์ hop ถัดไป ซับเน็ตเพียงกำหนดขอบเขตของเครือข่ายท้องถิ่น (นั่นเป็นเวอร์ชั่นที่ง่าย <500 ตัวอักษร)
Jonathan J

2

ฉันก็รู้สึกว่าควรจะมีการพูดถึง NATs อย่างน้อยที่สุดเพราะมันถูกใช้อย่างแพร่หลายในเครือข่ายสมัยใหม่แทน Subnets เพราะ IPv4 address อ่อนเพลียเหนือสิ่งอื่นใด (เมื่อฉันเรียนรู้เกี่ยวกับเครือข่ายย่อยเป็นครั้งแรกฉันรู้สึกสับสนมากเกี่ยวกับวิธีการเชื่อมโยงเครือข่ายย่อยกับเครือข่ายที่สร้างโดยเราเตอร์ WiFi)

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

การแปลที่อยู่ที่แท้จริงจะกระทำอย่างโปร่งใสในโหนดที่รองรับ NAT ซึ่งปกติจะเป็นเราเตอร์ มันอาจมีหลายรูปแบบ, Full Cone, จำกัด ที่อยู่, จำกัด พอร์ต ฯลฯ หรือส่วนผสมของสิ่งเหล่านี้ซึ่งกำหนดวิธีการเชื่อมต่อข้ามโหนดอาจเริ่มต้น

รายละเอียดทั้งหมดสามารถพบได้ในWikipediaแต่ยกตัวอย่างเช่นเราเตอร์ไร้สายที่มี 2 อุปกรณ์เชื่อมต่ออยู่ ประชาชน IP ของเราเตอร์10.9.20.21/24และ IP ของอุปกรณ์ (IPS เอกชน) เป็นA: 192.168.0.2, และของเราเตอร์คือB: 192.168.0.3 R: 192.168.0.1ดังนั้นหากAต้องการเชื่อมต่อกับเซิร์ฟเวอร์S: 10.9.24.5/24(ซึ่งจริงๆแล้วอยู่บนเครือข่ายย่อยอื่นเราเตอร์ที่นี่):

  1. A ส่งแพ็คเก็ต IP ไปR(ซึ่งจะเป็นเกตเวย์เริ่มต้น) กับ IP ต้นทาง192.168.0.2พอร์ต src (พูด) 14567และ IP ปลายทาง: 10.9.24.5(แม้ว่าพอร์ตจะเป็นส่วนหนึ่งของส่วนหัว TCP) จริง ๆ
  2. เราเตอร์ (ซึ่งสามารถใช้ NAT ได้) แมปพอร์ต14567ไปยังอุปกรณ์Aและเปลี่ยนแหล่งที่มาบนแพ็คเก็ต IP เป็น10.9.20.21(ซึ่งเป็น IP สาธารณะของเราเตอร์) นี้เป็นในทางตรงกันข้ามกับ subnetting อธิบายไว้ข้างต้นที่ IP แพ็กเก็ตเป็นจริงไม่เคยเปลี่ยน
  3. Sรับชุดแพ็กเก็ต TCP (พร้อม src IP 10.9.20.21:, src Port:) 14567และส่งแพ็กเก็ตการตอบกลับด้วยค่าเหล่านั้นในฟิลด์ปลายทาง
  4. Rตรวจสอบพอร์ตปลายทางซึ่งเป็นและส่งต่อแพ็คเก็ตที่จะ 14567A
  5. A ได้รับแพ็คเก็ตการตอบสนอง

ในสถานการณ์ข้างต้นหากBพยายามที่จะเปิดการเชื่อมต่อพอร์ตแหล่งเดียวกัน (ก14567) ก็จะได้รับการแมปไปยังพอร์ตที่แตกต่างกันโดยR(และพอร์ตในแพ็คเก็ตที่ส่งออกมีการเปลี่ยนแปลง) Sก่อนที่จะส่งไปยัง นั่นคือจะมีการแปลพอร์ตแทนที่จะเป็นแค่ IP

สองสิ่งที่ควรทราบที่นี่:

  1. เนื่องจากการแปลที่อยู่นี้มักจะไม่สามารถเริ่มต้นการเชื่อมต่อกับอุปกรณ์ในเครือข่ายส่วนตัวโดยไม่ต้องใช้เทคนิคพิเศษบางอย่าง
  2. ข้อ จำกัด ในการเชื่อมต่อ TCP ทั้งหมดจากอุปกรณ์เดียวกันไปยังเซิร์ฟเวอร์ (65536 = 2 ^ 16) ตอนนี้ใช้ร่วมกับอุปกรณ์ทั้งหมดหลัง NAT ในรูปแบบ NAT ที่ใช้ข้างต้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.