소스코드리뷰(X) inet.ocx를 쓰는 것은 신중을 요한다

[목차(도우미)]
INET.OCX는 윈도용 프로그램 개발에서 간단히 FTP/HTTP등의 인터넷 관련 통신을 위한 컴포넌트로 제공되는 OCX이지만 단점이 있고 그 결점이 아직 수정되지 않고 있어서 사용하기에는 신중을 요한다. (쉽게 말해서 쓰지 마라.)

 간단한 FTP의 클라이언트를 구성하는데는 문제가 없지만 대량의 파일을 INET.OCX를 써서 연속적으로 다운로드를 실행하는 경우 윈도 XP의 포트가 계산 오류가 생겨서 프로그램을 중단해야만 하는 경우가 생긴다.(대략 400개의 파일을 순차적으로 다운로드할 경우에 빈발하는데 예외가 없다.)

이것은 근본적으로 윈도 XP의 문제점이라고도 할 수 있는데 동일한 실행 파일을 윈도 NT에서 실행할 경우에는 문제가 되지 않는다. OS가 계산하는 공백포트의 자릿수가 틀려서 윈도 NT에서는 제아무리 대량의 파일을 연속 다운로드해도 포트계산에 박치기 현상이 없었다. 그러나 윈도 XP(VISTA 포함)에서는 포트 계산의 결과가 다르다.


(작게 모여 피는 꽃의 안쪽을 보면 이렇게 생겼다. 사람에 따라서는 징그럽다고 생각할 수도 있겠지만 나는 신기하기도 하고 예쁘다고 생각한다. 프로그램의 소스코드를 열어 보면 과연 예쁜 경우가 얼마나 있을는지?)


INET.OCX에서는 FTP를 구현함에 있어서 능동모드(ACTIVE Mode, ACTV Mode)를 지원하고 수동모드(PASSIVE Mode, PASV Mode)가 지원되지 않는다. 포트계산의 문제는 능동모드에서 일어나는데 이는 윈도의 보안강화의 대책이 아닌가 한다. 그래서 수동모드로 파일전송하기 위해서는 INET.OCX 가 아닌 윈도용 API를 사용하는 방법이나 TCP/IP레벨에서 파일 전송을 구현하여야 한다.

FTP의 전송 모드에 관한 것은 소스코드리뷰가 아니라 교육에 해당하는 분야이므로 이 포스트가 아닌 차후 다른 포스트에서 좀더 심화하기로 한다. 

FTP 수동모드(Passive mode) Unleashed: FTP서버 제작과 교훈

by 금메달.아빠 on 2010.05.23 19:17 주요 단어: , , , , ,
  • BlogIcon 앤더슨 2010.07.31 15:04 신고 주소 수정/삭제 답글

    답방왔습니다~~ :)
    아무래도 vb6가 나온지도 10년이 넘다보니(inet ocx도 같이 개발되었는지 확실히는 모르겠습니다.) 그때 당시에는 발견되지 못했던 문제들이 쏙쏙 나오는거 같습니다..ㅎㅎ
    inet winsock 이런것들이 편하긴 하지만, (편해서 자꾸 쓰게됩니다..저도..) 아무래도 직접 구현하거나, 새롭게 다시 구현되어야 할거 같습니다...
    방문 감사합니다.

    • BlogIcon 금메달.아빠 2010.08.02 00:59 신고 주소 수정/삭제

      제조사인 마이크로소프트사도 버그가 있다는 것을 알텐데도 그대로 둔다는 것이 가장 곤란한 점입니다.
      주인장께서 댓글을 달아주셔서 고맙습니다.

      블로그 방문 감사합니다. 행복한 하루되세요.

체크하면 비공개 댓글이 됩니다