网络协议——FTP(文件传输协议)与TFTP(简单文件传输协议)原理及搭建使用

1. FTP基本概念

        FTP采用典型的C/S架构(即服务器端与客户端模型),端口号为20/21,客户端与服务器端建立TCP连接之后即可实现文件的上传、下载。20端口用来传输数据流,21端口用来传输控制流。

2. FTP传输文件的模式

针对传输的文件类型不同,FTP可以采用不同的传输模式:

        ASCII模式:传输文本文件(TXT、LOG、CFG )时会对文本内容进行编码方式转换,提高传输效率。当传输网络设备的配置文件、日志文件时推荐使用该模式。

        Binary(二进制)模式:非文本文件(cc、BIN、EXE、PNG),如图片、可执行程序等,以二进制直接传输原始文件内容。当传输网络设备的版本文件时推荐使用该模式。

3. FTP传输过程——主动模式

        使用主动模式时,FTP客户端使用一个随机端口(一般大于1024)向FTP服务器端的端口21发送连接请求;FTP服务器端接受请求,建立一条控制连接来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PORT命令通知FTP服务器端。当需要传输数据时,FTP服务器端从端口20向FTP客户端的端口P发送连接请求,建立一条传输连接来传输数据。

4. FTP传输过程——被动模式

        当使用被动模式时,FTP客户端使用一个随机端口(一般大于1024)向FTP服务器端的端口21发送连接请求,FTP服务器端接受请求,建立一条控制连接来传输控制消息。同时FTP客户端开始监听另一随机端口P(一般大于1024),并使用PASV命令通知FTP服务器端,FTP服务器端接到PASV 命令后,开启一个随机端口N(一般大于1024),并使用Enter PASV命令告知客户端自身开放端口号。当需要传输数据时,FTP客户端从端口P向FTP服务器端N端口发送连接请求,建立一条传输连接来传输数据。

主动模式和被动模式的区别

        使用主动模式传输数据时,如果FTP客户端在私有网络中并且FTP客户端和FTP服务器端之间存在NAT设备,那么FTP服务器端收到的PORT报文中携带的端口号、IP地址并不是FTP客户端经过NAT转换之后的地址、端口号,因此服务器端无法向PORT报文中携带的私网地址发起TCP连接(此时,客户端的私网地址在公有网络中路由不可达)。

        使用被动模式传输数据时,FTP客户端主动向服务器端的一个开放端口发起连接,如果FTP服务器端在防火墙内部区域中,并且没有放通客户端所在区域到服务器端所在区域的主动访问,那么这个连接将无法建立成功,从而导致FTP无法正常传输。

5. TFTP基础

        相较于FTP,TFTP的设计就是以传输小文件为目标,协议实现就简单很多: 使用UDP进行传输(端口号69) 无需认证 只能直接向服务器端请求某个文件或者上传某个文件,无法查看服务器端的文件目录。

6. TFTP输出示例

TFTP存在5种报文格式: RRQ:读请求包。 WRQ:写请求包。 DATA:数据传输报文。 ACK:应答包,用于确认收到对端的报文。 ERROR:差错控制报文。

7. liunx系统TFTP搭建

  • 安装TFTP服务端和客户端        
sudo apt-get install tftpd-hpa tftp-hpa
  • 创建TFTP目录并添加权限
mkdir /home/tftp/tftpboot
chmod 777 tftpboot    
  •  修改配置文件
vi /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/tftp/tftpboot" //我们创建的目录
TFTP_ADDRESS="0.0.0.0:69" //ip和端口号要为0.0.0.0
TFTP_OPTIONS="-c -l -s" //TFTP启动参数
-l:以standalone/listen模式启动TFTP服务,而不是从xinetd启动。
-c:可创建新文件。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。
-s:改变TFTP启动的根目录。不用手动指定目录,默认使用配置文件中的目录。 
  • 重启TFTP服务器
service tftpd-hpa restart
  • 在创建的目录下新建文件并编辑内容
touch test.txt
  • 客户端获取TFTP服务器文件
tftp IP地址 get 文件名   //下载

q    //退出

8. 错误解决

  •  如果TFTP的下载不成功,运行下面的命令卸载软件,然后再重新安装,最后再重启TFTP服务器。
 sudo apt-get remove --purge tftpd-hpa tftp-hpa

 sudo apt-get install tftpd-hpa tftp-hpa

 sudo service tftpd-hpa restart


 

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hackD_K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值