簡介
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。
TFTP和FTP的區別
- 安全性區別
FTP支持登錄安全,具有適當的身份驗證和加密協議,在建立連接期間需要與FTP身份驗證通信
TFTP是一種開放協議,缺乏安全性,沒有加密機制,與TFTP通信時不需要認證
- 傳輸層協議的區別
FTP使用TCP作為傳輸層協議
TFTP使用UDP作為傳輸層協議
- 端口的區別
FTP使用2個端口:TCP端口21,是個偵聽端口;TCP端口20或更高TCP端口1024以上用于源連接
TFTP僅使用一個具有停止和等待模式的端口:端口69/udp
- RFC的區別
FTP是基于RFC 959文檔,帶有其他RFC涵蓋安全措施
TFTP基于RFC 1350文檔
- 執行命令的區別
FTP有許多可以執行的命令,get,put,ls,dir,lcd等等
TFTP只有5個指令可以執行,rrq,wrq,data,ack,error
軟件包
服務器端:tftp-server
客戶端:tftp
實驗
默認情況下,tftp使用/var/lib/tftpboot作為共享目錄
#TFTP服務端
[root@wenzi ~]# dnf -y install tftp-server
[root@wenzi ~]# rpm -ql tftp-server
/usr/lib/.build-id
/usr/lib/.build-id/8c
/usr/lib/.build-id/8c/6921a9fb21d66da4fb299d516bce9ee6afea34
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server
/usr/share/doc/tftp-server/CHANGES
/usr/share/doc/tftp-server/README
/usr/share/doc/tftp-server/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
兩種啟動方式
若啟動tftp.service,則監聽程序tftp.socket和服務進程in.tftpd隨之自動啟動;
若啟動tftp.socket,當訪問監聽端口69,in.tftpd才會啟動;和直接啟動tftp.service一樣
#TFTP服務端
[root@wenzi ~]# systemctl enable --now tftp.service
[root@wenzi ~]# ss -nlpu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:69 *:* users:(("in.tftpd",pid=6417,fd=0),("systemd",pid=1,fd=24))
[root@wenzi ~]# touch /var/lib/tftpboot/1.txt#TFTP客戶端
[root@wenzi ~]# dnf -y install tftp
[root@wenzi ~]# tftp 192.168.28.151
tftp> get 1.txt
tftp> quit
[root@wenzi ~]# ls
1.txt anaconda-ks.cfg