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,一经查实,立即删除!

相关文章

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 系统应用编程——网络编程(基础篇)

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

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地…

php curl拉取远程图片

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

利用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,…

Struts入门(三)深入Struts用法讲解

访问Servlet APIAction搜索顺序动态方法调用指定多个配置文件默认ActionStruts 后缀接收参数处理结果类型1.访问Servlet API 首先我们了解什么是Servlet API httpRequest、httpResponse、servletContext  3个api对应jsp面向对象&#xff1a;request、response、application …

Linux ALSA声卡驱动之四:Control设备的创建

声明&#xff1a;本博内容均由http://blog.csdn.net/droidphone原创&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; Control接口 Control接口主要让用户空间的应用程序&#xff08;alsa-lib&#xff09;可以访问和控制音频codec芯片中的多路开关&#xff0c;滑动控件…

jQuery 入门教程(5): 显示/隐藏内容

2019独角兽企业重金招聘Python工程师标准>>> jQuery的hide()和show()可以用来显示和隐藏内容。比如下面的例子&#xff1a;jQuery的hide()和show() 可以用来显示和隐藏内容。比如下面的例子&#xff1a; [html] view plain copy print ? <!doctype html> …

键盘键值表

键盘键值表 值 描述 0x1 鼠标左键 0x2 鼠标右键 0x3 CANCEL 键 0x4 鼠标中键 0x8 BACKSPACE 键 0x9 TAB 键 0xC CLEAR 键 0xD ENTER 键 0x10 SHIFT 键 0x11 CTRL 键 0x12 MENU 键 0x13 PAUSE 键 0x14 CAPS LOCK 键 0x1B ESC 键 0x20 SPACEBAR 键 0x21 PAGE UP 键 0x22 PAGE DOW…

Spring自动扫描配置及使用方法

2019独角兽企业重金招聘Python工程师标准>>> 首先&#xff0c;检查一下你lib下有没有 common-annotations.jar 这个jar包 没有的话要导入工程。 下一步配置spring的配置文件applicationContex.xml&#xff0c;加入命名空间 红色为需要添加的内容 <beans xmlns…

Linux下ln命令使用

n是linux中又一个非常重要命令&#xff0c;它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录&#xff0c;用到相同的文件时&#xff0c;我们不需要在每一个需要的目录下都放一个必须相同的文件&#xff0c;我们只要在某个固定的目录&#xff0c…

DPM 2012 SP1---安装并部署DPM 2012 SP1服务器

实验拓扑图&#xff1a;一、前提条件&#xff1a;需要在DPM2012 SP1服务器上完成以下操作&#xff1a;1.DPM服务器加入域&#xff08;使用域管理员登陆DPM2012 SP1服务器&#xff09;2.准备存储磁盘&#xff08;新添加一块硬盘&#xff09;3.关闭防火墙服务&#xff08;DPM服务…

Linux下test命令使用

test命令格式&#xff1a; [cpp] view plain copy test condition 通常&#xff0c;在if-then-else语句中&#xff0c;用[]代替&#xff0c;即[ condition ]。注意&#xff1a;方括号两边都要用空格。 1、数值比较 比 较 描 述 ---------------------------------------…

用Mysql网页式管理工具安全地访问数据库的方法

2019独角兽企业重金招聘Python工程师标准>>> 用Mysql网页式管理工具安全地访问数据库的方法 在使用通达OA系统时很多用户需要借助Mysql网页式管理工具进入后台数据库去查看数据&#xff0c;进行一些相应的操作。但是大多数时候用户安装完该工具后都是直接进入后台数…

Linux 下的DMA浅析

DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来&#xff0c;从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。 一、DMA控制器硬件结构 DMA允许外围设备…

从值栈中获取数据

使用struts2的标签ognl表达式获取值栈数据 <s:property value"ognl表达式"/> 一、获取字符串 示例 打印后台string变量的值 jsp页面 Java代码 二、获取对象 示例 打印user对象的userName与userPwd的值 jsp页面 java代码 三、获取list集合 Java代码 1.通过list[…

SQL 事务

事务的acid理解简介ACID&#xff0c;是指在可靠数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;事务(transaction)所应该具有的四个特性&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isola…

网络协议复习

不同协议所属的层次如下图&#xff1a; IP IP地址一开始是分类编址&#xff0c;到了20世纪90年代更换为无分类编址。分类编址时IP地址共有五类ABCDE。对于ABC类地址&#xff0c;IP地址都可以划分为网络标识和主机标识。从一个IP地址中提取网络地址要用网络掩码和IP地址进行与运…