11.3 TFTP簡單文件傳輸協(xié)議

2022-05-31 15:47 更新

簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP)是一種基于UDP協(xié)議在客戶端和服務(wù)器之間進行簡單文件傳輸?shù)膮f(xié)議。顧名思義,它提供不復(fù)雜、開銷不大的文件傳輸服務(wù)(可將其當(dāng)作FTP協(xié)議的簡化版本)。

TFTP的命令功能不如FTP服務(wù)強大,甚至不能遍歷目錄,在安全性方面也弱于FTP服務(wù)。而且,由于TFTP在傳輸文件時采用的是UDP協(xié)議,占用的端口號為69,因此文件的傳輸過程也不像FTP協(xié)議那樣可靠。但是,因為TFTP不需要客戶端的權(quán)限認證,也就減少了無謂的系統(tǒng)和網(wǎng)絡(luò)帶寬消耗,因此在傳輸瑣碎(trivial)不大的文件時,效率更高。

接下來在系統(tǒng)上安裝TFTP的軟件包,進行體驗。

  1. [root@linuxprobe ~]# yum install tftp-server tftp
  2. Loaded plugins: langpacks, product-id, subscription-manager
  3. ………………省略部分輸出信息………………
  4. Installing:
  5. tftp x86_64 5.2-11.el7 rhel 35 k
  6. tftp-server x86_64 5.2-11.el7 rhel 44 k
  7. Installing for dependencies:
  8. xinetd x86_64 2:2.3.15-12.el7 rhel 128 k
  9. Transaction Summary
  10. ================================================================================
  11. Install 2 Packages (+1 Dependent package)
  12. Total download size: 207 k
  13. Installed size: 373 k
  14. Is this ok [y/d/N]: y
  15. Downloading packages:
  16. ………………省略部分輸出信息………………
  17. Installed:
  18. tftp.x86_64 0:5.2-11.el7 tftp-server.x86_64 0:5.2-11.el7
  19. Dependency Installed:
  20. xinetd.x86_64 2:2.3.15-12.el7
  21. Complete!

在RHEL 7系統(tǒng)中,TFTP服務(wù)是使用xinetd服務(wù)程序來管理的。xinetd服務(wù)可以用來管理多種輕量級的網(wǎng)絡(luò)服務(wù),而且具有強大的日志功能。簡單來說,在安裝TFTP軟件包后,還需要在xinetd服務(wù)程序中將其開啟,把默認的禁用(disable)參數(shù)修改為no:

  1. [root@linuxprobe ~]# vim /etc/xinetd.d/tftp
  2. service tftp
  3. {
  4. socket_type = dgram
  5. protocol = udp
  6. wait = yes
  7. user = root
  8. server = /usr/sbin/in.tftpd
  9. server_args = -s /var/lib/tftpboot
  10. disable = no
  11. per_source = 11
  12. cps = 100 2
  13. flags = IPv4
  14. }

然后,重啟xinetd服務(wù)并將它添加到系統(tǒng)的開機啟動項中,以確保TFTP服務(wù)在系統(tǒng)重啟后依然處于運行狀態(tài)??紤]到有些系統(tǒng)的防火墻默認沒有允許UDP協(xié)議的69端口,因此需要手動將該端口號加入到防火墻的允許策略中:

  1. [root@linuxprobe ~]# systemctl restart xinetd
  2. [root@linuxprobe ~]# systemctl enable xinetd
  3. [root@linuxprobe ~]# firewall-cmd --permanent --add-port=69/udp
  4. success
  5. [root@linuxprobe ~]# firewall-cmd --reload
  6. success

TFTP的根目錄為/var/lib/tftpboot。我們可以使用剛安裝好的tftp命令嘗試訪問其中的文件,親身體驗TFTP服務(wù)的文件傳輸過程。在使用tftp命令訪問文件時,可能會用到表11-5中的參數(shù)。

表11-5 tftp命令中可用的參數(shù)以及作用

參數(shù) 作用
? 幫助信息
put 上傳文件
get 下載文件
verbose 顯示詳細的處理信息
status 顯示當(dāng)前的狀態(tài)信息
binary 使用二進制進行傳輸
ascii 使用ASCII碼進行傳輸
timeout 設(shè)置重傳的超時時間
quit 退出
  1. [root@linuxprobe ~]# echo "i love linux" > /var/lib/tftpboot/readme.txt
  2. [root@linuxprobe ~]# tftp 192.168.10.10
  3. tftp> get readme.txt
  4. tftp> quit
  5. [root@linuxprobe ~]# ls
  6. anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures readme.txt Videos
  7. Desktop Downloads Music Public Templates
  8. [root@linuxprobe ~]# cat readme.txt
  9. i love linux

當(dāng)然,TFTP服務(wù)的玩法還不止于此,第19章會將TFTP服務(wù)與其他軟件相搭配,組合出一套完整的自動化部署系統(tǒng)方案。大家繼續(xù)加油!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號