互联网应用笔记(七)
TFTP and FTP Basics
File Transfer And Access
◼ Providing computers with the ability to access files on remote machines
◼ To lower overall cost
◼ To archive data
◼ To share data across multiple programs, multiple users, or multiple sites
◼ On-line access: NFS 在线编辑
◼ Whole-file copying: FTP, TFTP 不会同步,下载后修改
TFTP (Trivial File Transfer Protocol)
没有访问控制/没有目录检索
最低开销(无安全)
为UDP设计,但可以与其他传输协议一起使用
Easy to implement
Packet Format
下载
上传
数据
服务器ACK
错误
Read request (RRQ)
01表示RRQ
filename 文件名加0(null)字符
mode文件传输模式
Write request (WRQ)
Data (DATA)
block表示数据编号
Data 定长 如果小于512,标识文件结尾
Acknowledgment (ACK)
block 对具体某个数据记录
Error (ERROR)
传输模式
Netascii - 用来传输文本文件
- 每一行都以
\r\n
结尾 - 提供传输文本的标准格式
- 传输完后会有响应
Octet - 用来传输二进制文件
- 不会把二进制文本翻译
重传
Symmetric
参与传输的两台机器都被认为是发送者和接收者。
一方发送数据并接收确认
另一个接收数据并发送确认
发送时启动定时器 每方执行超时和重传
如果一个数据包在网络中丢失,数据发送者会超时并重新传输最后一个数据包
如果确认丢失,确认发送方会重传上次的确认
stop and wait mechanism
guarantees that all older packets have been received
一个一个发
Duplicate data packets must be recognized (ignored) and acknowledgment retransmitted
重复的数据包被确认但是不接收,并且返回ack
Sorcerer’s Apprentice Syndrome
当数据包的确认信息被延迟但没有丢失时,会导致过多的重传,从而导致数据包被传输两次。一旦开始,这个循环就会无限地继续下去,每个数据包都会被传输两次。
带宽浪费
How to fix SAS
Sender should not resend a data packet in response to a duplicate ACK
收到重复ACK不发data
If sender receives ACK[n] - don’t send DATA[n+1] if the ACK was a duplicate
(收到重复data,还会返回ACK)
TFTP Example
Both sides use timers
Simple stop and wait mechanism provides reliable delivery and flow control
A block of less than512 bytes signals the end of the file
FTP
FTP 特征
- 用来在两个host之间传输文件
- 用来操作文件
- 打印目录
- 删除
- 重命名
- ==使用TCP==
user commands
将FTP command封装:
◼ Open connection to remote host
◼ ftp hostname
◼ open hostname
◼ Log into server (provide username and password)
◼ user [username [password]]
◼ Set file transfer mode (such as ASCII or image)
◼ type type-code
◼ stru and mode commands used to alter transfer
◼ Transfer files (using get or put commands)
◼ get remote-file [local-file]
◼ put local-file [remote-file]
get用来获取,put用来发送
◼ mget and mput commands used to transfer ** ** (such as * to transfer all of a directory)
◼ Perform other file operations
◼ delete, rename, mkdir, rmdir, ls, dir, …
◼ Exit client (quit) or close connection (close)
先要用用户名和密码进行登录
登陆成功后:
进入了
>
之后,表示可以进入使用pwd
:显示当前目录路径ls
:显示当前目录下的内容
FTP Model
PI 协议解析器:把user commend转为FTP commend
每文件传输一次,data connection 建立一次,使用完就拆除
FTP Client
◼ Users interact with Client directly
◼ Active open of control connection
◼ Control connection uses ASCII plain-text
◼ Sends commands (over control connection)
◼ Receives replies (over control connection)
◼ Data connection used to transfer file data
FTP Server
◼ System process
◼ “Listens” for connection on well-known port 21
◼ Receives commands
◼ Sends replies
PI (Protocol Interpreter): The user and server sides of the protocol have distinct roles implemented in a user-PI and a server-PI. 协议的用户端和服务器端在user- pi和server- pi中实现了不同的角色。
DTP (Data Transfer Process): The data transfer process establishes and manages the data connection. The DTP can be passive or active. 【有主动模式和被动模式】只针对data connection
Control Connection: 交换命令和应答 follows the Telnet Protocol.
Data Connection: 一种全双工连接,在其上以指定的模式和类型传输数据。所传输的数据可以是一个文件的一部分、整个文件或多个文件。路径可以在服务器- dtp和客户机- dtp之间,也可以在两个服务器- dtp之间。
Overview of an FTP Transfer
active mode : server主动建立
a)由User发起跟Server通过Control Process【双方之间的与建立连接相同的进程,可以看成两边的PI】建立连接
(b)连接建立之后,client发送account name
(c)用户发送password
(d)用户指定要下载文件名
(e)用户和server分别建立data process。在第11步才开始建立数据连接,在active mode中,data connection是由server发起建立的。主动模式就是由server主动进行连接。
(f,g)在data connection之上传输数据
(h)16,17,18,19。16是server开始关闭data connection,17是用户回ack,18用户关process,19用户关process
control connection永远是client建立。
data connection分主被动
FTP Control Connection & Data Connection
Control Connection的时间是很长的,只要用户还在使用FTP,那么Control Connection就会存在。用来协调client端的端口
Data Connection只在数据传输时候建立,每一个数据连接都会在一个文件传输完成后马上关掉。
FTP Control Commands
- 通常四个字符(如RETR)
- 由空格分隔的参数
- 由CR/LF序列终止
- 从client-PI发送到server-PI
- 客户端程序将请求转换为必要的命令和响应
三个命令组
- Access Control
- Transfer Parameter
- Service
Access Control
- 表示用户名:
USER
- 表示密码:
PASS
- 标识account:
ACCT
- 更改目录:
CWD
- 返回上级目录(返回parent directory):
CDUP
- 返回上级目录(返回parent directory):
- 重启:
REIN
- 结束:
QUIT
Transfer parameter
Define data connection port:
–used in active mode, telling FTP server the port number of client to accept data connection
client发此命令,server进入active状态,把信息发给server,server可以和client建立数据连接(server主动建立连接,所以client主动告知端口和IP)
client端建立连接,需要server提供地址和端口
client发PASV,server回地址+端口
用于确定传输的文本类型:
TYPE type-code
A
表示ASCII,用于文本文件【默认】转化为/r/n结尾I
表示Image,用于二进制文件指明file structure:
STRU structure-code
F
表示File(以EOF终止的连续字节)整个文件【默认】R
为Record(EOR终止)P
为Page(indexed pages)文件分页
指明file mode:
MODE mode-code
S
用于stream 按字节流传【默认】B
用于block 文件分块C
用于compressed 压缩
Service
- 检索得到文件:
RETR
- 存文件:
STOR
- 添加文件:
APPE
- 删除文件:
DELE
- 创建文件夹:
MKD
- 删除文件夹:
RMD
- 重命名文件夹:
RNFR
/RNTO
- 查看当前目录下的文件:
LIST
/NLST
- 其他:
HELP
/SITE
/SYST
FTP Control Replies
Every command must generate at least one reply
三个数字code + 描述文字
如果文本消息的最后一行,分隔符为空格
分隔符如果不是短信的最后一行,则是连字符
第二位代表和什么相关
主动模式
21 control
20 data
客户端设置为在一个独特的端口上“监听
客户端使用本地套接字信息向服务器发送PORT命令(应该是六个数)
服务器以“200”回复确认端口号
客户端发送RETR、STOR或其他传输命令(发送具体连接命令后才启动数据连接的建立过程)
服务器建立数据连接
client回一个ack表示正式建立data connection
在控制连接中回一个reply
通过数据连接发送的文件数据
服务器发送“226”或其他回复
服务器/客户端关闭数据连接
被动模式
==server的端口也是临时分配的== 不是20了
客户端发送命令PASV
server返回227并返回他的端口
服务器监听一个特定的端口,客户端应该访问该端口
主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口
client请求建立data 连接
Traditional FTP vs. Anonymous FTP
最后几个看书