| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP/IP详解 卷1:协议 学习笔记 第二十七章 FTP:文件传送协议 -> 正文阅读 |
|
[网络协议]TCP/IP详解 卷1:协议 学习笔记 第二十七章 FTP:文件传送协议 |
FTP是用于文件传输的Internet标准。 文件传送是FTP提供的功能,文件存取是如NFS等应用系统提供的功能。由FTP提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。要使用FTP,需要服务器的注册账号,或服务器允许匿名FTP。 就像Telnet,FTP设计用于两台不同的主机,这两个主机可能运行在不同的操作系统下,使用不同的文件结构,并可能使用不同的字符集,但Telnet实现异构性是强制两端都采用同一个标准,即使用7bit ASCII码的NVT,而FTP使用另一种方法处理不同系统间的差异。 FTP支持有限数量的文件类型(如ASCII、二进制)和文件结构(面向字节流或记录)。 FTP采用两个TCP连接来传输一个文件:
FTP协议对文件传送的每一方面都提供了多种选择,以下方面中每个方面都必须做出一个选择: 以上所有选择的排列组合很多,但很多不是废弃了就是不为多数实现所支持,通常由Unix实现的FTP客户和服务器把选择限制如下: 以上选择满足主机需求RFC(Host Requirements RFC)的最小要求(该RFC也要求支持记录结构,但只有操作系统支持它才行,而Unix不支持)。 FTP命令和应答在控制连接上以NVT ASCII码形式传送,这要求在每个命令或应答的结尾都要返回CR、FL对。
FTP应答都是ASCII码形式的3位数字,并跟有报文选项,FTP命令是字符串而应答是数字的原因在于,命令的选项串是面向人工处理的。 FTP的应答3位码中前两位的含义: 通常每个FTP命令都产生一行应答,如QUIT命令的应答为: 控制连接保持客户-服务器连接的全过程,但数据连接可根据需要随时建立和断开。由于Unix环境下FTP只允许流方式传输文件且文件结尾是以关闭数据连接为标志,因此对每一个文件传输或目录列表都要建立一个全新的数据连接,过程如下:
建立数据连接时,客户也可能不发出PORT命令,而由服务器向客户的控制连接的端口号发出主动打开,来结束控制连接。 FTP客户会向服务器发送Telnet命令(以IAC打头)来终止正在进行的文件传输或在传输过程中查询服务器,FTP中,客户只会发中断进程( FTP建立连接: 以上过程的时间序列,已省去连接建立和结束过程和所有窗口大小通知: 客户可以不发送PORT,这可能发生在服务器不接受PORT命令时(此时服务器会使用默认的数据端口),此时使用sendport命令可关闭建立数据连接时客户向服务器发送PORT命令。 以下是控制连接建立在svr4的端口1176上,且发送两个连续LIST命令的数据连接时间序列,且客户不发PORT命令(这使得客户的数据连接的端口号也是控制连接的端口1176),两次数据连接建立时两端都使用了相同的端口号: Host Requirements RFC建议使用PORT命令的原因在于在两个相继使用的数据连接之间避免出现这个2MSL。通过不停改变某一端的端口号,可避免以上问题。 证明默认的文本文件传输使用NVT ASCII码,此次ftp不使用-d选项查看客户发送的命令,但客户还是会打印服务器的响应: 客户可确认服务器与自己是否是相同系统,一旦相同,就可以直接用二进制码(图像文件类型)传送,而不是使用ASCII码,好处如下: 另一台主机bsdi上的ftp,确定了双方的系统类型,使用-d启动debug方式查看客户的ftp命令: Host Requirements RFC指出一个FTP服务器必须支持SYST命令,但支持它的系统仅有BSD/386和AIX 3.2.2,SunOS 4.1.3和Solaris 2.x用500(不能理解的命令)来应答。 异常终止客户传向服务器的文件很容易,只要客户停止在数据连接上发送数据,并发送ABOR命令(关闭数据连接)到控制连接上的服务器即可。 如果客户想让服务器停止传输文件,需要使用Telnet的同步信号,如以下例子,先发起一个文件接收,并在开始传输后键入中断键:
尽管服务器指出传输已被异常终止(报文段18),但客户进程还接收到了14个报文段的数据(序列号是1537~5120),这可能是由于在服务器收到这些异常中止时,这些数据还在网络设备驱动器中排队,但客户打印收到1536字节,表示异常中止后,略去收到的所有数据报文段。 匿名FTP允许任何人传输文件,要使用匿名FTP,用户名需使用anonymous,密码为空。 DNS的指针查询可用一个IP地址获取主机名,但有些系统管理员会忘记将新加入的主机信息加入到IP地址到主机名的映射文件中,因此,traceroute中经常可看到打印IP地址而非主机名的现象。 有些匿名FTP要求客户有一个有效域名,这样服务器可以记录下此域名。由于服务器从客户的IP数据报中收到的关于客户的唯一标识是客户的IP地址,所以服务器会用DNS做指针查询,如果负责客户主机的域名服务器没有正确创立,指针查询将失败。以下匿名连接时连接失败的原因就是如上所述: |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:20:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |