2020. 7. 4.

[Network] 2.5 FTP


*FTP : the file transfer protocol


원격 host로 파일을 송수신하는 protocol.
Client-server model
  • Client : file 송수신을 시작한다.
  • Server : 원격 시스템
Ftp : RFC 959
Ftp server : port 21

# FTP 쓰지않는 이유는 쓰기가어렵다.
  • 뒤로 쓰기어려운것들이 없어졌다.
# 엔지니어를 위해서 만든 프로토콜이다.

FTP : 제어와 file 전송

FTP client 21 port를 통해서 서버와 control connection을 설정한다.
이 제어연결을 통해 사용자 계정과비밀번호를 전송한다.
Client는 제어연결을 통해 원격지의 디렉토리 변경과 같은 명령을 전송한다.
서버측은 제어연결을 통해 파일 전송을 위한 명령을 받으면 TCP data connection을 초기화 한다.
하나의 파일 전송이 끝나면 data 연결은 close된다.
다음 파일 전송을 위해서는 새로운 TCP connection을 생성한다.
Out of band : 파일을 전송하는 connection과 제어를 위한 conconnection을 다르게 하는 . (반대 : in band)
FTP 서버는 사용자의 status를 유지한다. – 현재디렉토리, 인증정보
: 이로인해 서버가 유지 할 수 있는 전체 세션의 수를 상당히 제한한다.

# TCP 컨녁센을 2 맺는다. 초창기 서버는 포트가 정해져있었다.

*FTP : Active, Passive mode

Active mode(액티브 모드)
클라이언트가 데이터를 수신 받을 임의의 포트를 열고 서버에 알려주면 서버는 20번 포트를 통해 클라이언트에게 데이터를 전송함

서버가 클라이언트 쪽으로 data connection을 시작한다.

# active 문제가 있다.
  • 클라이언트가 서버에게 get 명령어를 21 포트로 날리면
  • 서버가 클라이언트에게 20 포트로 요청을 한다.
  • active라고 이름을 붙인 이유는 서버가 클라이언트로 요청하기 때문이다.

Passive mode(패시브 모드)

서버가 데이터를 송신할 임의의 포트를 열고 클라이언트에 알려주어 클라이언트가 서버의 임의의 포트에 접속하여 데이터를 가져감

클라이언트가 서버측으로 data connection을 시작한다.

# 서버가 예전처럼 가만히 있으면 클라이언트가 서버에게 파일전송 포트를 요청한다.
# 패시브모드를 사용하면 안되는 이유는? ( 안쓰는게 맞는일 )
  • 서버의 방화벽에서 포트를 열어줘야하지만 실제론 포트를 열어주지않는다.
  • 방화벽을 해제하고 나가려면 네트워크밖으로 나가서 받아야하는데
실무에서 불가능하다.
  • 은근히 DDOS 공격이 옛날엔 아주 흔한 공격이었다.
# 이렇게 나눠서 만든이유는 ? 사실 알기 힘들다.

*FTP 명령과 응답 코드

Sample command
명령과 응답은 7bit ASCII control connection을 이용 전송된다.
USER username
PASS password
LIST (원격지 디렉토리의 파일의 list 요청 : 응답은 data 연결을 이용한다.)
RETR filename (data 연결을 초기화하고 요청된 파일 전송하기 위해 원격 호스트를 시작한다.)
STOR filename (파일을 원격 호스트에 저장하는데 이용한다.)

Sample return code
331 : username OK, password required
125 : data connection already open, transfer start
425 : can’t open data connection
452 : Error writing file


댓글 없음:

댓글 쓰기