난 그냥 때 많은 달 전에, 꼬마 어린 아이 내 경력을 시작하기를, 나는 낮은 수준의 개발자 역할에 대한 면접을했다. 그 당시 CIDR이 어떻게 구현되었는지를 알게되면서 나는 내 지식을 과시하기를 원했습니다.
슬프게도, 그 전술은 나에게 잘 맞지 않았다. 나는 첫 번째 질문으로 완전히 바닥에 올랐다. 문제는 :
IPv4 주소가 32 비트 인 이유 는 무엇 입니까?
나는 그 답을 모른다 는 것을 쉽게 인정 했지만 , 원래의 프로토콜 디자인은 주소 공간을 8 비트 네트워크 번호와 24 비트 호스트 식별자로 나누었다 는 것을 알고 있었기 때문에 근거로 합리화하려고 시도했다. 프로토콜 설계자들은 각각 다수의 호스트를 포함 하는 소수의 네트워크 (결국, 특정 소수를 서로 연결하도록 의도 된)의 인터넷을 상상 했으며, 프로그래밍의 단순화를 위해 모든 것을 바이트 경계에 정렬시켰다.
나는 인터뷰에 응한 사람이 내 대답에 만족하지 못하고 실제 이유는 long int
C 안에 들어가는 것이 보장되어 구현 세부 사항을 단순화 한다는 사실을 나에게 상기시킨다 . 당시에는 젊고 초록색이어서 합리적인 답변으로 받아들였으며 (오늘 전에) 더 이상 생각하지 않았습니다.
어떤 이유로 대화가 방금 돌아 왔고 이제는 그 내용을 다시 생각해 보았으므로 완전히 그럴듯 해 보이지는 않습니다.
고정 크기 네트워크 및 호스트 필드로 구성된 원래 주소 지정 체계에서 개발자가 두 필드의 연결을 단일 변수에 할당하고 싶을 것 같지 않습니다 (초기 IP 구현에 액세스하여 해당 항목을 확인하지 못함) 실제로 실제로했다); 과
TCP / IP에 대한 작업이 시작된 시점에서 C는 표준화되지 않았으며 오늘날의 저수준 소프트웨어 개발에 대한 사실상의 "lingua franca" 도 아닙니다 .
면접관의 제안은 실제로 사실입니까? 그렇지 않은 경우 프로토콜 설계자가 32 비트 주소 지정을 선택한 실제 이유 는 무엇 입니까?
640 kB ought to be enough for anybody.
아무도 토스트기와 냉장고가 인터넷에 접속할 것으로 예상 한 것과 같은 이유 입니다.