我在FTP協議(RFC959)中看到這樣的幾句:
The server shall initiate the data connection from his own default
data port (L-1) using the specified user data port(U).
這裡是指服務器應該從L-1(20)端口連結到客戶端的數據端口(U)嗎?但是服務器應該會為很多客戶端服務,而從一個端口應該只能做一個連接.
所以請問這句話如何正確解釋.

解决方案 »

  1.   

    这个是指特殊情况下(比如客户端和服务器间存在某种防火墙阻止从客户端直接连接服务器的情况)客户端和服务器可以协商一个端口号,然后从服务器端发起连接,向客户端请求建立一个socket,然后传递数据。
    协议中使用的命令应该是PASV(记不清了,你最好再查查文档验证一下)
      

  2.   

    協議中的說法似乎不是這樣的.缺省的連接應該是服務器主動連接,而pasv所做的被動連接並不是必須實現的命令.
    我在上面摘錄的英文是在RFC959-5.2CONNECTIONS一章的一開始就提到的,所以應該是最基本的連接方式。
      

  3.   

    FTP 连接一般服务器使用21端口和客户端进行控制信息的传递,
    但是在进行数据传递,例如传递一个文件、列目录等操作,一般需要建立一个数据传递的连接,具体情形如下:
    1、客户端发送PORT 指令,制定本地的IP地址和临时端口号;然后listen
    2、服务器通过端口20和客户端通过PORT制定的地址和端口连接;
    3、通过这个新连接传递数据;
    4、数据传递结束后,服务器通过21端口向客户端传递控制信息:文件已经传递完成,然后断开这个连接。
      

  4.   

    步骤应该是这样的:
    1、客户端首先与服务器的21号端口进行连接,并得到一个临时的端口号
    2、一旦连接成功后,客户端通过这个临时的端口号发送PORT命令,告诉服务器与它的数据端口号(重新生成的空闲端口号)进行连接
    3、客户端从自己的数据端口上读出服务器发送的数据
    4、服务器在发送完数据后将关闭数据连接,但控制连接还在
    5、客户端在退出前,如果再次使用类似dir命令时,将重复2
      

  5.   

    根据RFC959中提供的模型,分为命令控制连接和数据传送连接,这两个连接都是双向的连接。不管是PASV模式还是主动连接模式,服务器和客户端都是在协商后在分配的端口号上建立连接的。在PASV模式下服务器动态建立一个监听端口等待客户端的连接。欢迎使用Crob FTP Server
    下载: http://www.crob.net/studio/ftpserver_cn/
    [email protected]
    http://www.crob.net