เหตุใด IPv4 จึงอยู่ 32 บิต


33

ดวงจันทร์หลายที่ผ่านมาเมื่อฉันเป็นเพียงกระจ้อยร่อย เด็กเริ่มอาชีพของฉันฉันมีการสัมภาษณ์งานสำหรับนักพัฒนาที่มีบทบาทในระดับต่ำ ในเวลานั้นเพิ่งได้เรียนรู้วิธีการใช้ CIDR ฉันมีความกระตือรือร้นที่จะอวดความรู้ของฉัน

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

เหตุใด IPv4 จึงอยู่ 32 บิต

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

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

ด้วยเหตุผลบางอย่างที่การสนทนาเพิ่งกลับมาหาฉันและตอนนี้เมื่อฉันใคร่ครวญมันก็ดูเหมือนจะไม่น่าเชื่อถือทั้งหมด:

  1. ภายใต้รูปแบบการกำหนดแอดเดรสดั้งเดิมซึ่งประกอบด้วยเครือข่ายขนาดคงที่และฟิลด์โฮสต์จึงไม่น่าเป็นไปได้ที่นักพัฒนาจะต้องการกำหนดการต่อข้อมูลสองฟิลด์ให้กับตัวแปรเดียว จริง ๆ แล้วในทางปฏิบัติ); และ

  2. ในช่วงเวลาที่ทำงานบน TCP / IP เริ่มต้น C ไม่ได้เป็นมาตรฐานหรือในความเป็นจริง "lingua franca" ของการพัฒนาซอฟต์แวร์ระดับต่ำที่เป็นมาในปัจจุบัน

ข้อเสนอแนะของผู้สัมภาษณ์จริงหรือไม่? ถ้าไม่ได้สิ่งที่เป็นเหตุผลที่แท้จริงที่ออกแบบโปรโตคอลเลือก 32 บิตอยู่?


3
เหตุผลเดียวกันว่าทำไม640 kB ought to be enough for anybody.ไม่มีใครคาดหวังว่าเครื่องปิ้งขนมปังและตู้เย็นจะสามารถใช้อินเทอร์เน็ตได้

1
@afwe: หืม คำถามไม่ได้เป็นเพราะเหตุใดพวกเขาจึงไม่เลือกหมายเลขที่ใหญ่กว่าเพื่อเริ่มต้นด้วย อาคาทำไมเพียง 32- บิต (ซึ่งเป็นจุดที่มีคำตอบที่ดีเลิศ \ @Jens ') แต่สิ่งที่พิเศษมากเกี่ยวกับ 32-bits (แทนที่จะพูด 16-bits หรือ 24-bits หรือ 48-bits)?
eggyal

@Downvoter: สนใจที่จะแสดงความคิดเห็น?
eggyal

คำตอบ:


23

นี่คือลิงก์ไปยังHangout กับ Vint Cerf (เมษายน 2014) ซึ่งเขาอธิบายว่าเขาคิดอย่างไรว่าอินเทอร์เน็ตนี้ควรจะเป็นการทดสอบเท่านั้น:

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

จากนั้นเราพูดว่า " มีกี่ประเทศ? " (สองเครือข่ายต่อประเทศเครือข่ายกี่แห่ง) และเราไม่มี Google ให้ถามดังนั้นเราเดาที่ 128และนั่นจะเป็น 2 คูณ 128 เป็น 256 เครือข่าย (นั่นคือ 8 บิต) และจากนั้นเราพูดว่า " มีคอมพิวเตอร์กี่เครื่องในแต่ละเครือข่าย " และเราพูดว่า " ประมาณ 16 ล้านเครื่อง " (นั่นคืออีก 24 บิต) ดังนั้นเราจึงมีที่อยู่ 32 บิตซึ่งอนุญาตให้ยุติได้ 4.3 พันล้าน - ซึ่งฉัน คิดว่าในปี 1974/3 ก็เพียงพอที่จะทำการทดสอบ!

ฉันโพสต์สิ่งนี้ไว้เป็นความคิดเห็นต่อคำตอบของ Jens Link แล้ว แต่ฉันรู้สึกว่ามันเปล่งปลั่งมากกว่าเดิม


มากกว่า "บอกอีกหน่อย" ผมคิดว่านี่ตอบคำถามจริงโดยตรงมากกว่าคำตอบของ Jens
eggyal

34

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

ในการประชุม Google IPv6 Conference 2008 เขาได้เป็นเจ้าภาพการอภิปรายหัวข้ออินเทอร์เน็ต IPv6 จะมีลักษณะอย่างไร ระหว่างที่เขาเล่าให้ฟัง :

การตัดสินใจที่จะวางที่อยู่แบบ 32- บิตเป็นผลมาจากการสู้รบหนึ่งปีในหมู่วิศวกรจำนวนมากที่ไม่สามารถตัดสินใจได้ว่าจะเป็น 32, 128 หรือความยาวแปรผัน และหลังจากหนึ่งปีของการต่อสู้ฉันพูดว่า - ตอนนี้ฉันอยู่ที่ ARPA ฉันกำลังใช้งานโปรแกรมฉันจ่ายเงินให้กับสิ่งนี้และใช้ดอลลาร์ภาษีอเมริกา - และฉันต้องการความก้าวหน้าบางอย่างเพราะเราไม่รู้ว่านี่เป็น กำลังไปทำงาน. ดังนั้นผมจึงบอกว่า 32 บิตมันเพียงพอสำหรับการทดลองมันคือการยุติ 4.3 พันล้าน - แม้กระทั่งกระทรวงกลาโหมก็ไม่ต้องการอะไร 4.3 พันล้านและมันก็ไม่สามารถที่จะซื้ออุปกรณ์ 4.3 พันล้านเครื่องเพื่อทำการทดสอบต่อไป ดังนั้นในเวลาที่ฉันคิดว่าเรากำลังทำการทดลองเพื่อพิสูจน์เทคโนโลยีและถ้ามันทำงานเราจะมีโอกาสทำเวอร์ชันการผลิตของมัน เอ่อ - [เสียงหัวเราะ] - มันเพิ่งจะรอด!

Transcriptโดยปีเตอร์อีเมอเรย์


7
อืมข้าช่างโง่เหลือเกิน! มีดโกนของอ็อกคัมถูกโจมตีอีกครั้ง อย่างน้อยคุณก็ให้ความพึงพอใจแก่ฉันในการรู้ว่าผู้สัมภาษณ์ผิด
eggyal

2
@ user5025: ใช่เป็นไปได้ (ในกรณีทั่วไป) แต่ถ้า Vint บอกว่าสิ่งเหล่านี้เป็นเหตุผลของเขาในการเลือก 32 บิตสำหรับ IPv4 มันก็ยากที่จะเถียงว่าเขามีคนอื่นด้วย
eggyal

5
@ user5025: ตกลงนั่นเป็นประเด็นที่ยุติธรรม จริง ๆ แล้วเขากล่าวว่าวิศวกรกำลังทะเลาะกันเรื่องความยาวที่ควรจะเป็นด้วยการสนับสนุน 32- บิต ดังนั้นฉันคิดว่าคำถามคือแรงจูงใจของพวกเขาสำหรับการสนับสนุน 32- บิตคืออะไรทำให้ Vint ยอมรับได้?
eggyal

2
@eggyal: จุดของฉันไม่ได้เป็นจำนวนเต็ม 32 บิตเป็น "แน่นอน" เป็นปัจจัยกระตุ้น แต่แทนที่จะแนะนำว่าฉันจะพิจารณามันเป็นไปได้สูงที่วิศวกรพอจะแนะนำขนาดนั้นอาจถือว่าเป็นปัจจัยที่ขาดหลักฐาน ตรงกันข้ามฉันไม่คิดว่ามันจะถูกตัดออกเป็นปัจจัยในการเลือกในที่สุด
supercat

2
@eggyal: คุณถามสิ่งที่อาจมีแรงบันดาลใจให้วิศวกรเลือก 32 บิต ฉันตั้งใจจะตอบคำถามนั้น ฉันได้เขียน TCP / IP สแต็คบน "bare metal" และต้องจัดการกับที่อยู่ในโอกาสต่าง ๆ แต่ไม่เคยสนใจที่จะแยกพวกเขา - เฉพาะในการพิจารณาว่าพวกเขาจับคู่ [กองนี้เฉพาะจัดการการเชื่อมต่อ TCP / IP ขาเข้าเท่านั้น ดังนั้นจึงต้องรับมือกับ ARP แต่ไม่ใช่เกตเวย์]
supercat

0

พระวจนะของขนาด พวกเขากำลังเขียนซอฟต์แวร์ไม่ใช่การออกแบบฮาร์ดแวร์คอมพิวเตอร์ - แม้ว่าฉันแน่ใจว่าพวกเขามีประสิทธิภาพและความสะดวกในการพกพา ในเวลานั้น 32 บิตเป็นwordที่longwordหรือintหรือlongIntหรืออะไรก็ตาม ดูโปรแกรม Word ขนาด Choice

พวกเขาเขียนซอฟต์แวร์นี้ "ในช่วงทศวรรษแรกของสถาปัตยกรรม 32- บิต (ช่วงทศวรรษ 1960 ถึง 1980)" - วิกิพีเดีย


3
ถ้าคุณไม่แนะนำให้สถาปนิกของ TCP / IP มีสถาปัตยกรรมของเครื่องโดยเฉพาะฉันไม่แน่ใจว่าคุณจะไปกับเรื่องนี้ ... คุณมีหลักฐานว่าพวกเขากำลังใช้ / ออกแบบสำหรับ 32- บิตสถาปัตยกรรมหรือแม้กระทั่งว่าขนาดของคำนั้นคำนึงถึงความยาวที่เลือกสำหรับที่อยู่เครือข่ายหรือไม่
eggyal

@eggyal: ภาษาสำหรับเครื่อง 8 บิตและ 16 บิตมักจะรวมชนิดข้อมูลจำนวนเต็ม 32 บิต แต่มันก็เป็นเรื่องธรรมดาที่น้อยสำหรับภาษาบนเครื่อง 32 บิตที่จะมีชนิดข้อมูลจำนวนเต็มหลายคำ อย่างน้อยที่ระดับซอร์สโค้ดการทำงานกับค่า 32- บิตนั้นสะดวกสบายเหมือนกับการทำงานกับค่า 16 บิตและสะดวกกว่าการทำงานกับประเภทที่มีขนาดใหญ่กว่าอย่างแน่นอน นอกจากนี้สำหรับอุปกรณ์ที่มีความต้องการด้านการสื่อสารที่ จำกัด การกำหนดที่อยู่แบบ 32 บิตอาจทำได้ดีหากพวกเขาสื่อสารผ่านเกตเวย์ที่มีความซับซ้อนมากขึ้น
supercat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.