본문 바로가기

Software/Linux

TFTP(Trivial File Transfer Protocol)로 파일 주고 받기

1. 개념

TFTP는 파일을 전송하기 위한 UDP 기반의 프로토콜이다.

항목 설명
프로토콜 UDP 기반(포트 69 사용)
용도 펌웨어 업데이트, 부트로더 파일 전송
보안 없음
전송방식 텍스트/바이너리 파일 모두 가능
양방향 전송 업로드/다운로드 모두 가능
파일 시스템 접근 서버는 특정 폴더만 공유 가능(/tftpboot)

 

 

<참고 자료>

https://powerdeng.tistory.com/227

 

TCP와 UDP

TCP와 UDP의 차이 TCP는 접속을 하고 서로 통신하지만 UDP는 접속하지 않고 통신한다. 사물 인터넷(IoT)에서 TCP와 UDP의 차이 1. TCP 사물 인터넷(IoT)에서는 기본적으로 사물(보드)이 많다는 가정이 있다

powerdeng.tistory.com

 

2. TFTP로 파일 주고 받기

1) 서버 측 조건(보통 개발 PC)

① TFTP 서버 설치

설치가 끝나면 기본적인 설정 파일이 /etc/default/tftpd-hpa에 생성된다.

 

② TFTP 루트 디렉터리 생성

※ chown으로 파일의 소유자를 변경하는 이유는 TFTP 서버는 보안을 위해 권한이 없는 계정(nobody)으로 실행되는 경우가 많기 때문에 TFTP 서버가 파일을 읽거나 쓸 수 있도록, TFTP 루트 디렉터리의 소유자를 nobody로 바꾸는 것이다.

※ chmod로 파일 접근 문제를 방지한다.

 

③ TFTP 설정파일 수정

 

④ TFTP 서버 시작 및 상태 확인

 

2) 클라이언트 측 조건(보통 임베디드 장치)

① TFTP 명령어

TFTP 명령어는 클라이언트 프로그램이 설치되어 있어야 사용할 수 있다.

 

② Ping 확인

TFTP는 UDP 기반이므로 연결 상태 확인이 어렵다. 따라서 같은 네트워크 대역에 있는지 ping으로 확인해야 한다.

 

3) 서버 -> 클라이언트로 파일 가져오기

① 명령어 분석

● -g

get 모드를 활성화하여 TFTP 서버에서 파일을 가져올 때 사용

-r <파일 이름>

TFTP 서버에서 검색하거나 수신할 파일을 지정하는데 사용한다.

※ 서버의 루트 디렉터리(/work/release/tftpboot)에서 파일을 검색

<TFTP 서버 주소>

TFTP 서버의 IP 주소이며, 위의 명령어를 예로 들면 192.168.2.168에서 test.c 파일을 가져오게 된다.

 

4) 클라이언트 -> 서버로 파일 보내기

① 명령어 분석

  -p

Put(보내기)

  -l test.c

Local 파일 이름(장치에 있는 파일)

  -r test.c

서버에 저장될 파일명

  192.168.2.168

TFTP 서버 주소

 

② TFTP 설정파일 수정

※ TFTP 서버가 쓰기를 허용하려면 –create 옵션이 들어가야 한다.