- 浏览: 25833 次
- 性别:
- 来自: 北京
最新评论
当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。
TCP协议是一个面向连接的协议,中间很多交互传包;当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一 台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;
FTP Passive模式
下面的列表描述了Passive模式的FTP的步骤
1、客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使
用暂时的端口作为它的源端口;
2、服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用
的暂时端口;
3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个
连接来发送FTP应答;
4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端
表明客户端希望进入Passive模式;
5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端
在打开数据传输连接时应该使用的端口;
6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV
应答命令中指定的暂时端口号;
7、服务器端发送SYN ACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV
应答中指定的暂时端口号;
8、客户端发送一个ACK包;
9、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(
一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要
对方进行ACK确认;
10、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一
台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A
CK确认;
11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结
束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器
同样也发送它的FIN,客户端用ACK来确认。
下图图示了Passive模式FTP的开始几个步骤:
/====================================================================\
| |
| [ ftp Client ] [ ftp Server ] |
| |
| (TCP:21 连接初始化,控制端口) |
| SYN |
| Port xxxx ----------------------> Port 21 [TCP] |
| SYN+ACK |
| Port xxxx <---------------------- Port 21 |
| ACK |
| Port xxxx ----------------------> Port 21 |
| |
| (PASV操作: 被动连接数据端口初始化) |
| |
| PASV |
| Port xxxx ----------------------> Port 21 |
| PASV OK, IP, Port yyyy |
| Port xxxx <---------------------- Port 21 |
| SYN |
| Port zzzz ----------------------> Port yyyy |
| SYN+ACK |
| Port zzzz <---------------------- Port yyyy |
| ACK |
| Port zzzz ----------------------> Port yyyy |
| |
| |
| (数据操作: 数据传输) |
| List, Retr or Stor |
| Port xxxx ----------------------> Port 21 |
| Data + ACK |
| Port zzzz <---------------------> Port yyyy |
| . |
| . |
| . |
| |
\====================================================================/
一个PASV请求要求服务器在服务器选择的一个新的端口上接受数据连接,PASV命令没有任何参
数,服务器端的回应只是一行显示服务器IP地址和服务器接受连接的TCP端口号。
下图显示了服务器对PASV命令的回应,服务器告诉客户端它在端口5365(192,168,179,100,20
,245)上进行监听,计算端口的方法是20*256+245=5365;
/====================================================================\
| TCP - Transport Control Protocol |
| Source Port: 21 ftp |
| Destination Port: 1249 |
| Sequence Number: 4239887193 |
| Ack Number: 36925357 |
| Offset: 5 (20 bytes) |
| Reserved: %000000 |
| Flags: %011000 |
| 0. .... (No Urgent pointer) |
| .1 .... Ack |
| .. 1... Push |
| .. .0.. (No Reset) |
| .. ..0. (No SYN) |
| .. ...0 (No FIN) |
| |
| Window: 8760 |
| Checksum: 0x3EAB |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| FTP Control - File Transfer Protocol |
| Line 1: PASV 192,168,0,1,100,20,245<CR><LF> |
| |
| FCS - Frame Check Sequence |
| FCS (Calculated): 0xBED4346D |
\====================================================================/
当收到PASV命令的回应后,客户端打开一个TCP连接,源端口为一个暂时的端口,目的端口为
服务器提供的暂时端口。
下图显示了客户端的TCP连接建立过程,正如上面所说,目的端口为5365。
/====================================================================\
| TCP - Transport Control Protocol |
| Source Port: 1250 |
| Destination Port: 5365 |
| Sequence Number: 36931503 |
| Ack Number: 0 |
| Offset: 7 (28 bytes) |
| Reserved: %000000 |
| Flags: %000010 |
| 0. .... (No Urgent pointer) |
| .0 .... (No Ack) |
| .. 0... (No Push) |
| .. .0.. (No Reset) |
| .. ..1. SYN |
| .. ...0 (No FIN) |
| |
| Window: 8192 |
| Checksum: 0x1A57 |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| TCP Options |
| Options Type: 2 Maxinum Segment Size |
| Length: 4 |
| MSS: 1460 |
| |
| FCS - Frame Check Sequence |
| FCS (Calculated): 0x5A1BD023 |
\====================================================================/
大多数人认为在防火墙网络环境中Passive模式比Port模式的问题小,但我们注意到在Passive
模式下,客户端打开一个暂时的目的端口连接,一些防火墙或者CISCO设备的访问列表(ACL)可
能会阻止这种连接,同样服务器的回应也是从一个暂时的端口到一个暂时的端口,防火墙或者
CISCO的访问列表也会阻止这种连接。在CISCO路由器上你可以用访问列表关键字"established
"来避免第二个问题,"established"关键字告诉路由器允许带ACK字端的包通过,服务器端的S
YN ACK包带有ACK字端。在新版本PIX IOS中也可以通过fixit关键字建立针对ftp协议的深层状
态检测过滤,其他大多数状态检测防火墙例如LinuxNetfilters也支持ftp协议的状态检测,进行
准确的PASV动态端口过滤。
发表评论
-
Android网络请求库——android-async-http
2013-05-14 16:58 0在iOS开发中有大名鼎鼎的ASIHttpRequest库, ... -
缓存管理
2013-02-27 17:04 776无论大型或小型应用 ... -
MediaProvider数据库模式:ICS的更改
2012-10-23 17:51 2684Android MediaProvider数据 ... -
我国首次IT审计师资格考试成绩不俗(11.4)
2012-09-06 22:42 6【时间:2003年01月23日】 【来源: ... -
ftp理论
2012-09-05 22:13 875当数据通过数据流传 ... -
aassssss
2012-08-20 21:23 008-20 21:22:40.890: INFO/Sys ... -
error
2012-07-04 21:11 0doInBackground ee4:bind fail ... -
sockt
2012-07-04 00:28 756这是一个简单的包含发送端和接收端的例子。发送端向接收端发 ... -
Android AsyncTask
2012-07-03 23:00 654在开发Android移动客户端的时候往往要使用多线程来进 ... -
log
2012-06-30 19:53 006-30 19:31:20.510: DEBUG/CDY(1 ... -
Wi-Fi Direct
2012-06-30 00:28 835http://stackoverflow.com/questi ... -
Wi-Fi Direct 10大问答
2012-06-13 00:09 1645Q:什么是Wi-Fi Direct?A:是新兴的Wi-Fi无线 ... -
Wi-Fi Direct ,让 DLNA 如虎添翼
2012-06-13 00:07 1072今天想分享的技术趋势话题,涉及两个关键字,WI-FI D ... -
Wi-Fi Direct变成标准
2012-06-13 00:04 1099三星宣布Galaxy S将能过升级的方式,成位第一款支持Wi- ... -
Wi-Fi Direct百科
2012-06-12 23:56 929Wi-Fi Direct简介 2010 ... -
Wi-Fi Direct与蓝牙4.0优缺点比较
2012-06-12 18:10 5459Wi-Fi Direct与蓝牙4.0速度比较 Wi-Fi ... -
Android 下使用 JSON 实现 HTTP 请求,外加几个示例!
2012-02-16 00:00 2449不得不说,JSON 格式的确是非常美妙的,速度快而且简化 ... -
JSON
2012-02-13 23:24 984http://www.apkbus.com/forum.p ... -
android Camera
2011-11-25 16:57 829/** * 拍照的回调接口 ... -
ftp协议的工作原理
2011-08-17 00:36 744FTP Transfer Protocol 件传输协议的缩写, ...
相关推荐
1. 网络协议:包括TCP/IP、HTTP、HTTPS、FTP、SMTP、DNS等网络通信协议的原理和应用。 2. Web技术:包括HTML、CSS、JavaScript等前端技术,以及可能涉及的后端技术如PHP、Python、Java等。 3. 数据库技术:可能会...
例如,理解OSI七层模型与TCP/IP四层模型的区别,了解IP地址和MAC地址的工作机制,以及熟悉HTTP、FTP、SMTP等常用应用层协议的功能。 通信专业实务部分则更加注重实际操作和应用,涵盖了互联网技术的实际应用、网络...
8. **网络与通信**:Windows CE支持多种网络协议,如TCP/IP,开发者需要知道如何实现网络功能,如HTTP、FTP等,以及如何实现设备间的通信。 9. **安全性**:在嵌入式系统中,安全性和隐私保护同样重要。了解如何在...
电子商务实务涵盖了网络工具的使用和网上银行两大主题。在网络工具的使用部分,主要讲解了如何有效地利用互联网进行文件传输和管理。学习目标包括掌握断点续传技术,理解FTP(文件传输协议)、远程登录和Gopher等...
这包括了解互联网的工作原理、熟悉常见的网络设备与协议,如路由器、交换机、HTTP、FTP等。学生需要学会如何设置和使用电子邮件系统,因为电子邮件是现代办公中必不可少的通讯工具。此外,理解和运用云存储服务,如...
7. **网络编程**:探索Delphi的网络编程功能,如TCP/IP通信,HTTP和FTP协议的实现,以及电子邮件处理。 8. **国际化和本地化**:学习如何使应用程序适应不同地区和语言,包括字符串资源和日期/时间格式的处理。 9....
《RedHat Linux 网络服务器构架实务(三)》是关于在Red Hat Linux操作系统上构建网络服务器的详细指南,特别关注系统开发和专业指导。以下内容将深入阐述其中的关键知识点: 1. **Resin服务器的安装与配置**: - ...
《2020通信专业中级实务-互联网技术知识点串讲汇总》 通信技术涉及众多复杂的概念,本篇文章将概述其中的重点知识,主要包括网络安全性、访问控制、数据通信、数据传输速率、传输方式以及差错控制。 首先,网络...
【互联网实务试题】 一、企业存储应用的体系结构主要分为三种模式:直连式存储(DAS)、网络连接存储(NAS)和存储区域网络(SAN)。DAS是直接连接到服务器的存储,有自己的文件系统,适合文件数据存储;NAS通过...
全书精选的网络服务包括D 、DHCP、Web、FTP、E-mail、远程管理、Telnet、 TP、即时通信、路由和代理服务。书中所有的任务建立在Windows XP/Server 2003系统平台中,以系统自带的服务器组件为主,同时精选了目前成熟...
【Windows 架站实务】是针对在Windows操作系统上构建网络服务器的全面教程,涵盖了从基础到高级的各种技术细节。这个37M的压缩包显然包含了丰富的教学资源,旨在帮助用户熟练掌握在Windows环境下搭建和管理网站的...
网站效能调整及实务应用主要关注的是提升Web服务器的性能,以优化用户体验,降低服务器资源消耗。这份PPT资料主要涵盖了IIS 5.0(Internet Information Server 5.0)的相关内容,这是一个由微软开发的Web服务器软件...
在《Visual C#.NET原理与实务》一书中,第5-9章涵盖了多个关键的IT知识点,这些章节深入探讨了C#.NET编程的核心概念和技术,包括网络编程、组件设计、XML技术、WEB应用程序开发以及数据库编程。以下是这些章节的详细...
- **应用层**:提供应用程序之间的交互,如HTTP、FTP等。 - **传输层**:确保数据可靠传输,主要协议有TCP和UDP。 - **网络层**:负责数据包的路由选择,主要协议为IP。 - **网络接口层**:处理物理网络媒介上的...
通信工程师的初级实务知识中,首先需要了解的是计算机网络的基本组成和通信协议。因特网是由众多计算机网络互联组成的,其中最重要的是基于TCP/IP协议族来实现网间通信。TCP/IP协议族是一个分层的协议系统,最核心...
总的来说,高级工程师资格考试的通信专业综合能力及实务涵盖了计算机网络的基础理论、协议机制以及网络互连设备的工作原理,考生需要深入理解这些概念并能应用于实际问题解决。熟悉和掌握这些知识点对于通过考试至关...
不同的销售方式(如FTP下载、电子邮件发送、网站发布等)使得收入确认的时间和条件各异,收入与成本的配比原则难以统一。对于著作类商品,如电子书籍,存在将其收入视为销售还是使用费的争议。此外,新兴的销售模式...
它不仅能审计SQL语句,还可以监控通过FTP、TELNET等协议的远程访问,确保全方位的数据安全。 在学习和应用会计学时,数据库审计的概念同样重要。会计学是一门需要精确无误的学科,对数据的严谨处理和安全管理是其...
Redhat Linux 服务器配置实务涉及一系列的步骤,涵盖了操作系统安装、桌面环境设置、网络服务配置、数据库和Web服务器的安装以及应用的安装与调试。以下是这些步骤的详细说明: 1. **RedHat 7.2 安装**: - 分区...
* 网络协议的定义和分类:网络协议是指用于实现网络通信的规则和标准,分为TCP/IP协议、HTTP协议、FTP协议等。 * 网络协议的作用:实现网络通信、数据传输、资源共享等。 * 网络协议的类型:包括传输层协议、网络层...