요약
- 1993년 11월의 실험적 RFC 1545는 FTP 데이터 연결 주소를 위해
LPRT와LPSV를 제안했다. 주소 계열, 호스트 주소의 길이, 포트 주소의 길이를 각각 밝힌다. 기존PORT는 호스트 네 칸과 포트 두 칸으로 고정돼 있었다. 228은 긴 주소의 수동 모드 응답이고,521은 서버가 명령을 이해하지만 요청한 주소 계열을 지원하지 않는 경우의 응답이다. RFC 1639는 1994년 6월 초안을 대체하며 IP 밖의 네트워크 계열과 TCP 밖의 전송 인터페이스를 더 분명하게 다뤘다.
파일보다 먼저 주소표가 꽉 찼다
FTP에는 두 갈래 통로가 있다. 제어 연결로 명령과 답을 주고받고, 데이터 연결로 파일이나 목록을 옮긴다. RFC 959의 PORT 명령은 두 번째 통로를 어느 주소에 열지 지정한다. 모양은 단순하다. h1,h2,h3,h4,p1,p2. 앞의 네 값은 32비트 인터넷 호스트 주소, 뒤의 두 값은 16비트 TCP 포트다. 각 값은 십진수 옥텟으로 적고 쉼표로 나눈다. IPv4와 TCP만 놓고 보면 필요한 칸이 모두 있었다.
문제는 응용 프로그램의 서식이 새 네트워크를 따라 자동으로 늘어나지 않는다는 점이다. 1990년대 초에는 다음 세대 IP 후보들이 경쟁했다. 더 길거나 가변 길이인 호스트 주소도 거론됐다. 전송 쪽 식별자 역시 TCP 포트의 두 옥텟에 머무를 이유가 없었다. 새로운 네트워크가 주소를 만들 수 있어도 FTP는 데이터 통로를 열기 전에 그 주소를 상대에게 적어 보내야 한다. 그 순간 예전 여섯 칸짜리 문장이 병목이 된다.
David Piscitello는 1993년 11월 RFC 1545에 해결책을 적었다. 제목은 FTP Operation Over Big Address Records, 약칭 FOOBAR. 개발자가 임시 예시로 써 놓은 말처럼 들리지만, 제안은 정밀하다. LPRT 명령은 주소 계열을 먼저 적고, 호스트 주소 길이와 호스트 주소, 포트 주소 길이와 포트 주소를 차례로 적는다. 값은 부호 없는 십진수 옥텟이며 쉼표로 구분한다. 이제 받는 쪽은 주소를 무조건 네 칸과 두 칸으로 자르지 않고, 문서가 밝힌 길이대로 읽는다.
수동 모드에도 짝이 필요했다. LPSV를 받은 서버는 데이터 연결을 기다릴 주소를 열고 228 Entering Long Passive Mode로 답한다. 답 안에는 계열, 두 길이, 호스트와 포트가 들어 있다. 클라이언트가 보내는 주소만 넓히고 서버가 돌려주는 주소는 예전 모양으로 남겨 두면, 대화의 절반은 여전히 좁은 문을 통과해야 한다. FOOBAR는 양쪽이 데이터 연결 위치를 말하는 방식을 함께 바꿨다.
응답 코드 521은 더 작지만 중요한 수선이다. 서버가 LPRT나 LPSV의 문법은 알고, 요청된 주소 계열은 구현하지 않았을 수 있다. 그때 자신이 지원하는 계열을 목록으로 답한다. 문법 오류에 쓰이는 500, 501과 구별된다. 문장이 틀린 것과 문장은 맞지만 해당 네트워크 잭이 없는 것은 다른 문제다. 상대는 이 답을 보고 공통으로 쓸 수 있는 계열을 찾을 수 있다.
RFC 1545에 나열된 IP, ST Datagram Mode, SIP, TP/IX, PIP, TUBA는 당시 책상 위에 있던 여러 방향을 보여 준다. 포트 주소의 길이를 따로 넣은 이유도 그 목록에 있다. TP/IX는 TCP의 16비트 포트보다 긴 전송 선택자를 고려했다. 호스트 주소만 크게 만들고 포트 칸을 두 개로 남겨 두면 옆문에서 다시 막힌다. 원안은 제어 연결과 데이터 연결에 서로 다른 주소 계열을 쓰는 경우까지 허용했다. 새 네트워크로 옮겨 가는 동안 한 FTP 세션 안에 다른 방식이 섞일 수 있었다.
첫 제안은 금세 개정됐다. 1994년 6월 RFC 1639는 RFC 1545를 폐기 대상으로 명시하고 긴 주소 형식을 이어받았다. 주소 계열 값 0부터 15는 IP 계열 버전 번호에 남기고, 16부터 255는 IANA가 배정하는 다른 네트워크 계층 프로토콜에 열어 두었다. Novell IPX가 16으로 나타난다. TCP 이외의 전송 인터페이스에서 FTP를 쓰는 가능성도 분명히 적었다. 여섯 칸의 주소표가 여러 네트워크 언어를 담는 장부로 바뀌었다.
원래의 PORT h1,h2,h3,h4,p1,p2는 작고 흔한 명령이다. 하지만 32비트 호스트와 16비트 포트를 응용 프로그램의 문법에 못 박았다. 라우터와 네트워크 주소를 새로 설계한 뒤에도 그 문법을 고치지 않으면 파일을 받을 곳을 제대로 설명할 수 없다. FOOBAR는 숨겨져 있던 가정을 주소 계열과 길이로 펼쳐 보였다. 인터넷의 다음 세대는 그 작은 문장에도 들어갈 수 있어야 했다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
전략 서클 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





