IPv4 주소가 32 비트 인 이유는 무엇입니까?


33

난 그냥 때 많은 달 전에, 꼬마 어린 아이 내 경력을 시작하기를, 나는 낮은 수준의 개발자 역할에 대한 면접을했다. 그 당시 CIDR이 어떻게 구현되었는지를 알게되면서 나는 내 지식을 과시하기를 원했습니다.

슬프게도, 그 전술은 나에게 잘 맞지 않았다. 나는 첫 번째 질문으로 완전히 바닥에 올랐다. 문제는 :

IPv4 주소가 32 비트 인 이유무엇 입니까?

나는 그 답을 모른다 는 것을 쉽게 인정 했지만 , 원래의 프로토콜 디자인은 주소 공간을 8 비트 네트워크 번호와 24 비트 호스트 식별자로 나누었다 것을 알고 있었기 때문에 근거로 합리화하려고 시도했다. 프로토콜 설계자들은 각각 다수의 호스트를 포함 하는 소수의 네트워크 (결국, 특정 소수를 서로 연결하도록 의도 된)의 인터넷을 상상 했으며, 프로그래밍의 단순화를 위해 모든 것을 바이트 경계에 정렬시켰다.

나는 인터뷰에 응한 사람이 내 대답에 만족하지 못하고 실제 이유는 long intC 안에 들어가는 것이 보장되어 구현 세부 사항을 단순화 한다는 사실을 나에게 상기시킨다 . 당시에는 젊고 초록색이어서 합리적인 답변으로 받아들였으며 (오늘 전에) 더 이상 생각하지 않았습니다.

어떤 이유로 대화가 방금 ​​돌아 왔고 이제는 그 내용을 다시 생각해 보았으므로 완전히 그럴듯 해 보이지는 않습니다.

  1. 고정 크기 네트워크 및 호스트 필드로 구성된 원래 주소 지정 체계에서 개발자가 두 필드의 연결을 단일 변수에 할당하고 싶을 것 같지 않습니다 (초기 IP 구현에 액세스하여 해당 항목을 확인하지 못함) 실제로 실제로했다); 과

  2. TCP / IP에 대한 작업이 시작된 시점에서 C는 표준화되지 않았으며 오늘날의 저수준 소프트웨어 개발에 대한 사실상의 "lingua franca" 도 아닙니다 .

면접관의 제안은 실제로 사실입니까? 그렇지 않은 경우 프로토콜 설계자가 32 비트 주소 지정을 선택한 실제 이유 무엇 입니까?


3
640 kB ought to be enough for anybody.아무도 토스트기와 냉장고가 인터넷에 접속할 것으로 예상 한 것과 같은 이유 입니다.

1
@afwe : 흠. 문제는 왜 그들이 더 큰 숫자를 선택하지 않았습니까? 일명 왜 32 비트입니까? (실제로 \ @Jens의 탁월한 답변이 지적되는 시점이지만) 32 비트 (16 비트 또는 24 비트 또는 48 비트가 아닌)에 대해 특별한 점은 무엇입니까?
eggyal

@Downvoter : 의견이 있으십니까?
eggyal

답변:


23

다음 은 빈트 서프 (2014 년 4 월) 와 행 아웃으로 연결되는 링크입니다. 여기 에서 그는이 인터넷이 실험용이라고 생각한 방식을 설명합니다.

그러나 - 우리는 인터넷에 대해 생각했다 것처럼 (우리가 그들이 연결됩니다 방법을 모른다 얼마나 많은 그리고 모르는 잘 생각이 모두 상호 연결 네트워크의 어떤 임의의 숫자가 될 것입니다) 전국 규모의 네트워크를 우리 " 국가 당 두 개가있을 것 "이라고 생각했다 (비싸기 때문이다.이 시점에서 이더넷은 발명되었지만 몇 년 후처럼 어디서나 확산되지는 않았다).

그런 다음 " 국가 수는 몇 개입니까? "(국가 당 두 개의 네트워크, 네트워크 수는 얼마입니까?)라고 말했지만 Google에 요청하지 않았으므로 128로 추측했고 128은 256 네트워크 (2는 8)입니다. 그런 다음 " 각 네트워크에 몇 대의 컴퓨터가 있을까요? "라고 말하고 " 약 1600 만? "(또 다른 24 비트)이라고 말 했으므로 32 비트 주소를 사용하여 43 억 개의 종료 를 허용했습니다. 1974 년 / 3 월은 실험을하기에 충분하다고 생각했습니다!

나는 이것을 Jens Link의 답변에 대한 의견으로 이미 게시했지만 표면이 조금 더 뭉개 졌다고 느꼈습니다.


"조금 더 많은 표면"보다, 이것은 Jens의 답변보다 실제 질문에 더 직접적으로 대답한다고 생각합니다 .
eggyal

34

쉬운 대답 : Vint Cerf가 그렇게 결정했기 때문 입니다. 그는 자신이 실험 프로토콜을 설계하고 있고 32 비트가 그 목적을 달성하기에 충분하다고 생각했다. 그는 프로덕션 시스템에서 IPv4가 사용될 것으로 기대하지 않았으므로 주소 공간의 크기에 대해서는 더 이상 생각하지 않았습니다.

Google IPv6 Conference 2008에서 그는 IPv6 인터넷은 어떤 모습일까요? 라는 제목의 패널 토론을 주최했습니다 . 그 동안 그는 다음같이 이야기했다 .

32 비트 주소 공간을 배치하기로 한 결정은 32, 128 또는 가변 길이에 대해 마음을 만들 수 없었던 많은 엔지니어들 사이에서 1 년간의 전투 결과였습니다. 그리고 1 년간의 싸움 끝에 저는 지금 ARPA에 있습니다. 저는 프로그램을 운영하고 있습니다.이 비용을 지불하고 미국 세금을 사용하고 있습니다. 그리고 이것이 우리가 알지 못했기 때문에 진전이 필요했습니다. 작동합니다. 32 비트라고 말하면 실험에 충분하고 45 억 개의 종단이 가능합니다. 심지어 국방부에서도 45 억 개의 아무것도 필요하지 않으며 테스트를 위해 43 억 개의 엣지 장치를 구입할 여유가 없었습니다. 그 당시 저는 기술을 입증하기 위해 실험을하고 있다고 생각했는데, 그것이 작동한다면 생산 버전을 만들 기회가있을 것입니다. 글쎄요, [웃음] — 방금 탈출했습니다!

성적 증명서 에 의해 피터 E. 머레이 .


7
아, 어리석은 짓이야! 오캄의 면도기 가 다시 쳤다. 적어도 당신은 나에게 면접관이 틀렸다는 것을 알고있는 만족스러운 만족감을주었습니다.
eggyal

2
@ user5025 : 예, 가능합니다 (일반적인 경우). 그러나 Vint가 이것이 IPv4를 위해 32 비트를 선택하는 이유라고 말하면 다른 것도 있다고 주장하기는 어렵습니다.
eggyal

5
@ user5025 : 알았어, 그건 좋은 지적이야. 실제로 그는 엔지니어들이 32 비트를 옹호하면서 길이가 얼마가되어야하는지 고민하고 있다고 언급했다. 생각 나는 그래서 질문은 무엇인가되어 자신의 32 비트를 옹호에 대한 동기 부여 (즉, 어떤이 허용 빈트로 만든)?
eggyal

2
@eggyal : 내 요점은 32 개 비트 정수가 "확실히"동기 부여 요인이 있었지만, 오히려 나는 그것이 고려할 것을 제안하는 것이 아니다 매우 그럴듯 그 크기를 제안하는 엔지니어 충분히 고려 수도 있다는 것을 요인, 그에게없는 증거 반대로, 나는 그것이 최종 선택의 요인으로 배제 될 수 있다고 생각하지 않습니다.
supercat

2
@eggyal : 당신은 무엇을 질문 할 수 32 개 비트를 선택하는 동기 엔지니어가 있습니다. 저의 의도는 그 특정한 질문에 대답하는 것이 었습니다. "베어 메탈 (bare metal)"에 TCP / IP 스택을 작성했으며 다양한 경우에 주소를 처리해야했지만이를 구문 분석하는 데 관심이 없었습니다. 따라서 ARP를 다루어야했지만 게이트웨이는 다루지 않았습니다.
supercat

0

단어 크기. 그들은 성능과 이식성을 염두에두고 있지만 컴퓨터 하드웨어를 설계하지 않고 소프트웨어를 작성하고있었습니다. 그 때, 32 비트는 있었다 wordlongword, 또는 int또는 longInt또는 무엇 이건. 단어 크기 선택을 참조하십시오 .

그들은이 소프트웨어를 "처음 수십 년 동안의 32 비트 아키텍쳐 (1960 년대에서 1980 년대)"에 썼습니다. - 위키 백과


3
TCP / IP 아키텍트가 특정 머신 아키텍처를 염두에두고 있다고 제안하지 않는 한, 당신이이 주장에 대해 어디로 가고 있는지 잘 모르겠습니다. 비트 아키텍처 또는 단어 크기가 네트워크 주소에 대해 선택한 길이와 관련하여 고려 되었습니까?
eggyal

@eggyal : 8 비트 및 16 비트 시스템의 언어에는 종종 32 비트 정수 데이터 유형이 포함되었지만 32 비트 시스템의 언어에는 다중 단어 정수 데이터 유형이있는 경우가 훨씬 드 common니다. 최소한 소스 코드 수준에서 32 비트 값으로 작업하는 것은 기본적으로 16 비트 값으로 작업하는 것만 큼 편리하며 더 큰 유형을 사용하는 것보다 확실히 더 편리합니다. 또한, 통신 요구가 제한적인 장치의 경우 32 비트 주소 지정은보다 정교한 게이트웨이를 통해 통신하면 문제가되지 않습니다.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.