subnets เป็น 1s ที่ต่อเนื่องกันหรือไม่ [ซ้ำ]


25

255.255.255.0ผมเข้าใจขั้นพื้นฐานที่อยู่เบื้องหลังหน้ากากเครือข่ายย่อยเช่น แต่ตัวอย่าง subnet ทั้งหมดที่ฉันได้เห็นนั้นเป็น 1s (HI bits) ที่ต่อเนื่องกัน (จากซ้ายไปขวา) ตัวอย่างเช่น255.255.0.0( /16) แปลเป็นออคเต็ตต่อไปนี้:

11111111 . 11111111 . 00000000 . 00000000

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

11111111 . 00010001 . 11111111 . 00000000
  • สิ่งนี้จะเกิดขึ้นไหม หรือเป็นไปไม่ได้ที่ซับเน็ตจะมีอยู่โดยไม่มี 1s ต่อเนื่องกัน? ถ้าเป็นเช่นนั้นทำไม
  • มิฉะนั้นถ้าเป็นไปได้ที่จะทำเช่นนี้ทำไมคุณ (ตัวอย่างที่เป็นรูปธรรม)?

@MSalters เพื่อให้คุณรู้ว่าตอนนี้ความคิดเห็นอัตโนมัติได้ถูกเปลี่ยนเป็น "ซ้ำกันได้ ... " ดังนั้นคุณไม่จำเป็นต้องใส่ความคิดเห็นด้วยตนเองอีกต่อไป ;-)
Chris Jester-Young

คำตอบสั้น ๆ : ใช่คุณพูดถูก
Octopus

คำตอบ:


18

ส่วน 3.1 ในRFCแสดงมาสก์ที่อนุญาตในการกำหนดเส้นทางระหว่างโดเมนแบบไร้คลาส บิตต้องต่อเนื่องกันเพื่อให้เราต์ทำงานได้อย่างถูกต้อง

เมื่อคิดอย่างมีเหตุผลมันคงไม่มีเหตุผลที่จะมีหน้ากากเครือข่ายแบบแปลก ๆ


28

ใช่วิธีที่ง่ายในการคิดเกี่ยวกับมันคือซับเน็ตมาสก์มักจะเป็น 1s เมื่อเริ่มต้น หาก subnet-size-indicator ไม่มี 1s ในตอนเริ่มต้นของการแสดงไบนารีฉันจะบอกว่าตัวบ่งชี้ subnet-size-ไม่ใช่“ subnet mask” ที่เหมาะสมโดยใช้มาตรฐานที่ทันสมัย

RFC 1219ระบุว่า RFC 950 ก่อนหน้านี้อนุญาตบิตที่ไม่ต่อเนื่องกัน อันที่จริงRFC 950 หน้า 15 (ส่วนที่ 3) มีตัวอย่างที่ชัดเจนว่า“ แสดง subnet บิตที่ไม่ต่อเนื่องกัน” อย่างไรก็ตามไม่มีวิธีการแปลง subnets ดังกล่าวเป็นสัญกรณ์ CIDR สัญกรณ์สไตล์ CIDR คือสิ่งที่ IPv6 ใช้ (ที่ อย่างน้อยตั้งแต่RFC 1884 หน้า 7ประโยคแรกของส่วนที่ 2.4) ดังนั้นบิตที่ไม่ต่อเนื่องจึงไม่รองรับเครือข่าย IPv6 อย่างกว้างขวางวิธีของRFC 1219ระบุว่า“ บิตเครือข่าย (หน้ากาก = 1) ได้รับมอบหมายจากบิตที่สำคัญที่สุด ไปทางน้อยที่สุด ". ( RFC 4632 ส่วน 3.1 ที่เอ่ยถึงโดยคำตอบของ Sami ชี้ไปที่มาตรฐานอย่างเป็นทางการที่จะกล่าวถึงสัญกรณ์ CIDR)

RFC 1878 หน้า 2แสดงให้เห็นว่ามาตรฐาน“มาสก์” สัญกรณ์สำหรับทุกเครือข่ายย่อย IPv4 /0ยกเว้น

อย่างไรก็ตามฉันจะอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับคำตอบของ Sami โดยดูที่“ ทำไม” (พร้อมตัวอย่างที่เป็นรูปธรรมตามที่คำถามถาม) ...

อุปกรณ์ Cisco ระดับมืออาชีพบางอย่างรองรับสิ่งที่เรียกว่า "หน้ากากตัวแทน" ซึ่งสลับบิต 00000000.00000000.00000000.11111111ดังนั้นเครือข่ายย่อยที่ปกติอาจจะเป็นตัวแทนของสิ่งที่เรียกว่า

ด้วยมาสก์ตัวแทนของซิสโก้จึงไม่มีกฎที่ศูนย์ทั้งหมดจะต้องดำเนินการก่อน 00000000.00000000.00000000.11111110ดังนั้นคุณจึงสามารถใช้

นั่นจะเป็นการสร้างกลุ่มที่มีที่อยู่ IP ทุกเลขคู่

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

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

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

ฉันเดาว่าในที่สุด Cisco ก็เห็นพ้องต้องกันว่าไม่มีจุดใดที่มาสก์ซับเน็ตที่ไม่ใช่แบบดั้งเดิมเช่นนั้นเพราะพวกเขาลดการสนับสนุนสำหรับ "สัญลักษณ์ตัวแทน" ไฟร์วอลล์เก่า Pix สนับสนุน "สัญลักษณ์แทน" แต่หน่วย ASA รุ่นใหม่ใช้มาตรฐาน "มาสก์เครือข่ายย่อย" แทน .

ฉันจะไม่พยายามสร้างเครือข่ายที่มี "subnet bits" ที่ไม่ต่อเนื่องกันในรูปแบบเนื่องจากซอฟต์แวร์จำนวนมากจะเป็นไปตามแนวโน้ม / มาตรฐานที่ใหม่กว่าและปฏิเสธการออกแบบเครือข่ายดังกล่าว แม้ว่าฉันจะใช้ซอฟต์แวร์รุ่นเก่า แต่ฉันอาจต้องการให้เครือข่ายของฉันสามารถแก้ไขได้ง่ายเพื่อให้สามารถใช้ซอฟต์แวร์รุ่นใหม่โดยไม่จำเป็นต้องออกแบบเครือข่ายใหม่ ดังนั้น“ บิตซับเน็ต” ที่ต่อเนื่องกันเป็นวิธีเดียวที่จะไป

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


+1 - ครั้งเดียวที่ฉันเห็นสัญลักษณ์ตัวแทนที่ใช้โดยไม่มีทั้งหมด 1 อันคือรูปแบบที่ป้อนไม่ถูกต้อง
Mark Henderson

2

RFC 950กล่าวในบทที่ 2.2:

 To support subnets, it is necessary to store one more 32-bit
  quantity, called my_ip_mask.  This is a bit-mask with bits set in
  the fields corresponding to the IP network number, and additional
  bits set corresponding to the subnet number field.

 The code then becomes:

   IF bitwise_and(dg.ip_dest, my_ip_mask)
                               = bitwise_and(my_ip_addr, my_ip_mask)
         THEN
             send_dg_locally(dg, dg.ip_dest)
         ELSE
             send_dg_locally(dg,
                    gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

ดังนั้นข้อเสนอจึงเกี่ยวกับการใช้งานบิตอย่างง่ายซึ่งไม่สนใจบิตที่ต่อเนื่องกัน

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

มันชัดเจนยิ่งขึ้นในบทที่ 3:

และในเครือข่ายมีการใช้งานฟิลด์เครือข่ายย่อย 3 บิต (01011000) นั่นคือมาสก์ที่อยู่คือ 255.255.255.88

อย่างไรก็ตาม RFC เหล่านั้นดูเหมือนจะล้าสมัยแล้ว ตัวอย่างเช่นใน Windows 7 SP1 จะไม่สามารถตั้งค่า subnet mask ดังกล่าวได้:

ซับเน็ตมาสก์ที่ต่อเนื่องกันจำเป็นสำหรับ Windows 7

แม้แต่ใน Windows XP SP2 สิ่งนี้ไม่สามารถทำได้อีกต่อไป:

Subnet mask Windows XP SP2

อย่างไรก็ตาม Windows 98 clone ReactOS อนุญาตให้ตั้งค่า netmask "ที่แปลก":

ReactOS subnet mask


1

ฉันเห็นด้วยกับคำตอบของ @Sami Kuhmonen:

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

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

ฉันได้ทดสอบเมื่อหลายปีก่อนใน Win 2000 มันได้ผล คอมพิวเตอร์ทั้งสองเครื่องมีหน้ากาก 255.160.0.0 พวกเขาอยู่ใน LAN โดยไม่มีเราเตอร์ดังนั้นฉันจึงไม่สามารถบอกเกี่ยวกับพฤติกรรมของเราเตอร์ (โดยปกติคุณสามารถตั้งค่าหน้ากากของเราเตอร์ได้เฉพาะในเว็บอินเตอร์เฟสซึ่งจะปฏิเสธ)
คุณไม่สามารถป้อน subnet mask ที่ 'ไม่ถูกต้อง' ในฟิลด์ที่เกี่ยวข้องของการตั้งค่าเครือข่าย GUI ปฏิเสธที่จะรับมัน แต่คุณสามารถโกงได้โดยเปลี่ยนมันในรีจิสทรีโดยตรง หลังจากนั้นรีบูตหรือปิดการใช้งาน + เปิดใช้งาน NIC เพื่อให้การเปลี่ยนแปลงมีสถานะใช้งาน
วัตถุประสงค์ของการทั้งหมด: uhm อาจไม่มี


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

2
นานเกินไปสำหรับความคิดเห็น ... และฉันไม่คิดว่ามันจะถูกทำเครื่องหมายเป็นคำตอบ
Tobias Knauss

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

"ทำงานในการติดตั้งครั้งเดียว" ไม่ใช่คำตอบที่ดี และมันไม่ได้เป็นเพียง "ทำงานบนระบบปฏิบัติการเดียว" ไม่คุณเห็นได้ชัดว่าทดสอบพีซีหนึ่งเครื่องด้วยเครือข่ายเดียว นั่นหมายความว่าคุณยังไม่ได้ตรวจสอบว่ารหัสเส้นทาง subnet ใน Windows 2000 ใช้งานได้จริงหรือไม่และนั่นเป็นสิ่งที่จำเป็นต้องใช้ ID เครือข่าย คุณสามารถกำหนดเส้นทางระหว่าง255.160.0.0เครือข่ายที่ไม่ติดกันสองเครือข่ายได้หรือไม่
MSalters

@MSalters ทำงานในการนำไปใช้งานอย่างใดอย่างหนึ่งยังคงหมายความว่ามันทำงานได้ ฉันไม่ได้เรียกร้องให้พูดถึงการตั้งค่าระบบปฏิบัติการที่เป็นไปได้ทั้งหมด นอกจากนี้คุณคิดอย่างไรกับแพ็กเก็ตจากพีซีหนึ่งไปยังอีกพีซีหนึ่ง? คอมพิวเตอร์ต้องรู้เส้นทาง ดังนั้นจึงต้องคำนวณว่าคอมพิวเตอร์เป้าหมายอยู่ในเครือข่ายย่อยเดียวกัน (ส่งแพ็คเก็ตโดยตรง) หรือห่างไกล (สอบถามเกตเวย์ที่กำหนดค่าสำหรับเส้นทาง) // ไม่ฉันไม่คิดว่าฉันจะสามารถกำหนดเส้นทางได้เนื่องจากมาสก์เครือข่ายย่อยเหล่านี้ไม่ได้ถูกใช้งาน ฉันแสดงให้เห็นว่ามันใช้งานได้ แต่ไม่มีซับเน็ตแตกต่างกัน บางทีมันอาจใช้ได้เช่นกันใครจะรู้ ...
Tobias Knauss
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.