美文网首页
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 网络协议学习

    目录 协议基础 对比 使用踩坑 协议基础 File Transport Protocal 使用FTP协议实际上是去...

  • FTP漏洞原理及利用 - 系统安全漏洞

    FTP协议介绍 文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行...

  • 网络协议

    网络协议 网络的五层划分是什么? 应用层,常见协议:HTTP、FTP 传输层,常见协议:TCP.UDP 网络层,常...

  • Java程序员TCP 协议到底怎么学?学了到底有什么用?

    TCP协议目前是事实上的网络基础。许多更高层的应用协议HTTP,FTP都基于TCP。 TCP协议的学习可以说枯燥无...

  • HTTP知识总结

    1.网络模型 应用层、传输层、网络层、数据链路层、物理层 网络层:HTTP协议、FTP协议、DNS 协议 传输层...

  • 接口测试(三)

    常见协议 http 超文本传输协议https 安全超文本传输协议ftp 文件传输协议tcp 网络控制协议ip 互联...

  • 网络 -- FTP协议简介

    FTP(File Transfer Protocol)协议简介 FTP只提供文件传送的一些基本的服务,它使用TCP...

  • FTP搭建

    什么是FTP ftp是文件传输协议,用于在网络上传输文件的协议,可以简单理解为ftp是一个服务器,我们可以把文件上...

  • 计算机网络题目

    几种协议分别属于哪一层传输层协议:TCP协议、UDP协议应用层协议:FTP、HTTP、SMTP网络层协议:IP协议...

  • 利用Swoole实现PHP+websocket 聊天室

    websocket Websocket只是一个网络通信协议就像 http、ftp等都是网络通信的协议;不要多想;相...

网友评论

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

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