其實這篇文章本來打算寫 p2p 協議的,結果發現寫 p2p 協議的時候,需要寫 ftp 協議,然後寫完之後發現已經寫了很多了.
好吧,這篇文章就先來寫 ftp 協議,下篇文章再寫 p2p 協議.
先來乙個場景:
ftp 的兩種工作模式(詳細講講這部分)
主動模式( port )下, ftp 連線步驟:
1 ,客戶端隨機開啟乙個大於 1024 的埠 n ,同時乙個 ftp 程序連線至伺服器的 21 的命令埠.此時,我們來梳理一下,源埠為客戶端的隨機埠 n ,遠端埠為伺服器端的埠 21 ;
2 ,客戶端開始監聽埠 ( n + 1 ),同時向伺服器傳送乙個埠命令(通過伺服器的 21 命令埠),這條命令就是為了告訴伺服器客戶端正在監聽的埠號並且已準備好從這個埠接收資料;
3 ,伺服器開啟 20 埠,並且建立和客戶端資料埠的連線,然後向伺服器傳送乙個應答,告訴伺服器,已經建立好了乙個連線.
看似完美,但是其實是有個問題的,比如客戶端的資料埠,防火牆並沒有開放,那麼你就沒辦法完成資料的傳輸.
這也是被動模式( pasv )想要解決的問題.
被動模式( pasv )下, ftp 連線步驟:
這種模式,是在客戶端通知伺服器,它處於被動模式時才啟用.
在被動方式 ftp 中,命令連線和資料連線都由客戶端發起,這樣就可以解決從伺服器到客戶端的資料埠的連線被防火牆過濾掉的問題.
1 ,當開啟乙個 ftp 連線時,客戶端開啟兩個任意的非特權本地埠( n>1024 和 n+1 );
2 ,開啟兩個埠之後,第乙個埠連線伺服器的 21 埠,與主動方式的 ftp 不同,客戶端不會提交 port 命令並允許伺服器來回連它的資料埠,而是提交 pasv 命令;
3 ,此時,伺服器會開啟乙個任意的非特權埠 (p > 1024)並傳送 port p 命令給客戶端.然後客戶端發起從本地埠 n+1 到伺服器的埠 p 的連線用來傳送資料.
對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的 ftp :
1 ,從任何大於 1024 的埠到伺服器的 21 埠(客戶端的初始化連線);
2 ,伺服器的 21 埠到任何大於 1024 的埠(伺服器響應到客戶端的控制埠的連線);
3 ,從任何大於 1024 埠到伺服器的大於 1024 埠(客戶端初始化資料連線到伺服器指定的任意埠);
4 ,伺服器的大於 1024 埠到遠端的大於 1024 的埠(伺服器傳送 ack 響應和資料到客戶端的資料埠)
總結一下,上面所說的那些.
在網路傳輸中,如果想要使用 ftp 協議,如果不是大神,玩的不是很 6 ,建議選擇被動模式,一般情況下,能滿足需求;
如果您是大神,玩的超級 6 ,當我上面什麼都沒說~
計算機網路學習筆記 FTP協議
tcp ip協議族中的乙個用來在客戶機與伺服器之間進行簡單檔案傳輸的協議,提供不複雜 開銷不大的檔案傳輸服務 檔案傳輸協議file transfer protocol,ftp是應用層的乙個檔案傳輸協議,使用 tcp 傳輸而不是 udp,客戶在和伺服器建立連線前要經過乙個 三次握手 的過程,保證客戶與...
計算機網路 協議
網路檔案服務 在nfs的應用中,本地nfs的客戶端應用可以透明地讀寫位於遠端nfs伺服器上的檔案,就像訪問本地檔案一樣。snmp network management protocol 簡單網路管理協議 能夠使網路管理員提高網路管理效能,及時發現並解決網路問題以及規劃網路的增長 smtp mail ...
計算機網路 計算機網路7層協議
人與人交流需要協議,例如使用同一語言,或者對方能明白的其他肢體語言 人與機器交流也需要協議,例如需要通過滑鼠或者鍵盤輸入,機器給予特定的輸出,例如列印執行某個程式 機器與機器交流更需要協議,計算機網路是由一系列的協議構成的,osi open system interconection 是開放型系統互...