tcp/ip学习笔记--第27章 FTP  File Transfer Protocol

参考:

https://download.csdn.net/download/qq_31567335/10213200

简介:

FTP是用来在不同的主机之间传送文件的协议,用来将文件从一个主机完整的拷贝到另一个主机。这与提供文件存取功能的NFS并不是同一个概念。同Telnet一样,FTP被设计成在不同的操作系统之间工作,所以制定了一个传输标准:NVT 7bit ASCII。


FTP Protocol

与之间讨论的协议不同,FTP用两个tcp连接来传送文件。

1.control connection。经典的server-client模式,server有一个well-known端口:21。这个连接用来传送传送client发送给server的命令和server的回复。ip层的 type-of-service应该被设置成 “minimize delay”

2.data connection 。每传送一个文件就会创建一个连接。ip层的type-of-service应该被设置成 “maximize throughput”


Data Pepresentation

在文件传输与存储的方式上,有非常多种选择。

File type:ASCII file type,EBCDIC,Image file type,local file type。

Format control: Nonprint,Telnet format control , Fortran carriage control

Structure:File structure,  record structure. page structure

Transmission mode: stream mode,Block mode, Compressed mode

结合起来将有几十种组合,想想就可怕。还好,一般的FTP实现,只支持以下选择:

Type:ASCII or image

Format : noprint only

Structure:file Structure only.

Transmission mode: stream mode only.

这样一来,就只有两种选择啦。


FTP Commands

命令是3个或者4个大写的ASCII字符,每个命令或回复以CR,LF结束。


FTP replies

回复是以个ASCII表示的数字,跟随着可选的一些消息。数字是用来给程序用,而消息是用来显示给用户的。

书上说每位上的数字都表示不同的含义,说实话我看了半天,真没看明白是怎么个回事。这一小部分不理解并不影响后面内容的学习。


Connection Management

data connection有三个作用:

1.client 向 server 发送文件

2.server 向 client 发送文件

3.server 向 client 发送文件或目录列表

一般传送一个文件的流程如下:

1.data connection的创建由client来控制,因为不管上传,下载,显示目录都是客户端发起

2.client 端选择一个临时端口,开启tcp监听。

3.client 使用PORT命令将创建好的端口号发送给server 

4.server利用接收到的端口号,主动建立连接

发送文件的一方,在文件发送完后,会主动关闭连接,来表示文件已经发送完毕。


Text File Transfer:NVTASCII Representation or Image

默认应该是当文本文件传送,所有的换行符都被转换成标准格式(CR,LF), 传送到本地后再转换成本地格式。

新的实现进行了优化,连接建立后,主动进行同步,确认双方是否使用同一操作系统,如果是的话,所有的文件传送都被当做二进制文件传送。这样双方都不用对每个字节进行检验,传送的时候也能节省空间(CR,LF占两个字节)。


Aborting a file transfer:Telnet Synch Signal

要放弃一个客户端主动发送的文件非常简单,只需要停止发送并通过control connection发送ABOR命令即可。

但是要放弃一个从服务端发向客户端的文件就要复杂一些:

1.客户端用TCP的紧急指针模式发送ABOR命令,并且从此刻起,所有接收到的数据都会被扔掉

2.服务端进入紧急模式后,会在传送过来的命令中查找ABOR和STAT命令,并将其他所有接收到的命令丢弃掉。

3.查找到ABOR命令后,将停止发送文件。

疑问:

发送的命令是:<IAC,IP,IAC,DM,A,B,O,R,\r,\n>

感觉书上并没有说明白为什么前面要发送那两个telnet的命令。直接发送ABOR命令不就行了吗?




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值