Linux下静态IP地址的设置及TFTP服务的搭建

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
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/tftp$ ifconfig  
  2. eth0      Link encap:Ethernet  HWaddr 00:0c:29:6c:c2:ec    
  3.           inet addr:172.16.58.130  Bcast:172.16.58.255  Mask:255.255.255.0  
  4.           inet6 addr: fe80::20c:29ff:fe6c:c2ec/64 Scope:Link  
  5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  6.           RX packets:337 errors:0 dropped:0 overruns:0 frame:0  
  7.           TX packets:358 errors:0 dropped:0 overruns:0 carrier:0  
  8.           collisions:0 txqueuelen:1000   
  9.           RX bytes:123712 (123.7 KB)  TX bytes:42430 (42.4 KB)  
  10.           Interrupt:19 Base address:0x2024   
  11.   
  12. lo        Link encap:Local Loopback    
  13.           inet addr:127.0.0.1  Mask:255.0.0.0  
  14.           inet6 addr: ::1/128 Scope:Host  
  15.           UP LOOPBACK RUNNING  MTU:16436  Metric:1  
  16.           RX packets:149 errors:0 dropped:0 overruns:0 frame:0  
  17.           TX packets:149 errors:0 dropped:0 overruns:0 carrier:0  
  18.           collisions:0 txqueuelen:0   
  19.           RX bytes:10307 (10.3 KB)  TX bytes:10307 (10.3 KB)  
  20.   
  21. fs@ubuntu:~/qiang/tftp$   

如果ifconfig命令不带任何参数时,用于显示当前主机中状态为“活动”的网络接口信息;

当然,ifconfig命令可以修改IP地址:

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. 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
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces   
  2. auto lo  
  3. iface lo inet loopback  
  4.   
  5. auto eth0  
  6. fs@ubuntu:~/qiang/tftp$   

静态IP

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/tftp$ cat /etc/network/interfaces   
  2. auto lo  
  3. iface lo inet loopback  
  4.   
  5. auto eth0  
  6. iface eth0 inet static  
  7.     address 192.168.3.51  
  8.     netmask 255.255.0.0  
  9.     gateway 192.168.1.1  
  10. fs@ubuntu:~/qiang/tftp$   

重启下系统,用ifconfig命令查看IP地址

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~$ ifconfig   
  2. eth0      Link encap:Ethernet  HWaddr 00:0c:29:6c:c2:ec    
  3.           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
在CODE上查看代码片派生到我的代码片
  1. 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
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~$ sudo vi /etc/default/tftpd-hpa   
  2. fs@ubuntu:~$ cat /etc/default/tftpd-hpa   
  3. # /etc/default/tftpd-hpa  
  4.   
  5. TFTP_USERNAME="tftp"  
  6. TFTP_DIRECTORY="/home/fs/qiang/tftpd"  
  7. TFTP_ADDRESS="0.0.0.0:69"  
  8. TFTP_OPTIONS="-l-c-s"  
  9. fs@ubuntu:~$   

说明:修改项,其中TFTP_DIRECTORY处可以改为你的tftp-server的根目录,博主这里是/home/fs/qiang/tftpd,当然可以改成其他地址,参数 -c 指定了可以创建文件,参数 -s是指定tftpd-hpa服务目录,上面已经指定;

创建文件夹/home/fs/qiang/tftpd,修改权限,这里我直接 chmod 777.

3、手动启动、停止服务

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~$ sudo service tftpd-hpa stop  
  2. tftpd-hpa stop/waiting  
  3. fs@ubuntu:~$ sudo service tftpd-hpa start  
  4. tftpd-hpa start/running, process 3041  
  5. fs@ubuntu:~$ sudo service tftpd-hpa status  
  6. tftpd-hpa start/running, process 3041  
  7. fs@ubuntu:~$ sudo service tftpd-hpa restart  
  8. tftpd-hpa stop/waiting  
  9. tftpd-hpa start/running, process 3055  
  10. fs@ubuntu:~$   


4、tftp服务器测试

a、登陆服务器

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/1$ tftp localhost  

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/1$ tftp <主机IP>  

b、从tftp服务器下载文件

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp>   

c、上传文件到tftp服务器

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp> put qiang  
  4. tftp>   

d、查看帮助

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. fs@ubuntu:~/qiang/1$ tftp localhost  
  2. tftp> get qiang  
  3. tftp> put qiang  
  4. tftp> ?  
  5. tftp-hpa 5.2  
  6. Commands may be abbreviated.  Commands are:  
  7.   
  8. connect     connect to remote tftp  
  9. mode        set file transfer mode  
  10. put         send file  
  11. get         receive file  
  12. quit        exit tftp  
  13. verbose     toggle verbose mode  
  14. trace       toggle packet tracing  
  15. literal     toggle literal mode, ignore ':' in file name  
  16. status      show current status  
  17. binary      set mode to octet  
  18. ascii       set mode to netascii  
  19. rexmt       set per-packet transmission timeout  
  20. timeout     set total retransmission timeout  
  21. ?           print help information  
  22. help        print help information  
  23. tftp>   

e、退出登陆

[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. 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(文件名)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASCII码表

From: http://www.96yx.com/tool/ASC2.htm ASCII码表 信息在计算机上是用二进制表示的&#xff0c;这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备&#xff0c;这些设备的主要目的就是&#xff0c;以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理…

inotify

Linux 2.6内核中的文件系统变化通知机制 一、 引言 众所周知&#xff0c;Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方&#xff0c;为了改善这种状况&#xff0c;开源社区提出用户态需要内核提供一些机制&#xff0c;以便用户态能够及时地得知内核或底层硬件设备…

bzoj 3924 幻想乡战略游戏

题目大意&#xff1a; 有边权点权的树&#xff0c;动态修改点权 每次修改后求带权重心x (\(minimize\) \(S\sum_i val[i]*dist[x][i]\)) 分析&#xff1a; 从暴力找突破口&#xff1a; 对于边x,y&#xff0c;设长度为len&#xff0c;切断后x半边树权值和为\(w_1\)&#xff0c;y…

Linux 系统应用编程——网络编程(服务器模型)

在网络通信过程中&#xff0c;服务端通常需要处理多个客户端。由于多个客户端的请求可能会同时到来&#xff0c;服务器端可采用不同的方法来处理。总体上来说&#xff0c;服务器端可采用两种模型来实现&#xff1a;循环服务器模型和并发服务器模型。 循环服务器模型是指服务器端…

makefile中的patsubst, wildcard, notdir

From:http://blog.sina.com.cn/s/blog_60cbc1700100nuhz.html 1、wildcard : 扩展通配符 2、notdir &#xff1a; 去除路径 3、patsubst &#xff1a;替换通配符 例子&#xff1a; 建立一个测试目录&#xff0c;在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $…

搭建实用深度学习环境(Ubuntu16.10+Theano0.8.2+Tensorflow0.11.0rc1+Keras1.1.0)

在动手安装之前&#xff0c;首先要确定硬件&#xff0c;系统&#xff0c;准备安装软件的版本&#xff0c;确定这些软硬件之间是否相互支持或兼容。本文安装的主要环境和软件如下&#xff1a; Ubuntu16.10CUDA8.0(cudnn5.1,CNMEM)Theano0.8.2Tensorflow0.11.0rc1Keras1.1.0 显卡…

Statspack安装心得

一&#xff0c;在win7下应该以管理员身份运行&#xff0c;sqlplusw 二&#xff0c;安装前要要执行如下代码&#xff0c;创建表空间 SQL> create tablespace perfstat 2datafile d:\oracle\oradata\eygle\perfstat.dbf 3size 500M 4extent management local; eygle为你的数据…

Linux 系统应用编程——网络编程(基础篇)

一、网络体系结构 1、OSI模型和TCP/IP 模型 网络体系结构指的是网络的分层结构以及每层使用的协议的集合。其中最著名的就是OSI协议参考模型&#xff0c;他是基于国际标准化组织&#xff08;OSI&#xff09;的建议发展起来的。它分为7个层次&#xff1a;应用层、表示层、会话层…

函数的定义与调用

1.理解函数 函数是一段代码块&#xff0c;它只定义一次&#xff0c;但可以被执行或调用任意次。函数可以有参数&#xff0c;实参&#xff08;argument&#xff09;和形参&#xff08;parameter&#xff09;&#xff0c;实参是在运行时的函数调用时传入的参数&#xff0c;形参是…

C++中函数的默认参数

使用方法&#xff1a; &#xff08;1&#xff09;在函数声明或定义时&#xff0c;直接对参数赋值&#xff0c;该参数就是默认参数。&#xff08;2&#xff09;在函数调用时&#xff0c;省略部分或全部参数&#xff0c;这时就会使用默认参数进行代替。注意事项&#xff1a; &…

Linux 系统应用编程——网络编程(socket编程)

二、网络编程基础 1、套接字概述 套接字就是网络编程的ID。网络通信&#xff0c;归根到底还是进程间的通信&#xff08;不同计算机上的进程间的通信&#xff09;。在网络中&#xff0c;每一个节点&#xff08;计算机或路由器&#xff09;都有一个网络地址&#xff0c;也就是IP地…

Linux 代码格式化工具 indent

以下是我最喜欢的代码格式化脚本&#xff1a; #!/bin/shif [ $# -lt 1 ]; thenecho "Usage: $0 <file>"exit 1fi# format a source file(*.c, *.h)formatSrcfile(){indent -npro -nip -lp -npsl -npcs -i4 -ts4 -sob -l140 -ss -nsaf -nsai -nsaw -bl -bli 0 $…

Android处理ListView中的Item中的Button按钮不能点击的问题

问题描述&#xff1a;ListView列表中的Button按钮按钮不能点击 解决办法&#xff1a;在ListView中的Item项的布局文件中加上&#xff1a;android:descendantFocusability"blocksDescendants"&#xff0c;问题解决。

php curl拉取远程图片

<?php $url "图片绝对地址/thumbnail.jpg"; $filename curl.jpg; getImg($url, $filename); /**通过curl方式获取制定的图片到本地* 完整的图片地址* 要存储的文件名*/ function getImg($url "", $filename "") {if(is_dir(basename($fi…

Linux 下 NFS服务的搭建

NFS是Network File System的简写&#xff0c;即网络文件系统。 网络文件系统是许多操作系统都支持的文件系统中的一种&#xff0c;也被成为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS&#xff0c;用户可以像访问本地文件一样访问远端系统上的文件。 NFS所…

GCC 参数详解

From: http://www.cppblog.com/SEMAN/archive/2005/11/30/1440.html 先附上三篇相关文章&#xff1a; LINUX下的C编译器GCC简介 linux上的C/C编译器gcc/egcs详解 gcc和g的区别(很详细的描述) [介绍] gcc and g分别是gnu的c & c编译器 gcc/g在执行编译工作的时候&#…

电子客票状态整理

1.OPEN FOR USE&#xff1a;客票有效 2.VOID&#xff1a;已作废 3.REFUND&#xff1a;已退票 4.CHECK IN&#xff1a;正在办理登机 5.USED/FLOWN&#xff1a;客票已使用 6.SUSPENDED&#xff1a;系统处理&#xff0c;或人为挂起禁止使用该票 7.PRINT/EXCH&#xff1a;电子客票已…

Linux 系统应用编程——线程基础

传送门&#xff1a;Linux多线程编程实例解析 . linux多线程编程——同步与互斥 . 传统多任务操作系统中一个可以独立调度的任务&#xff08;或称之为顺序执行流&#xff09;是一个进程。每个程序加载到内存后只可以唯一地对应创建一个顺序执行流&#xff0c;即传统意义的进程。…

利用indent格式化源文件的脚本

脚本一&#xff1a;格式化指定目录下的源文件(*.h, *.cpp...) #!/bin/sh# 格式化某目录下所有*.h, *.c, *.cpp, *.hh文件, 并将文件换行符转换成Linux下的格式if [ $# -lt 1 ]; thenecho "Usage: $0 <dir>"exit 1elsedir$1fi# format a source file(*.c, *.h,…

apple mach-o linker (id) error

在网上查了下&#xff0c;有网友说是因为有变量重名&#xff0c;仔细检查了下代码&#xff0c;UIGraphicsEndImageContext()写成uigraphicsendimagecontext()了&#xff0c;改过来就编译通过了。转载于:https://www.cnblogs.com/cc-Cheng/p/3341242.html