더북(TheBook)

FTP에 대해 알려주세요!

인터넷을 통해 파일을 배포하는 서비스는 주로 FTP(File Transfer Protocol, 파일 전송 프로토콜)를 사용합니다. FTP는 TCP/IP를 기반으로 서버와 클라이언트 사이의 파일 전송을 제공합니다. 아주 오래 전에 개발된 프로토콜이지만 지금도 인터넷에서 사용됩니다.

클라이언트가 서버의 특정 포트로 요청하면 서버가 이를 처리하고 클라이언트에게 처리 결과를 제공하는 다른 네트워크 서버와 달리 FTP에는 클라이언트와 서버 사이에 서비스 요청 및 결과 통보를 알리기 위한 명령 포트와 실재로 파일을 전송하기 위한 데이터 전송 포트가 존재합니다.

FTP의 동작 원리도 다소 복잡합니다. 그림 7-31에서 FTP의 일반적인 작동 방식인 액티브 모드를 소개합니다.

그림 7-31 FTP 액티브 모드

1. FTP 클라이언트 ftp는 FTP 서버의 21번 포트(FTP 명령 포트)로 파일 전송을 요청합니다. 이 과정에서 클라이언트는 실제 데이터를 전송할 클라이언트의 포트 번호(5123)를 리눅스 서버에 알립니다.

2. FTP 서버 ftpd는 접속 여부를 결정하고 FTP 요청을 허가한다는 메시지만 보냅니다.

3. FTP 서버는 20번 포트(FTP 데이터 포트)를 출발지로 삼아 클라이언트가 알려준 클라이언트의 데이터 전송 포트로 접속을 시도합니다(그렇습니다. 서버가 클라이언트로 접속을 시도합니다).

4. 클라이언트 쪽에서 접속을 허용하고 파일을 주고받습니다.

FTP 액티브 모드는 인터넷 초창기 FTP가 처음 고안되었을 때는 효과적이었을지 모르나 네트워크 서비스의 보안이 강조되는 지금 사용하기에는 문제가 있습니다. 서버가 클라이언트에 접속을 시도하기 때문에 클라이언트의 방화벽이 서버의 접근을 차단하면 FTP가 정상적으로 동작하지 않기 때문입니다.

이를 해결하기 위한 방법이 그림 7-32의 FTP 패시브 모드입니다.

그림 7-32 FTP 패시브 모드

1. FTP 클라이언트가 리눅스 서버의 21번 포트(명령 포트)로 접속 요청합니다. 이때 액티브 모드와 달리 이 FTP 요청이 패시브 모드임을 알립니다.

2. FTP 서버는 데이터 통로를 위한 새로운 포트(3479)를 임의로 하나 할당하고 선택된 포트 번호를 클라이언트에게 알려줍니다.

3. 클라이언트는 출발지 포트를 선택하고 FTP 서버가 알려준 데이터 전송 포트(3479)에 대해 다시 접속 요청을 합니다.

4. 서버 쪽에서 접속을 허용하고 파일을 주고받습니다.

패시브 모드로 동작하기 위해서는 FTP 서버와 클라이언트 양쪽에서 패시브 모드를 지원해야 합니다. FTP 서버와 클라이언트 대부분이 패시브 모드를 지원합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.