Tại sao địa chỉ IPv4 là 32 bit?


33

Nhiều vệ tinh trước đây, khi tôi chỉ là một wee con nít bắt đầu sự nghiệp của tôi, tôi đã có một cuộc phỏng vấn việc làm cho một vai trò nhà phát triển ở mức độ thấp. Vào thời điểm đó chỉ cần học cách CIDR được triển khai, tôi rất muốn thể hiện kiến ​​thức của mình.

Đáng buồn thay, chiến thuật đó đã không làm việc quá tốt cho tôi. Tôi nhớ rằng đã hoàn toàn bị cuốn hút bởi câu hỏi đầu tiên được hỏi (và, sau đó xù lông, tất cả đã xuống dốc). Câu hỏi là:

Tại sao địa chỉ IPv4 là 32 bit?

Tôi sẵn sàng thừa nhận rằng tôi không biết câu trả lời, nhưng tôi đã biết rằng việc thiết kế giao thức gốc chia không gian địa chỉ vào một số mạng 8-bit và 24-bit máy chủ định danh-vì vậy tôi đã cố gắng để hợp lý hóa nó với lý do các nhà thiết kế giao thức đã tưởng tượng ra Internet của một vài mạng (rốt cuộc, nó ban đầu được dự định liên kết với một số mạng cụ thể ), mỗi mạng bao gồm nhiều máy chủ và, để đơn giản hóa việc lập trình, giữ mọi thứ được căn chỉnh theo ranh giới byte.

Tôi nhớ lại rằng người phỏng vấn không hài lòng với câu trả lời của tôi và gợi ý cho tôi rằng lý do thực sự là nó được đảm bảo phù hợp với một chữ long intC, vì vậy đơn giản hóa các chi tiết thực hiện. Lúc còn trẻ và xanh, tôi chấp nhận rằng đó là một câu trả lời hợp lý và (trước ngày hôm nay) đã không nghĩ gì thêm về nó.

Vì một số lý do mà cuộc trò chuyện vừa trở lại với tôi và, bây giờ khi tôi suy nghĩ về nó, nó dường như không hoàn toàn hợp lý:

  1. Theo sơ đồ địa chỉ ban đầu bao gồm các trường máy chủ và mạng có kích thước cố định, không có khả năng nhà phát triển muốn gán phép nối hai trường cho một biến duy nhất (Tôi không có quyền truy cập vào bất kỳ triển khai IP sớm nào để xác minh xem chúng là gì thực tế đã làm trong thực tế); và

  2. Tại thời điểm đó công trình trên giao thức TCP / IP bắt đầu, C được không phải tiêu chuẩn hóa cũng không phải là de facto "lingua franca" của phát triển phần mềm ở mức độ thấp mà nó đã trở thành ngày hôm nay.

Là đề nghị của người phỏng vấn thực sự được thành lập trên thực tế? Nếu không, những gì những lý do thực sự mà các nhà thiết kế giao thức chọn 32-bit địa chỉ?


3
Cùng một lý do tại sao 640 kB ought to be enough for anybody.Không ai mong muốn lò nướng bánh và tủ lạnh có quyền truy cập internet.

1
@afwe: Hừm. Câu hỏi không phải là tại sao họ không chọn một số lớn hơn để bắt đầu? aka tại sao chỉ có 32 bit? (đó thực sự là điểm mà địa chỉ câu trả lời tuyệt vời của \ @Jens), nhưng hơn nữa điều gì đặc biệt về 32 bit (chứ không phải là, 16 bit hoặc 24 bit hoặc 48 bit)?
eggyal

@Downvoter: Muốn bình luận?
eggyal

Câu trả lời:


23

Đây là một liên kết đến Hangout với Vint Cerf (tháng 4 năm 2014), nơi anh giải thích cách anh nghĩ rằng internet này chỉ được coi là một thử nghiệm:

Khi chúng tôi đang nghĩ về Internet (nghĩ tốt, đây sẽ là một số mạng tùy ý được kết nối với nhau - chúng tôi không biết có bao nhiêu và chúng tôi không biết chúng sẽ được kết nối như thế nào), nhưng chúng tôi có mạng lưới quy mô quốc gia nghĩ rằng " tốt, có thể sẽ có hai quốc gia " (vì nó rất tốn kém: tại thời điểm này Ethernet đã được phát minh nhưng nó không sinh sôi nảy nở ở khắp mọi nơi, như đã làm một vài năm sau đó).

Sau đó, chúng tôi đã nói "có bao nhiêu quốc gia? " (Hai mạng mỗi quốc gia, bao nhiêu mạng?) Và chúng tôi không có Google để hỏi, vì vậy chúng tôi đã đoán ở 128 và đó sẽ là 2 lần 128 là 256 mạng (đó là 8 mạng bit) và sau đó chúng tôi đã nói " sẽ có bao nhiêu máy tính trên mỗi mạng? " và chúng tôi đã nói " khoảng 16 triệu? " (đó là 24 bit khác) vì vậy chúng tôi có một địa chỉ 32 bit cho phép 4,3 tỷ chấm dứt - mà tôi nghĩ rằng vào năm 1974/3 là đủ để làm thí nghiệm!

Tôi đã đăng bài này dưới dạng bình luận cho câu trả lời của Jens Link, nhưng tôi cảm thấy nó rõ ràng hơn một chút.


Hơn cả "bề ngoài hơn một chút", tôi nghĩ rằng điều này trả lời câu hỏi thực tế trực tiếp hơn câu trả lời của Jens.
eggyal

34

Câu trả lời dễ dàng: vì Vint Cerf đã quyết định như vậy . Anh ta nghĩ rằng anh ta đang thiết kế một giao thức thử nghiệm và coi 32 bit là quá đủ cho mục đích đó; ông không mong đợi IPv4 sẽ được sử dụng trong các hệ thống sản xuất và do đó, không có suy nghĩ nào lớn hơn về kích thước của không gian địa chỉ.

Tại Hội nghị Google IPv6 2008, ông đã tổ chức một cuộc thảo luận với tiêu đề Internet IPv6 sẽ trông như thế nào? Trong thời gian đó, anh kể lại :

Quyết định đặt một không gian địa chỉ 32 bit là kết quả của một trận chiến một năm giữa một nhóm các kỹ sư không thể quyết định được khoảng 32, 128 hoặc chiều dài thay đổi. Và sau một năm chiến đấu tôi đã nói - Bây giờ tôi đang ở ARPA, tôi đang chạy chương trình, tôi đang trả tiền cho công cụ này và sử dụng tiền thuế của Mỹ - và tôi muốn có một số tiến bộ vì chúng tôi không biết liệu đây có phải là đi làm. Vì vậy, tôi đã nói 32 bit, nó là đủ cho một thử nghiệm, đó là 4,3 tỷ chấm dứt - ngay cả bộ quốc phòng cũng không cần 4,3 tỷ bất cứ thứ gì và không thể đủ khả năng mua 4,3 tỷ thiết bị cạnh để làm thử nghiệm. Vì vậy, tại thời điểm đó, tôi nghĩ rằng chúng tôi đang thực hiện một thử nghiệm để chứng minh công nghệ và nếu nó hoạt động, chúng tôi sẽ có cơ hội thực hiện phiên bản sản xuất của nó. Chà - [cười] - nó vừa thoát!

Bảng điểm của Peter E. Murray .


7
Agh, tôi thật ngốc nghếch làm sao! Dao cạo của Occam lại tấn công. Ít nhất bạn đã cho tôi sự hài lòng tự mãn khi biết rằng người phỏng vấn đã sai.
eggyal

2
@ user5025: Có, có thể (trong trường hợp chung). Nhưng nếu Vint nói rằng đó là những lý do khiến anh ta chọn 32 bit cho IPv4, thì thật khó để tranh luận rằng anh ta cũng có những người khác.
eggyal

5
@ user5025: Được rồi, đó là một điểm công bằng. Thật vậy, ông đề cập rằng các kỹ sư đã tranh cãi về độ dài nên là bao nhiêu, với một số người ủng hộ 32-bit. Vì vậy, tôi cho rằng câu hỏi là động lực của họ để ủng hộ 32-bit (nghĩa là điều gì đã khiến Vint chấp nhận)?
eggyal

2
@eggyal: Quan điểm của tôi không phải là số nguyên 32 bit "chắc chắn" là một yếu tố thúc đẩy, mà là để gợi ý rằng tôi sẽ xem xét rất hợp lý rằng đủ các kỹ sư cho rằng kích thước đó có thể coi đó là một yếu tố, không có bằng chứng cho ngược lại, tôi không nghĩ rằng nó có thể được loại trừ như là một yếu tố trong sự lựa chọn cuối cùng.
supercat

2
@eggyal: Bạn đã hỏi những gì có thể đã thúc đẩy các kỹ sư chọn 32 bit. Ý định của tôi là trả lời câu hỏi cụ thể đó. Tôi đã viết một ngăn xếp TCP / IP trên "kim loại trần" và phải xử lý các địa chỉ trong nhiều trường hợp nhưng không bao giờ quan tâm đến việc phân tích chúng - chỉ trong việc xác định xem chúng có khớp với [ngăn xếp cụ thể này chỉ xử lý các kết nối TCP / IP đến không, vì vậy nó phải đối phó với ARP, nhưng không phải là cổng].
supercat

0

Lời kích thước. Họ đang viết phần mềm, không thiết kế phần cứng máy tính - mặc dù tôi chắc chắn rằng họ có hiệu suất và tính di động trong tâm trí. Tại thời điểm đó, 32 bit là word, các longword, hoặc inthoặc longInthoặc bất cứ điều gì. Xem lựa chọn kích thước từ .

Họ đã viết phần mềm này "trong những thập kỷ đầu tiên của kiến ​​trúc 32 bit (những năm 1960 đến 1980)." - Wikipedia


3
Trừ khi bạn đề xuất rằng các kiến ​​trúc sư của TCP / IP có một kiến ​​trúc máy cụ thể, tôi không chắc bạn sẽ đi đâu với cuộc tranh luận này ... bạn có bằng chứng nào cho thấy họ đang sử dụng / thiết kế cho 32- không kiến trúc bit, hoặc thậm chí kích thước từ là một xem xét có liên quan đến độ dài họ đã chọn cho địa chỉ mạng?
eggyal

@eggyal: Ngôn ngữ cho máy 8 bit và 16 bit thường bao gồm loại dữ liệu số nguyên 32 bit, nhưng ngôn ngữ trên máy 32 bit có loại dữ liệu số nguyên nhiều từ ít phổ biến hơn. Ít nhất là ở cấp mã nguồn, làm việc với các giá trị 32 bit về cơ bản là thuận tiện như làm việc với các giá trị 16 bit và chắc chắn thuận tiện hơn so với làm việc với các loại lớn hơn. Hơn nữa, đối với các thiết bị có nhu cầu liên lạc hạn chế, địa chỉ 32 bit có thể sẽ ổn nếu chúng giao tiếp qua các cổng phức tạp hơn.
supercat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.