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

2022-05-31 15:47 更新

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

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

接下來(lái)在系統(tǒng)上安裝TFTP的軟件包,進(jìn)行體驗(yàn)。

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

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

    [root@linuxprobe ~]# vim /etc/xinetd.d/tftp
    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /var/lib/tftpboot
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }

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

    [root@linuxprobe ~]# systemctl restart xinetd
    [root@linuxprobe ~]# systemctl enable xinetd
    [root@linuxprobe ~]# firewall-cmd --permanent --add-port=69/udp
    success
    [root@linuxprobe ~]# firewall-cmd --reload 
    success

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)