1 FTP 协议实验报告 实验目的 1、在 Linux 系统上完成一个文件传输协议(FTP)的简单实现。 2、深入理解 FTP 协议的原理和协议细节。 3、学会利用 Socket 接口设计实现简单应用层协议。 4、掌握 TCP/IP 网络应用程序的基本设计方法和实现技巧。 实验原理 1、FTP 协议 FTP 是 File Transfer Protocol,即文件传输协议的缩写。该协议用于在两台计算机之间传送文件。FTP 会话包括了两个通道,一个是控制通道,一个是数据通道。控制通道是和 FTP服务器进行沟通的通道,连接 FTP 服务器,发送 FTP 指令;数据通道则是和 FTP 服务器进行文件传输或者获取文件列表的通道。 FTP 协议中,控制连接的各种指令均由客户端主动发起,而数据连接有两种工作方式:主动方式 (PORT 方式)和被动方式(PASV 方式)。主动方式下,FTP 客户端首先和 FTP 服务器的控制通道对应端口(一般为 21)建立连接,通过控制通道发送命令,客户端需要接收数据的时候在这个通道上发送 PORT 命令。PORT 命令包含了客户端用什么端口(一个大于 1024 的端口)接收数据。在传输数据的时候,FTP 服务器必须和客户端建立一个新的连接,服务器通过自己的TCP 20 端口发送数据。被动方式下,建立控制通道的过程和主动方式类似,当客户端通过这个通道 发送 PASV 命令的时候,FTP server 打开一个位于 1024-5000之间的随机端口并且通知客户端,然后客户端与服务器之间将通过这个端口进行数据的传送。 2、socket 编程 (1)什么是 Socket Socket 接口是 TCP/IP 网络的API,Socket 接口定义了许多 函 数或例 程。网络的 Socket数据传输是一种特 殊 的I/O,Socket 也 是一种文件描 述 符 。 (2)Socket 的建立 为了建立 Socket,程序可 以 调 用 Socket 函 数,该函 数返 回 一个 socket 描 述 符 。Socket描 述 符 是一个指向 内 部 数据结 构 的指针 ,它 指向 描 述 符 表入口。调 用 Socket 函 数时,socket执 行体 将建立一个 Socket,实际 上"建立一个 Socket"意 味 着 为一个 Socket 数据结 构 分 配 存 储空 间。Socket 执 行体 为你 管 理描 述 符 表。两个网络程序之间的一个网络连接包括五 种信 息 :通信 协议、本地 协议地 址 、本地 主机端口、远 端主机地 址 和远 端协议端口。Socket 数据结 构中包含这五 种信...