FTP 통신 동작과정 및 기본 원리
FTP( File Transfer Protocol ,FTP )
FTP: 파일 전송 프로토콜은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.
파일 전송 프로토콜은 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 오래 되었지만 최근까지도 인터넷에서 자주 사용
되곤 한다.
현재는 HTTP 프로토콜을 통해 접속되는 WWW( World Wide Web ) 방식이 주된 방식으로 WWW는 일반분자를 비롯, 사진
음악/동영상 콘텐츠까지 간편하게 사용할 수 있고, 네이버 클라우드, 구글 드라이브 등 간편하고 빠른 웹 하드 서비스를 쉽게
접할 수 있다. 이런점에서 FTP를 왜 써야하는가에대한 의문을 가질 수 있지만 FTP를 써야한다기보다는 FTP의 동작원리와
통신과정을 알아둠으로써 어플리케이션 통신을 이해하는데 큰 도움이된다.
FTP는 파일 전송 전용 서비스라는 특징과 인터넷을 통한 파일 송수신 만을 고안된 서비스( 프로토콜 ) 이기때문에 동작
방식이 대단히 단순하고 직관적이다. 그렇기 때문에 사용법도 간단하고, 빠른속도로 많은 파일을 주고 받을 수 있다는
장점이 있다.
FTP - 동작원리
FTP통신은 서비스를 제공하는 서버와 여기에 접속하는 클라이언트 사이에 두 개의 연결이 생성되는데, 하나는 데이터
전송을 제어하기 위한 신호를 주고 받기 위함이고( 네트워크 21번 포트 ), 다른 하나는 실제 데이터( 파일 ) 전송에
사용된다. ( 네트워크 20번 포트 )
↑21번 포트는 신호/명령제어 채널, 20번포트는 데이터( 파일 ) 전송 채널
FTP통신은 TCP통신을 하기 때문에, 처음 3-way handshaking 과정을 거친 후 클라이언트가 명령어를 입력하면, 서버는
숫자 코드로 응답한다.
1. 클라이언트 명령어
↑List of FTP commands ( 클라이언트 명령어 )
# 주요 커맨드는 외에는 외우기보다는 필요에따라 참고하는게 좋다.
# 출처 : 위키백과
2.FTP 서버 응답 코드
↑List of FTP server return codes ( FTP 서버 응답 코드 )
# 주요 응답코드는 외에는 외우기보다는 필요에따라 참고하는게 좋다.
# 출처 : 위키백과
FTP 통신- 데이터 전송
FTP는 데이터 ( 파일 )를 전송 함에 있어, 수동 모드( Passive Mode )와 능동모드( Active Mode ) 두 가지를 지원한다.
Active Mode 데이터 전송을 할때 서버는 20번 포트를 사용하고, Passive Mode 데이터 전송을 할때 서버는
1024~65535 사이의 랜덤한 비특권 포트를 사용한다.
1.능동 모드( Active Mode )
↑Active Mode 작동 방식
능동 모드는 클라이언트 에서 ① FTP서버의 21번 포트로 접속을 시도하고, 사용할 두 번째 포트를 서버에 알려준다.
②서버는 ACK로 응답 후 서버의 ③20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도하고, ④ 마지막으로
클라이언트가 ACK로 응답한다.
↑능동 모드 ( Active Mode ) : 최초 접속 요청
#.1 그림과 같이 먼저 클라이언트는 서버의 21번 포트로 접근하여 로그인 요청을 한다.
#.2 서버는 정상적인 접근일 경우 그에 대한 승인을 하고 로그인이 이루어진다.
↑능동 모드 ( Active Mode ) : 데이터 전송을 위한 절차
#.1 클라이언트가 로그인하게되면 서버에게 " 데이터 전송을 위해서 내쪽의 xxxx포트로 접속해 " 알려준다. 이에 서버는
20번 포트를 이용하여 클라이언트가 알려준 포트로 접속을 하고 데이터를 전송한다.
이때 능동모드의 문제점이 바로 ③단계 이다. TCP/IP의 특징인 '클라이언트가 서버에 접속을 시도하는 것' 이 아니라
' 서버가 클라이언트에 접속을 시도한다. '는 것이기 때문이다. 이때 클라이언트PC에 내부적인 환경요인 ( 방화벽 ) 과
외부적인환경 요인( FTP를 제대로 인지하지 못하는 공유기 )으로 FTP가 접속이 제대로 되지 않거나, 접속이 된다
하더라도 이후 데이터 목록을 받아오지 못하는 에러가 발생할 수 있다.
2.수동 모드( Passive Mode )
↑Passive Mode 작동 방식
서버가 클라이언트에 접속을 시도하는 비정상적인 능동모드에 대한 문제점을 해결하기위해서 수동모드가 등장했다.
① 먼저 클라이언트가 21번 포트로 접속을 시도하면 ② 서버에서는 서버가 사용할 두 번째 포트를 알려준다.
③ 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도하고, ④이에 서버는 ACK로 응답한다.
수동 모드에서는 두 번째 data포트로써 능동모드에서 사용했던 20번 포트를 사용하지 않고 1024 ~ 65535 사이의
임의의 비 특권 포트를 사용한다.
↑수동 모드 ( Passive Mode ) : 최초 접속 요청
# 능동 모드와 동일한 절차를 거쳐 로그인
# 서버의 21번 포트로 접속을 하게 되고 서버는 승인을한다.
↑수동 모드 ( Passive Mode ) : 데이터 전송을 위한 절차
# 데이터 전송시 능동모드와 달리 클라이언트는 서버쪽에서 알려준 임의포트와 연결하여 데이터를 송수신하게 된다.
FTP 통신 - 데이터 전송 과정
실습 환경은 리눅스에 가상의 ftp 서버 생성, 윈도우 명령 프롬프트를 통해 ftp 접속 시도
↑와이어 샤크를 통해 ftp 통신과정을 분석 ( Active Mode )
# 위에서 알아본바와 같이 클라이언트는 서버의 21번 포트로 접속을 시도한다.
# 이 과정은 TCP/IP의 3-way handshaking과 동일하다.
# 이때 클라이언트는 ftp 서버로부터 응답 코드를 받는다.
#.1 220 : 유저를 위한 서비스를 제공할 준비가 되었다.
→ 클라이 언트측에서 아이디를 입력한다.
#.2 331 : 아이디가 확인되었다.
→ 비밀번호 입력
#.3 230 : 성공적으로 로그인이 되었다.
↑윈도우 명령 프롬프트로 접속을 시도할때, 서버로부터 응답코드를 받을 수 있다.
# 응답코드에 따라 오류를 확인할 수 있고, 원인을 파악할 수 있다.
DHCP 프로토콜 통신과정 및 기본 원리 (0) | 2017.04.24 |
---|---|
Network - ICMP ( 인터넷 제어 메시지 프로토콜) (0) | 2017.04.14 |
TCP/IP 3 Way-Handshaking (1) | 2017.04.11 |
Network - OSI Layer 7 (0) | 2017.04.07 |
Network - LAN 과 WAN (0) | 2017.04.07 |
좀 알려주세요 현기증 난단 말이에요..