美文网首页
FTP 网络协议学习

FTP 网络协议学习

作者: 普通的程序员 | 来源:发表于2020-02-02 14:53 被阅读0次

    目录

    • 协议基础
    • 对比
    • 使用踩坑

    协议基础

    File Transport Protocal

    使用FTP协议实际上是去访问远端服务器的文件系统,使用TCP的20, 21端口建立连接。

    • FTP基于TCP/IP 协议,面向连接,属于应用层协议。
    • FTP需要两个端口的原因是,需要建立控制链路&数据链路。
    • 21端口是控制端口,20是数据端口,但是20端口可能用不到,涉及主动/被动模式。

    建立控制链路后,该链路一直保持,而数据链路是不保持的。
    服务器需要记录连接者的状态(体现在控制链的响应码上)

    命令跟响应码
    https://blog.csdn.net/bear_huangzhen/article/details/41806903

    支持的文件类型:

    • 1.ASCII码文件类型(默认选择),以NVT ASCII码形式通过数据连接传输;
    • 2.EBCDIC文件类型。该文本文件传输方式要求两端都是EBCDIC系统;
    • 3.图像文件类型(也成为二进制文件类型),数据发送形式呈现为一个连续的比特流。

    支持的数据结构:

    • 1.文件结构(File Structure)字节流,无结构;
    • 2.记录结构(Record Structure)文件被划分为记录,用于文本文件;
    • 3.页结构(Page Structure)文件被划分为页,每页有页号和页头。可以进行随机存取或顺序存取。

    支持的传输方式:

    • 1.流模式:数据以字节流的形式传送
    • 2.块模式:文件以块的形式传送,块带有自己的头部分。头字节包括16位计数域和8位描述子代码
    • 3.压缩模式:压缩模式中,因为数据是压缩过的,对于增加带宽有很多好处。

    FTP的建立连接,是需要账户&密码的,但是也支持匿名连接,
    原理是远程计算机建立了名为anonymous的用户特殊ID,任何人在任何地方都可使用该用户ID,下载文件,而无需成为其注册用户。
    匿名FTP主机的连接使用方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,其口令可以是客户端自己喜欢的任意字符串。

    FTP连接的特点就是,分两种模式
    一种是主动模式

    • client 开启 N端口跟N+1端口(并不一定真的是相邻的两个端口,只是接近)
    • N端口与 server的 21端口建立控制连接,告诉server,N+1端口是我的数据端口
    • 控制链路建立成功,server 的20端口\color{red}{主动的} 去连接client 的N+1端口
    • 但是 client存在防火墙,很可能server主动来建立数据链路的方式,会被client挡住

    另一种被动模式

    • client 开启 N端口跟N+1端口(并不一定真的是相邻的两个端口,只是接近)
    • N端口与 server的 21端口建立控制连接
    • 控制链路建立,server开一个数据端口P(随机不冲突的端口),通过PORT指令告诉client
    • client用N+1端口与P建立数据连接
    • 这种就是 server\color{red}{被动的}建立的数据连接

    与Http对比

    相同点

    • 1.都是面向连接
    • 2.都基于TCP/IP 协议
    • 3.都属于应用层协议

    不同点

    FTP HTTP
    连接 两路连接,一路控制,一路数据 一路连接
    端口 21+20 80
    身份验证 需要 不需要
    数据流向 双向 单向
    状态 记录状态 无状态
    链接持久性 控制链持久链接,数据链非持久链接 默认持久(长链接)

    使用踩坑

    ftp Connection reset

    经常出现这种socket reset的问题,但是没找到根源

    https://stambia.org/kb/16-execution-issues/235-error-java-net-socketexception-connection-reset-when-executing-an-ftp-action

    相关文章

      网友评论

          本文标题:FTP 网络协议学习

          本文链接:https://www.haomeiwen.com/subject/exhqxhtx.html