TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議) 是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。TFTP承載在UDP上,提供不可靠的數據流傳輸服務,不提供存取授權與認證機制,使用超時重傳方式來保證數據的到達。
??
?一、在談TFTP之前,先簡單講一下Linux網絡配置 ,網絡中最重要的當然是IP地址了,這里不講IP協議,在后面的網絡編程再講解,這里主要學習一下Linux下配置IP ,配置IP地址的方法有兩種:
1、配置靜態IP:在主機進入網絡之前,事先未主機設置固定的IP地址;
2、配置動態IP:選擇DHCP網絡服務,在主機進行網絡之后,動態的隨機獲取IP地址;
當然,大家都知道ifconfig這個命令:
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/tftp$?ifconfig?? eth0??????Link?encap:Ethernet??HWaddr?00:0c:29:6c:c2:ec???? ??????????inet?addr:172.16.58.130??Bcast:172.16.58.255??Mask:255.255.255.0?? ??????????inet6?addr:?fe80::20c:29ff:fe6c:c2ec/64?Scope:Link?? ??????????UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1?? ??????????RX?packets:337?errors:0?dropped:0?overruns:0?frame:0?? ??????????TX?packets:358?errors:0?dropped:0?overruns:0?carrier:0?? ??????????collisions:0?txqueuelen:1000??? ??????????RX?bytes:123712?(123.7?KB)??TX?bytes:42430?(42.4?KB)?? ??????????Interrupt:19?Base?address:0x2024??? ?? lo????????Link?encap:Local?Loopback???? ??????????inet?addr:127.0.0.1??Mask:255.0.0.0?? ??????????inet6?addr:?::1/128?Scope:Host?? ??????????UP?LOOPBACK?RUNNING??MTU:16436??Metric:1?? ??????????RX?packets:149?errors:0?dropped:0?overruns:0?frame:0?? ??????????TX?packets:149?errors:0?dropped:0?overruns:0?carrier:0?? ??????????collisions:0?txqueuelen:0??? ??????????RX?bytes:10307?(10.3?KB)??TX?bytes:10307?(10.3?KB)?? ?? fs@ubuntu:~/qiang/tftp$???
如果ifconfig命令不帶任何參數時,用于顯示當前主機中狀態為“活動”的網絡接口信息;
當然,ifconfig命令可以修改IP地址:
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/tftp$?sudo?ifconfig??eth0?192.168.3.51??
但是這是動態的修改IP地址,重啟以后,IP地址又變回原來的靜態IP地址;
修改IP地址除了可以在圖形界面中修改,也可以在配置文件中修改,這才是Linux的特性!無論是配置靜態IP還是動態IP,計算機系統將IP信息保存在什么地方呢? 答案是配置文件?"/etc/network/interfaces". 在UBuntu Linux 啟動時就能獲得IP地址的配置信息。若是配置靜態IP。就從配置文件中讀取IP地址參數,直接配置網絡接口設備;若是配置動態IP,就通知主機通過DHCP協議獲取網絡配置。
以下分別為配置靜態IP和動態IP時,配置文件"/etc/network/interfaces"的實例:
動態IP
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/tftp$?cat?/etc/network/interfaces??? auto?lo?? iface?lo?inet?loopback?? ?? auto?eth0?? fs@ubuntu:~/qiang/tftp$???
靜態IP
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/tftp$?cat?/etc/network/interfaces??? auto?lo?? iface?lo?inet?loopback?? ?? auto?eth0?? iface?eth0?inet?static ?? ????address?192.168.3.51?? ????netmask?255.255.0.0?? ????gateway?192.168.1.1?? fs@ubuntu:~/qiang/tftp$???
重啟下系統,用ifconfig命令查看IP地址
[cpp] ?view plaincopy
fs@ubuntu:~$?ifconfig??? eth0??????Link?encap:Ethernet??HWaddr?00:0c:29:6c:c2:ec???? ??????????inet?addr:192.168.3.51??Bcast:192.168.255.255??Mask:255.255.0.0??
明顯看到IP地址依然是我們靜態修改過的IP地址。
注意:
1、若不能訪問外網: ping 不通114.114.114.114
解決方法: sudo route add default gw 192.168.1.1
2、若不能訪問域名: ping 不通baidu.com
解決方法:?
1)-- ?sudo vi /etc/resolv.conf
2) -- 添加?nameserver 114.114.114.114
當然Linux網路配置還包括Route 、DNS等,這里先不詳細介紹,下面進入我們的
二、TFTP環境的搭建:
我的Linux版本是Ubuntu,下面是配置過程:
1、配置服務器端
[cpp] ?view plaincopy
fs@ubuntu:~$?sudo?apt-get?install?tftp-hpa?thtpd-hpa??
這里是因為我們再同一臺機器上操作的,在實際使用中,一般是
Client? :PC?? 安裝tftp-hpa
Server?:ARM 安裝tftpd-hpa
后面的 tftp <IP> 此處的IP地址應該是ARM的IP地址。
? 2、修改配置文件
在/etc/default下修改tftp服務的配置文件tftpd-hpa:
[cpp] ?view plaincopy
fs@ubuntu:~$?sudo?vi?/etc/ default /tftpd-hpa??? fs@ubuntu:~$?cat?/etc/default /tftpd-hpa??? #?/etc/default/tftpd-hpa ?? ?? TFTP_USERNAME="tftp" ?? TFTP_DIRECTORY="/home/fs/qiang/tftpd" ?? TFTP_ADDRESS="0.0.0.0:69" ?? TFTP_OPTIONS="-l-c-s" ?? fs@ubuntu:~$???
說明:修改項,其中TFTP_DIRECTORY處可以改為你的tftp-server的根目錄,博主這里是/home/fs/qiang/tftpd,當然可以改成其他地址,參數 -c 指定了可以創建文件,參數 -s是指定tftpd-hpa服務目錄,上面已經指定;
創建文件夾/home/fs/qiang/tftpd,修改權限,這里我直接 chmod 777.
3、手動啟動、停止服務
[cpp] ?view plaincopy
fs@ubuntu:~$?sudo?service?tftpd-hpa?stop?? tftpd-hpa?stop/waiting?? fs@ubuntu:~$?sudo?service?tftpd-hpa?start?? tftpd-hpa?start/running,?process?3041?? fs@ubuntu:~$?sudo?service?tftpd-hpa?status?? tftpd-hpa?start/running,?process?3041?? fs@ubuntu:~$?sudo?service?tftpd-hpa?restart?? tftpd-hpa?stop/waiting?? tftpd-hpa?start/running,?process?3055?? fs@ubuntu:~$???
4、tftp服務器測試
a、登陸服務器
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/1$?tftp?localhost??
或
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/1$?tftp?<主機IP>??
b、從tftp服務器下載文件
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/1$?tftp?localhost?? tftp>?get?qiang?? tftp>???
c、上傳文件到tftp服務器
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/1$?tftp?localhost?? tftp>?get?qiang?? tftp>?put?qiang?? tftp>???
d、查看幫助
[cpp] ?view plaincopy
fs@ubuntu:~/qiang/1$?tftp?localhost?? tftp>?get?qiang?? tftp>?put?qiang?? tftp>???? tftp-hpa?5.2?? Commands?may?be?abbreviated.??Commands?are:?? ?? connect?????connect?to?remote?tftp?? mode????????set?file?transfer?mode?? put?????????send?file?? get?????????receive?file?? quit????????exit?tftp?? verbose?????toggle?verbose?mode?? trace???????toggle?packet?tracing?? literal?????toggle?literal?mode,?ignore?':' ?in?file?name?? status??????show?current?status?? binary??????set?mode?to?octet?? ascii???????set?mode?to?netascii?? rexmt???????set?per-packet?transmission?timeout?? timeout?????set?total?retransmission?timeout?? ????????????print?help?information?? help????????print?help?information?? tftp>???
e、退出登陸
[cpp] ?view plaincopy
tftp>?q??
這里將大家容易出現的錯誤以及解決方法介紹給大家:
出現的一些問題及原因(解決方法):
1、Transfer time out .??? ?
??tftpd服務沒有啟動
2、Error code 0:Permission denied
??? 可能是由SELinux造成的,在FC3和FC3以后的FC版本中SELinux默認的都是開啟的,現在要關掉它。
??? 修改文件/etc/sysconfig/selinux,設定SELINUX=disabled,然后重啟電腦即可
? 或者? 執行命令system-config-securitylevel打開“安全級別配置”對話框,將SELinux(S)選項中“強制”改為“允許”
3、Error code 1:File not found
??? 指定的文件夾不存在;或tftpd啟動參數中沒有指定-c 選項,允許上傳文件
4、Error code 2:Only absolute filenames allowed
??? TFTP_OPTIONS="-l -c -s",中的選項注意一下,是否沒 -c
5、Error code 2:Access violation
??上傳的文件要有相應的可讀寫(覆蓋)的權限才能上傳,要對文件的權限進行修改? chmod 777 a(文件名)
總結
以上是生活随笔 為你收集整理的Linux下静态IP地址的设置及TFTP服务的搭建 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。