FTP协议报文详解及FTP穿越NAT 1、拓扑图 2、FTP协议简介 3、FTP工作原理 4、问题思考 5、FTPipv4和ipv6的区别

目录

 

1、拓扑图

2、FTP协议简介

3、FTP工作原理

3.1、主动连接(PORT)

3.2、被动连接(PASV)

3.3、FTP主动模式穿越SNAT原理

3.4、FTP被动模式穿越DNAT原理

4、问题思考

4.1、主动模式和被动模式是谁决定的

4.2、主动模式和被动模式是怎么协商出端口

4.3、设想中间防火墙怎么识别子连接并给子连接放行

4.4、思考NAT设备如何给子连接做地址转换

4.5、下载两个文件,会每个文件开一个数据连接么

4.6、列出目录,服务器发送目录列表,会使用数据连接传输么

5、FTPipv4和ipv6的区别


FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

 

2、FTP协议简介

FTP 英文全称:File Transfer Protocol,中文全称:文件传输协议

提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。

3、FTP工作原理

FTP采用C/S架构,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务,FTP服务器检查有两大部分组成:一个主进程,负责接收新的请求,另外有若干的从属进程,负责处理单个请求,工作步骤如下:

  1. 建立TCP连接
  2. 打开熟知端口21(控制端口),使客户进程能够连接上
  3. 等待客户进程发链接请求。
  4. 启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
  5. 回到等待状态,继续接收其他客户进程的请求。

3.1、主动连接(PORT)

1、主动连接介绍

服务端通过制定端口号(20)主动与客户端建立数据连接,并向客户端发送数据。

以下报文是SNAT转换后的报文,源IP(10.10.10.2)转换成出接口IP地址(192.168.10.114)

2、报文拆分解释

2.1、报文1-3:TCP建立三次握手,建立连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

 

2.2、报文4:服务端(21端口)向客户端(49203端口)发送request报文。code字段表示新用户服务就绪,arg字段为服务器名称和服务器版本号

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

 

2.3、报文5:客户端(49203端口)向服务端(21端口)发送request报文。command字段表示该报文里包含的是用户名,arg字段为用户名内容。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

 

2.4、报文6:服务端(21端口)回复response报文,code值为331,表示用户名可以,需要密码

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.5、报文7:客户端(49203端口)向服务端(21端口)发送request报文,command字段表示该报文里包含的是密码,arg字段为密码内容。

 

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.6、报文8:服务端(21端口)回复response报文,code值为230,表示用户已登录,请继续操作

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.7、报文9:客户端(49203端口)向服务端(21端口)发送SYST报文,表示返回服务器使用的操作系统。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.8、报文10:服务端(21端口)回应系统类型,code字段为215,表示返回的是系统类型。arg字段为UNIX,表示系统类型是UNIX系统

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.9、包11:客户端(49203端口)请求系统状态

包12:服务端(21端口)回应系统状态,code字段为211,arg字段为特征列表FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.10、包15:客户端(49203端口)PWD获取当前路径

包16:服务端(21端口)返回当前路径

包17:客户端(49203端口)CWD更改目录

包18:服务端(21端口)返回修改后的目录

包19:客户端(49203端口)PWD获取当前路径

包20:服务端(21端口)返回当前路径

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.11、包21:客户端(49203端口)请求使用ascii传输

包22:服务端(21端口)响应,同意使用ascii传输

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

 

2.12、包23:客户端(49203端口)发起主动连接,向服务端发送建立子连接的IP和端口

包24:服务端(21端口)响应,同意使用客户端发送的IP端口建立子连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.13、包26-28:FTP子连接三次握手建立TCP连接。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.14、包:30-32:服务端(20端口)向客户端(49204端口)发送数据。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.15、包33-37:数据传输完成,TCP断开连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.16、包60-63:控制连接已断开,TCP四次挥手断开TCP连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

3.2、被动连接(PASV)

1、被动连接介绍

服务端采用客户端建议使用被动模式,开启数据传输端口的监听,被动等待客户端的连接然后向客户端发送数据。

以下报文是SNAT转换后的报文,源IP(10.10.10.2)转换成出接口IP地址(192.168.10.114)

2、报文拆分解释

2.1、TCP三次握手建立TCP连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.2、报文4:服务端(21端口)向客户端(49206端口)。code字段表示新用户服务就绪,arg字段为服务器名称和服务器版本号

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.3、报文5:客户端(49206端口)向服务端(21端口)发送request报文。command字段表示该报文里包含的是用户名,arg字段为用户名内容。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.4、报文6:服务端(21端口)回复response报文,code值为331,表示用户名可以,需要密码

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.5、报文7:客户端(49206端口)向服务端(21端口)发送request报文,command字段表示该报文里包含的是密码,arg字段为密码内容。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.6、报文8:服务端(21端口)回复response报文,code值为230,表示用户已登录,请继续操作

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.7、报文9:客户端(49206端口)向服务端(21端口)发送SYST报文,表示返回服务器使用的操作系统。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.8、报文10:服务端(21端口)回应系统类型,code字段为215,表示返回的是系统类型。arg字段为UNIX,表示系统类型是UNIX系统

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.9、包11:客户端(49206端口)请求系统状态

包12:服务端(21端口)回应系统状态,code字段为211,arg字段为特征列表

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.10、包15:客户端(49206端口)PWD获取当前路径

包16:服务端(21端口)返回当前路径

包17:客户端(49206端口)CWD更改目录

包18:服务端(21端口)返回修改后的目录

包19:客户端(49206端口)PWD获取当前路径

包20:服务端(21端口)返回当前路径

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.12、包23:客户端(49206端口)向服务端请求建立被动连接

包24:服务端(21端口)响应,同意建立被动连接,并且向客户端发送服务端的IP和监听端口

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.13、包26-28:FTP子连接三次握手建立TCP连接。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.14、包:32-33:服务端(20端口)向客户端(49207端口)发送数据。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.15、包34-36:数据传输完成,TCP断开连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2.16、包59-62:控制连接已断开,TCP四次挥手断开TCP连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

3.3、FTP主动模式穿越SNAT原理

主动模式穿越SNAT主要用于FTP服务端在公网,客户端需要通过SNAT转换访问服务端。

1、FTP客户端通过防火墙的SNAT访问FTP服务端时使用主动模式。

2、当客户端发送PORT报文到服务端时,报文内的active ip address字段为10.10.10.2,active port字段为49217

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

3、当穿越SNAT的时候,SNAT会把active ip address字段和active port字段改为转换后的IP和端口

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

4、服务端收到经过SNAT后的PORT报文后,会给192.168.10.114发送响应报文。

5、响应报文经过链接跟踪表,转发给客户端。

3.4、FTP被动模式穿越DNAT原理

被动模式穿越DNAT主要用于FTP服务端在私网,客户端需要通过DNAT转换后访问服务端。

1、FTP客户端访问防火墙的10.10.10.1,进行DNAT转换,转换目的IP为192.168.10.114

2、当客户端发送PASV报文到服务端后,服务端返回自己的监听IP和端口,passive ip address字段是192.168.10.115,passive port字段是62443

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

3、当穿越DNAT的时候,DNAT会把passive ip address字段和passive port字段改为转换后的IP和端口

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

4、客户端收到转换后的响应报文后,和转换后的响应报文进行建立数据连接

 

4、问题思考

4.1、主动模式和被动模式是谁决定的

主动模式和被动模式是由客户端决定的,客户端请求建立数据连接时,发送PVSA报文,服务端就会建立被动连接;当客户端发送PORT报文时,服务端就会建立主动连接。

4.2、主动模式和被动模式是怎么协商出端口

主动模式协商端口

1、客户端使用任意一个的非熟知权端口N(N>1024)与服务端建立FTP控制连接,然后客户端开始监听N+1端口。客户端向服务端21端口发送PORT报文,PORT报文里包含客户端监听的IP和N+1端口。

2、服务端收到客户端的PORT报文后,使用客户端发送的IP和N+1端口与客户端建立数据连接。

被动模式协商端口

  1. 客户端开启FTP连接时,会打开两个任意的非熟知端口(N > 1024和N+1)。N端口连接服务器的21端口。
  2. 客户端发送PVSA报文给服务端
  3. 服务器会开启一个任意的非熟知端口(P > 1024),并发送响应报文给客户端响应报文包含服务端IP和端口号P。
  4. 客户端发起从本地端口N+1到服务器的端口P建立数据连接。

4.3、设想中间防火墙怎么识别子连接并给子连接放行

被动模式:

  1. 客户端开启FTP连接时,会打开两个任意的非熟知端口(N > 1024和N+1)。N端口连接服务器的21端口。
  2. 客户端发送PVSA报文给服务端。
  3. 服务器会开启一个任意的非熟知端口(P > 1024),并发送响应报文给客户端,响应报文包含服务端子连接IP和端口P。
  4. 防火墙收到服务端的响应后,获取响应报文中子连接的IP和端口P。
  5. 客户端发起从本地端口N+1到服务器的子连接IP、端口P建立数据连接。
  6. 防火墙收到客户端发送的报文目的IP是子连接IP后,允许转发,并转发给服务器。

4.4、思考NAT设备如何给子连接做地址转换

主动模式:

  1. 客户端使用任意一个的非熟知端口N(N>1024)与服务端建立FTP控制连接
  2. 客户端监听N+1端口。
  3. 客户端向服务端21端口发送PORT报文建立子连接,PORT报文里包含客户端监听的IP和N+1端口。
  4. NAT设备获取PORT报文内的客户端IP和N+1端口
  5. NAT设备修改PORT报文内的客户端IP和N+1端口为自己的IP和端口,生成动态NAT
  6. 服务端收到客户端的PORT报文后,使用NAT转换后的IP和端口与客户端建立数据连接。
  7. NAT设备收到后,访问转换后的IP和端口,根据动态NAT转换为客户端子连接的IP和N+1端口,发送给客户端。

4.5、下载两个文件,会每个文件开一个数据连接么

FTP同时下载两个文件,FTP会为每个文件打开一个数据连接。


1、下载文件test.txt,开启一条数据连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

2、下载文件test1.txt,开启另一条数据连接

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

4.6、列出目录,服务器发送目录列表,会使用数据连接传输么

会使用数据连接发送目录列表,当数据连接建立完成后,服务器会向客户端发送当前路径和目录列表内容。

FTP协议报文详解及FTP穿越NAT
1、拓扑图
2、FTP协议简介
3、FTP工作原理
4、问题思考
5、FTPipv4和ipv6的区别

5、FTPipv4和ipv6的区别

控制连接请求(被动模式)

IPv4使用PASV建立控制连接。PASV报文response报文的code字段为227(进入被动模式),arg字段为监听IP和端口。

IPv6使用EPSV建立控制连接。EPSV报文response报文的code字段为229(进入被动模式),arg字段为监听端口

控制连接请求(主动模式)

IPv4使用PORT建立控制连接。请求时携带监听的IPv4地址和端口。PART报文response报文返回200

IPv6使用EPRT建立控制连接。请求时携带监听的IPv6地址和端口。EPRT报文response报文返回200