- TFTP(Trivial File Transfer Protocol)는 임의의 시스템이 원격 시스템으로부터 부팅 코드를 다운로드하는 데 사용하는 프로토콜이다. 즉, 자체적으로 하드 디스크를 보유하지 못한 네트워크 터미널이 원격 서버에 저장된 부팅 미이지를 다운로드해 시스템을 초기화하는데 사용한다. 네트워크 터미널은 원격 서버와 통신할 수 있는 TFTP를 비롯해 최소한의 소프트웨어 기능을 보유한 장치이다.
- FTP는 제어 채널 데이터 채널이라는 두 개의 TCP 연결이 필요하다. 또한 원격 시스템에서 디레고리나 파일을 생성하고 삭제하는 등의 부가 기능도 필요해 프로그램이 상대적으로 크다. 그러나 원격 부팅 기능은 서버에서 복잡한 파일 작업이 따로 필요하지 않아 전송 기능을 단순화할 수 있다. 결과적으로 TFTP가 수행하는 작업은 원격 서버에서 하나의 파일을 복사해 오는 것이라고 생각할 수 있다.
TFTP 동작 과정
TFTP의 기본 기능인 파일 복사 작업은 복잡하지 않기 때문에 TCP 보다 UDP를 사용하는 것이 효율적이다. TFTP는 UDP 69번 포트를 통해 데이터를 전송한다.
TFTP 메시지
TFTP는 파일 복사 작업을 위해 다섯 개의 메시지를 제공한다. RRQ, WRQ는 TFTP 클라이언트가 서버에 전송하는 요청 메시지이고, DATA, ACK, ERROR는 TFTP 클라이언트와 서버가 모두 전송할 수 있는 메시지이다.
| 메시지 | 설명 |
| RRQ | 읽기 요청을 의미하는 RRQ는 TFTP 서버로부터 데이터를 읽기 위한 세션을 설정한다. |
| WRQ | TFTP 서버에 데이터를 쓰기 위한 세션을 설정한다. |
| DATA | 클라이언트나 서버가 데이터 블록을 전송할 목적으로 사용한다. |
| ACK | DATA 메시지로 전송된 데이터 블록을 수신하였음을 응답한다. |
| ERROR | 데이터 전송 과정에서 오류가 발생했을 때 사용한다. |
세션 설정
UDP는 연결 기능을 제공하지 않으며, 각 데이터 블록을 독립적으로 전송한다. 따라서 TFTP는 PRQ, WRQ 등의 메시지를 이용해 TFTP 세션을 설정, 유지하고 DATA 메시지를 이용해 데이터를 전송한다. TFTP에 세션 연결을 해제하고 싶으면 데이터 전송의 마지막 단계에서 512바이트보다 작은 데이터 블록을 전송한다.

RRQ메시지를 이용해 TFTP 서버로부터 파일을 읽어오는 과정이다. 먼저 TFTP 클라이언트가 RRQ 메시지를 서버에 보내 세션 연결 요청을 수행한다. TFTP 서버는 요청을 검토하여 오류가 있으면 ERROR 메시지를 회신한다. 그렇지 않으면 TFTP 세션이 설정되고, DATA 메시지를 이용해 첫 번째 블록부터 전송을 시작한다. 파일 전송을 완료하면 TFTP 세션 연결을 종료한다. 연결 종료를 위한 별도의 메시지는 정의되어 있지 않으므로 512바이트보다 작은 크기의 블록을 전송하는 것으로 대신한다.

TFTP 클라이언트가 서버에 파일을 전송하기 위해서는 WRQ 메시지를 전송해야 한다. TFTP 서버는 오류가 있으면 ERROR 메시지를 회신하고, 오류가 없으면 ACK 메시지를 전송해 데이터 파일을 수신할 수 있음을 나타낸다. 이후 새로 설정된 TFTP 세션을 사용해 데이터를 전송해야 하는데, DATA와 ACK 명령에 의한 파일 송수신 절차와 연결 해제 과정은 읽기 기능과 동일하다. 읽기 기능과 반대로 DATA 명령은 클라이언트가 전송하고 이에 대한 응답은 서버가 전송한다.
데이터 전송
- TFTP의 데이터 전송은 DATA와 ACK 메시지에 의해 이루어진다. TFTP가 사용하는 UDP는 데이터의 신뢰성과 순서 제어 등의 오류와 관련된 기능을 지원하지 않으므로 TFTP 자체에서 이 문제를 해결해야 한다.
- TFTP는 하나의 DATA 메시지에 대해 ACK 메시지 처리가 순차적으로 완료되도록 설계되었다. 따라서 데이터 블록 전송을 하나씩 처리하는 흐름 제어 방식을 사용하므로 UDP의 데이터 도착 순서 문제는 자연스럽게 해결된다.
- 데이터 분실과 관련된 오류 제어 원리도 간단하다. 모든 DATA와 ACK 메시지에 대해 송신 측에서 타임아웃 기능을 작동하도록 설계되었따. 즉, DATA나 ACK 메시지를 분실하면 송신자가 타임아웃 기능을 수행한다.
- 타임아웃 기능을 작동한다는 것은 해당 메시지를 재전송해야 함을 의미한다.
- TFTP는 부정 응답 메시지를 정의하지 않으므로 부정 응답 기능을 지원하지 않는다. 따라서 수신 데이터의 일부가 변형되는 오류가 발생하면 데이터 분실처럼 처리된다. 데이터 블록의 중복 문제는 DATA와 ACK 메시지에 정의된 블록 번호로 처리한다.
TFTP 데이터 전송 예

- 클라이언트가 서버로부터 데이터를 읽어 들이는 동작을 가정해보면, 먼저 RRQ 메시지로 세션 연결이 설정되고, 1번으로 지정한 첫 번째 데이터 블록이 정상 처리되었다.
- 2번 데이터 블록은 TATA 명령에 의한 전송 과정에서 데이터 변형 혹은 분실이 발생한 경우이며, 데이터 변형은 분실과 동일하게 처리된다. 따라서 TFTP 클라이언트는 서버로부터 어떠한 데이터 블록도 수신하지 않았기 때문에 ACK 메시지를 전송하지 않는다. 클라이언트로부터 ACK 메시지를 수신하지 못한 TFTP 서버는 타임아웃 기능을 통해 데이터 블록을 재전송하여 전송 오류를 해결한다. TFTP는 자체적으로 체크섬 기능을 이용해 데이터 변형 오류를 검출할 수 없으므로 UDP의 체크섬 기능을 이용한다.
- 마지막 3번 데이터 블록은 ACK 메시지가 전송 과정에서 분실된 경우이다. TFTP 서버는 클라이언트로부터 ACK 메시지를 수신하지 않았기 떄문에 다음에 전송할 데이터의 송신을 시작할 수 없다. 4번 데이터 블록이 전송되지 않았으므로 TFTP 클라이언트에서 타임아웃 기능을 통해 ACK 메시지를 재전송한다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
https://soso-hyeon.tistory.com/114
[쉽게 배우는 데이터 통신과 네트워크] CH16. 파일 전송
01 파일 전송을 위한 사용자 환경1 FTP 로그인FTP: File Transfer Protocol (원격 시스템과의 파일 송수신 기능 지원)원격 시스템에 접속하려면 FTP 서버에 등록된 로그인 계정과 암호가 필요하다. 1.1 익명
soso-hyeon.tistory.com
'CS > Network' 카테고리의 다른 글
| [Chapter 17] 암호화와 네트워크 보안 (암호화 시스템) (0) | 2025.02.19 |
|---|---|
| [Chapter 17] 암호화와 네트워크 보안 (암호화의 이해) (0) | 2025.02.19 |
| [Chapter 16] 파일 전송 (FTP 원리) (0) | 2025.02.19 |
| [Chapter 16] 파일 전송 (파일 전송을 위한 사용자 환경) (0) | 2025.02.19 |
| [Chapter 15] 전자 메일 (POP 서비스) (0) | 2025.02.19 |