網絡中經常將文件從一台計算機中復制到另一台可能很遠的計算機中,在此過程中會有很多問題:
1 計算機的存儲格式不同
2 文件的目錄結構不同和文件命的規定不同
3 對於相同的文件存取功能,操作系統指令不同
4 訪問控制櫃方法不同
文件傳輸協議FTP只提供文件傳輸的基本服務,他使用TCP可靠的運輸服務,FTP的主要功能是減少或消除,由於操作系統不同造成的文件的不兼容性
FTP使用客戶服務器方式,服務器可以同時為多個客戶進程服務,FTP的服務進程有主進程(接收新的請求)和從屬進程(處理單個請求).步驟如下
1 客戶端請求打開熟知端口(21)連接服務器
2 服務器打開熟知端口(21)使客戶進程能夠連接
3 等待客戶進程發出連接請求
4 啟動從屬進程來處理客戶進程發出的請求。從屬進程對客戶的請求處理完畢后關閉,但 從屬進程可能在運行期間還創建其他的子進程
5 回到等待狀態,繼續接受其他客戶進程發來的請求,主進程與從屬進程的處理是並行的進行
在進行文件傳輸時FTP的客戶和服務器之間,要建立兩個並行的TCP連接:“控制連接”和“數據連接‘。控制連接在整個回話期間一直保持打開,FTP客戶所發出的傳送請求
通過控制連接發送給服務器端的控制進程,但控制進程並不用來傳送文件,實際用於傳送文件的是”數據連接’,服務器的控制進程是在接收到FTP客戶發送的文件傳輸請求
后就創建“數據傳送進程”和“數據連接”,用來連接客戶端和服務端的數據傳送進程.數據傳送進程實際完成文件的傳送,在傳送完畢后關閉“數據傳送連接”並結束運行。由於
FTP使用一個分離的控制連接因此FTP控制連接是帶外傳送的。
當客戶進程向服務器進程發出建立連接請求時,要尋找連接服務器進程的熟知端口號21,同時還要告訴服務器進程自己的熟知端口(20)與客戶進程提供的端口號碼進行
連接,由於服務器進程用自己的兩個不同的端口號 ,所以數據連接與控制連接不會發生混亂.
使用兩個獨立的連接的主要好處是是協議更加簡單和更容易實現,同時在傳輸文件時還可以利用控制連接(例如客戶發送請求終止傳輸)
FTP並非對所有文件傳輸都是最佳的沒,比如計算機A上運行的程序要在遠地計算機B的一個很大的文件末尾添加一行信息,若使用FTP則應先將此文件從B傳送到A上,添加
信息后在傳送到B,這樣花了很多時間.
然而網絡問價系統NFS則采用另一種思路,NFS允許應用進程打開一個遠地文件,並且能在該文件的某一特定位置上進行讀寫數據,這樣NFS可以是用戶只復制一個大文件
中的很小一個片段而不需要復制整個文件。對於上述例子計算機A中的NFS客戶軟件,把要添加的數據和文件后面寫數據的請求一起發送到遠地的計算機B中的NFS服務器
NFS服務器更新文件后返回應答信息,在網絡上傳送的只是少量的修改數據。