컴퓨터망 18) FTP TFTP

zh025700·2022년 7월 7일
0

컴퓨터네트워크

목록 보기
18/26

컴퓨터망

18. File Transfer: FTP

이 장에서는 파일 전송과 관련된 두 가지 프로토콜인 FTP(File Transfer Protocol)와 TFTP(Trivial File Transfer Protocol)에 대해 설명한다

FTP

FTP(File Transfer Protocol)는 한 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에서 제공하는 표준 메커니즘이다
한 시스템에서 다른 시스템으로 파일을 전송하는 것이 간단하고 간단해 보이지만 먼저 몇 가지 문제를 해결해야 한다
예를 들어, 두 시스템이 서로 다른 파일 이름 규칙을 사용할 수 있다
두 시스템은 텍스트와 데이터를 표현하는 방식이 다를 수 있다
두 시스템은 서로 다른 디렉토리 구조를 가질 수 있다
이러한 모든 문제는 FTP를 통해 해결했다

FTP는 TCP 서비스를 사용한다
두 개의 TCP 연결이 필요하다
well known 포트 21은 control connection에 사용되고 포트 20은 data connection에 사용된다

  • FTP는 호스트 간에 두 가지 연결을 설정한다는 점에서 다른 클라이언트-서버 응용 프로그램과 다르다

  • 하나의 연결은 데이터 전송에 사용되고 다른 하나는 제어 정보(명령 및 응답)에 사용된다

    • 명령과 데이터 전송을 분리하여 효율적이다
  • control connection은 매우 간단한 통신 규칙을 사용한다

    • 한 번에 한 줄의 명령이나 한 줄의 응답만 전달하면 된다
  • 반면에 data connection은 전송되는 다양한 데이터 유형으로 인해 더 복잡한 규칙이 필요하다

  • FTP는 두 개의 well known TCP 포트를 사용한다

    • 포트 21은 control connection에 사용되고 포트 20은 data connection에 사용된다

그림은 FTP의 기본 모델을 보여준다

클라이언트 구성요소

  • 사용자 인터페이스
  • 제어 프로세스
  • 데이터 전송 프로세스

서버 구성요소

  • 제어 프로세스
  • 서버 데이터 전송 프로세스

control connection은 제어 프로세스 간에 이루어진다
data connection은 데이터 전송 프로세스 간에 이루어진다

Control connection

control connection에는 두 단계가 있다

  1. 서버는 포트 21에서 passive open을 실행하고 클라이언트를 기다린다
  2. 클라이언트는 임시 포트를 사용하고 active open를 실행

연결은 전체 프로세스 동안 유지된다

Data Connection

data connection은 서버 사이트에서 well known 포트 20을 사용한다

  1. 서버가 아닌 클라이언트가 임시 포트를 사용하여 passive open을 실행 클라이언트가 파일 전송을 원하기 때문에 passive open을 클라가 한다
  2. 클라이언트는 PORT 명령을 사용하여 이 포트 번호를 서버에 보낸다
  3. 서버는 포트 번호를 수신하고 well known 포트 20과 수신된 임시 포트 번호를 사용하여 active open을 실행

초기 data connection 단계이다
나중에 PASV 명령을 사용하면 이러한 단계가 변경이 된다

Communication

서로 다른 컴퓨터에서 실행되는 FTP 클라이언트와 서버는 서로 통신해야 한다
이 두 컴퓨터는 다른 운영 체제, 다른 문자 집합, 다른 파일 구조 및 다른 파일 형식을 사용할 수 있다
FTP는 이 이질성을 호환 가능하게 만들어야 한다

Communication over control connection

  • FTP는 TELNET 또는 SMTP와 동일한 접근 방식을 사용한다
    • NVT ASCII 문자 집합을 사용한다
  • 커뮤니케이션은 command와 reponse를 통해 이루어진다
    • 한 번에 하나의 명령(또는 응답)을 보내기 때문에 control connection에 적합하다

Communication over data connection

  • data connection을 통해 파일을 전송한다
  • 클라이언트는 전송할 파일 유형, 데이터 구조 및 전송 모드를 정의해야한다
    • data connection을 통해 파일을 전송하기 전에 control connection을 통해 데이터 전송을 준비한다
  • 이질성 문제는 파일 유형, 데이터 구조 및 전송 모드의 세 가지 통신 속성을 정의하여 해결된다

Command processing

FTP는 control connection을 사용하여 클라이언트 제어 프로세스와 서버 제어 프로세스 간의 통신을 설정한다
이 통신 동안 명령은 클라이언트에서 서버로 전송되고 응답은 서버에서 클라이언트로 전송된다

Access commands

  • 이 명령을 사용하면 사용자가 원격 시스템에 액세스할 수 있다

File management commands

  • 이 명령을 통해 사용자는 원격 컴퓨터의 파일 시스템에 액세스할 수 있다
  • 이를 통해 사용자는 디렉터리 구조를 탐색하고, 새 디렉터리를 만들고, 파일을 삭제하는 등의 작업을 수행할 수 있다

data formatiting commands

  • 이 명령을 통해 사용자는 데이터 구조, 파일 유형 및 전송 모드를 정의할 수 있다
  • 정의된 형식은 파일 전송 명령에서 사용됩니다.

Port defining commands

  • 이 명령은 클라이언트에서 data connection을 위한 포트 번호를 정의한다
  • 두 가지 방법이 있다
    • 첫 번째 방법
    • PORT 명령을 사용하여 클라이언트가 임시 포트 번호를 서버에 보낼 수 있다.
    • 두 번째 방법
      • PASV 명령을 사용하여 클라이언트가 서버에 먼저 포트 번호를 선택하도록 요청

File transfer commands

  • 이 명령을 사용하면 실제로 사용자가 파일을 전송할 수 있다

Miscellaneous commands

  • 이 명령은 클라이언트 사이트의 FTP 사용자에게 정보를 전달

Response

  • 모든 FTP 명령은 적어도 하나의 response를 생성한다


File transfer

파일 전송은 control connection을 통해 전송된 명령 후 data connection을 통해 발생한다
FTP에서의 파일 전송은 아래 세 가지 중 하나를 의미한다

  • 서버에서 클라이언트로 파일을 복사(다운로드)
    • 이것을 retrieving a file이라고 한다
    • RETR 명령에 의해 수행
  • 클라이언트에서 서버로 파일을 복사(업로드)
    • 이것을 파일 저장이라고 한다
    • STOR 명령의 감독하에 수행
  • 디렉토리 또는 파일 이름 목록이 서버에서 클라이언트로 전송
    • 이것은 LIST 명령의 의해 수행

Ex. retrieving a list

  1. 포트 21에 대한 control connection이 생성된 후 FTP 서버는 control connection에 대해 220(서비스 준비) 응답을 보냄
  2. 클라이언트가 USER 명령을 보냄
  3. 서버는 331로 응답(사용자 이름은 OK이고 암호가 필요)
  4. 클라이언트가 PASS 명령을 보냄
  5. 서버는 230으로 응답(사용자 로그인은 OK)
  6. 클라이언트는 data connection을 위해 임시 포트에서 passive open을 실행하고 PORT 명령을 전송하여(control connection을 통해) 이 포트 번호를 서버에 제공
  7. 서버는 이 시점에서 연결을 열지 않지만 포트 20(서버 측)과 클라이언트에서 수신한 임시 포트 간의 data connection에서 active open를 발행할 준비를 한다 응답 150을 보낸다(data connection이 곧 열림)
  8. 클라이언트는 LIST 메시지를 보냄
  9. 이제 서버는 125로 응답하고 data connection을 연다
  10. 그런 다음 서버는 data connection에서 파일 또는 디렉터리 목록(파일로)을 보낸다 전체 목록(파일)이 전송되면 서버는 control connection을 통해 226(data connection 닫기)으로 응답
  11. 이제 클라이언트는 두 가지 선택을 할 수 있다 QUIT 명령을 사용하여 control connection 닫기를 요청하거나 다른 명령을 보내 다른 활동을 시작할 수 있다(결국 다른 data connection을 열 수 있음)
  12. QUIT 명령을 받은 서버는 221(서비스 닫기)로 응답한 다음 control connection을 닫는다

Ex. file stored

그림은 이미지(바이너리) 파일이 저장되는 방법을 보여준다

  1. 포트 21에 대한 control connection이 생성된 후 FTP 서버는 control connection에 대해 220(서비스 준비) 응답을 보낸다
  2. 클라이언트가 USER 명령을 보낸다
  3. 서버는 331로 응답한다(사용자 이름은 정상이며 암호가 필요)
  4. 클라이언트가 PASS 명령을 보낸다
  5. 서버는 230으로 응답(사용자 로그인은 OK)
  6. 클라이언트는 data connection을 위해 임시 포트에서 passive open을 실행하고 PORT 명령을 전송하여(control connection을 통해) 이 포트 번호를 서버에 제공
  7. 서버는 이 시점에서 연결을 열지 않지만 포트 20(서버 측)과 클라이언트에서 수신한 임시 포트 간의 data connection에서 active open을 발행할 준비를 한다 응답 150을 보냅니다(data connection이 곧 열림).
  8. 클라이언트가 TYPE 명령을 보냄
  9. 서버는 응답 200(명령 OK)으로 응답
  10. 클라이언트가 STRU 명령을 보냄
  11. 서버는 200(명령 OK)으로 응답
  12. 클라이언트가 STOR 명령을 보냄
  13. 서버는 data connection을 열고 응답 250을 보냄
  14. 클라이언트는 data connection에서 파일을 보냄 전체 파일이 전송된 후 data connection이 닫힘 data connection을 닫는 것은 파일 끝을 의미
  15. 서버는 control connection에 대한 응답 226을 보냄
  16. 클라이언트가 QUIT 명령을 보내거나 다른 명령을 사용하여 다른 파일을 전송하기 위해 다른 data connection을 연다 이 예에서는 QUIT 명령이 전송
  17. 서버는 221(서비스 종료)로 응답하고 control connection을 닫음

TFTP

FTP 프로토콜의 모든 기능이 필요 없이 단순히 파일을 복사해야 하는 경우가 있다
예를 들어 디스크가 없는 워크스테이션이나 라우터가 부팅될 때 부트스트랩과 구성 파일을 다운로드해야 한다
여기서 우리는 FTP에서 제공되는 모든 정교함을 필요로 하지 않는다
파일을 빠르게 복사하는 프로토콜만 있으면 된다

TFTP(Trivial File Transfer Protocol)는 이러한 유형의 파일 전송을 위해 설계되었다

TFTP는 UDP를 사용하고 well known 포트 69를 사용한다

Message

TFTP 메시지에는 그림과 같이 RRQ, WRQ, DATA, ACK, ERROR의 5가지 유형이 있다

Use of TFTP with DHCP

  • TFTP는 보안이 큰 문제가 되지 않는 기본 파일 전송에 매우 유용하다
  • 주요 응용 프로그램은 DHCP와 함께 사용됩니다
  • TFTP는 적은 양의 메모리만 필요로 하며 UDP 및 IP 서비스만 사용한다
  • 전원이 켜진 기기는 DHCP 클라이언트를 사용하여 DHCP 서버에서 구성 파일의 이름을 가져온다
    • 이후 스테이션은 파일 이름을 TFTP 클라이언트에 전달하여 TFTP 서버에서 구성 파일의 내용을 가져온다
profile
정리

0개의 댓글