Backend/Network

FTP

petitCoding 2012. 4. 12. 11:08

FTP (File Transfer Protocol)

 

FTP 는 일반적으로 잘 알려진 파일 전송 프로토콜이다.

알 FTP, WINFTP 등 많은 툴들을 사용해 서버에 데이터를 올리고, 내릴 수 있는데, 오늘은 이  편한 프로토콜에 대해 알아보려고 한다.

 

일단 RFC959 에 기술된 기본 용어들 중 알아둬야 할 용어를 간단히 정리.

 

PI : Protocol interpreter. Control 커넥션을 만들기 위해 커맨드 및 이에 대한 응답을 주고 받음.

DTP : Data transfer process. 데이터 커넥션을 만들고 관리하는 것을 의미.

Control connection : User PIServer PI 사이에서 주고받는 커맨드 및 응답. Telnet protocol과 동일.

Data connection : 데이터를 주고 받을 수 있는 full duplex 연결

 

그리고 기본적인 구성도이다.

PI 와 DTP를 편의상 따로 그렸는데, 사실 한개로 보면 된다. 서버-유저 사이에 세션이 2개가 맺어 지는것을 의미하며,

이 세션은 경우에 따라 1개가 될 수도 있다!

 

RFC의 그림을 좀 알아보기 쉽게 그린건데

불펌은 금지!! ㅠㅠ

 

 

 

 

위 그림에서 볼 수 있듯이 FTP는 총 2개의 파트로 나누어 진다.

Comamnd 를 보내는 부분과 실제 데이터를 보내는 부분이 그것인데, 위에도 말했듯이 커맨드에서 데이터를 주고받을 port를 보내주지 않는다면 이 세션은 하나가 될 수도 있다.

 

데이터를 주고받는 port는 유저 쪽에서 정할수도 있고 (active 모드), 서버 쪽에서 정할 수도 있다. (passive 모드)

프로그램을 켜 보면 이 부분에 대한 옵션이 있을 것이다.

물론 서버 쪽에도 passive 모드일 경우 포트의 범위를 정해 줄 수 있다.

 

FTP 커맨드는 대략 다음과 같은 것들이 있다. (일부분)

 

USER, PASS, CWD, PORT, PASV, RETR, STOR ....

 

주저리 주저리 설명하려고 하면 길기 때문에 이 커맨드에 대해서는 다음번 포스팅에 자세히 기술하려고 한다.ㅎㅎ

 

그리고 HTTP와 마찬가지로, request command 에 대한 응답 코드가 존재하는데, 100, 200, 300, 400, 500번대가 있으며 각각의 형식에 따라 나타내는 바가 조금씩 다르다.

이 부분도 역시 다음 포스팅에 자세히 다루려고 한다.

 

마지막으로 FTP로 파일을 업로드할 때 패킷을 캡쳐해서 다음과 같이 간단하게 그려보았다.

자세한 커맨드를 모르더라도, 이 그림을 보면 FTP가 어떻게 동작하는지 쉽게 알 수 있을 것이라 생각한다.

 

 

 

 

 

 

 

반응형

'Backend > Network' 카테고리의 다른 글

TCP Handshake  (0) 2012.04.12
FTP - 두 번째.  (0) 2012.04.12
SNMP Trap  (0) 2011.05.20
SNMP - MIB 정보 보기  (0) 2011.05.20
TLS Handshaking - 알기 쉽게 정리  (0) 2011.05.13