ftp協議分析(一)

作者: 肖建彬 | 可以轉載, 轉載時務必以超鏈接形式標明文章原始出處和作者信息及版權聲明
網址:http://www.xiaojb.com/archives/it/ftp.shtml

根據是使用port模式還是passive模式,ftp使用不同的tcp端口號,在詳細描述ftp前,我們來簡單討論一下tcp端口號的一些基本概念。tcp使用端口號來標識所發送和接收的應用,端口號可以幫助tcp來分離字節流并且幫相應字節傳遞給正確的應用程序。

  tcp端口號可以是半永久的和暫時的。服務器端監聽在半永久的端口上來讓客戶端訪問。客戶端使用暫時的端口在本地標識一個對話,客戶端端口只在使用tcp服務時候才存在,而服務器端口只要服務器在運行就一直在監聽。

tcp端口可以歸為3類:

  1、眾所周知的端口來標識在tcp上運行的標準服務,包括ftp、http、elnet、smtp等,這些端口號碼范圍為0-1023;

  2、注冊端口號用來標識那些已經向iana(internet assigned numbers assigned numbers authority)注冊的應用,注冊端口號為1024-49151;

  3、私有端口號是非注冊的并且可以動態地分配給任何應用,私有端口為49152-65535;注冊的端口號本來打算只給注冊的應用使用,

ftp port模式和ftp passive模式

  當你對一個ftp問題進行排錯時候,你首先要問的一個問題是使用的是port模式的還是passive模式。因為這兩種行為迥異,所以這兩種模式引起的問題也不同;在過去,客戶端缺省為active(port)模式;近來,由于port模式的安全問題,許多客戶端的ftp應用缺省為passive模式。

2.1 ftp port模式

port模式的ftp步驟如下:

  1、 客戶端發送一個tcp syn(tcp同步)包給服務器段眾所周知的ftp控制端口21,客戶端使用暫時的端口作為它的源端口;

  2、 服務器端發送syn ack(同步確認)包給客戶端,源端口為21,目的端口為客戶端上使用的暫時端口;

  3、 客戶端發送一個ack(確認)包;客戶端使用這個連接來發送ftp命令,服務器端使用這個連接來發送ftp應答;

  4、 當用戶請求一個列表(list)請求或者發起一個要求發送或者接受文件的請求,客戶端軟件使用port命令,這個命令包含了一個暫時的端口,客戶端希望服務器在打開一個數據連接時候使用這個暫時端口;port命令也包含了一個ip地址,這個ip地址通常是客戶自己的ip地址,而且ftp也支持第三方(third-party)模式,第三方模式是客戶端告訴服務器端打開與另臺主機的連接;

  5、 服務器端發送一個syn包給客戶端的暫時端口,源端口為20,暫時端口為客戶端在port命令中發送給服務器端的暫時端口號;

6、 客戶端以源端口為暫時端口,目的端口為20發送一個syn ack包;

7、 服務器端發送一個ack包;

  8、 發送數據的主機以這個連接來發送數據,數據以tcp段(注:segment,第4層的pdu)形式發送(一些命令,如stor表示客戶端要發送數據,retr表示服務器段發送數據),這些tcp段都需要對方進行ack確認(注:因為tcp協議是一個面向連接的協議)

  9、 當數據傳輸完成以后,發送數據的主機以一個fin命令來結束數據連接,這個fin命令需要另一臺主機以ack確認,另一臺主機也發送一個fin命令,這個fin命令同樣需要發送數據的主機以ack確認;

  10、 客戶端能在控制連接上發送更多的命令,這可以打開和關閉另外的數據連接;有時候客戶端結束后,客戶端以fin命令來關閉一個控制連接,服務器端以ack包來確認客戶端的fin,服務器同樣也發送它的fin,客戶端用ack來確認。

下圖圖示了ftp port模式前幾步步驟:
/====================================================================\
| |
| [ ftp client ] [ ftp server ] |
| |
| (tcp:21 連接初始化,控制端口) |
| syn |
| port xxxx ———————-> port 21 [tcp] |
| syn+ack |
| port xxxx <———————- port 21 |
| ack |
| port xxxx ———————-> port 21 |
| |
| (控制操作: 用戶列目錄或傳輸文件) |
| |
| port, ip, port yyyy |
| port xxxx <———————- port 21 |
| port seccussful |
| port xxxx <———————- port 21 |
| list, retr or stor |
| port xxxx ———————-> port 21 |
| |
| |
| (tcp:20 連接初始化,數據端口) |
| syn |
| port yyyy <———————- port 20 |
| syn+ack |
| port yyyy ———————-> port 20 |
| ack |
| port yyyy <———————- port 20 |
| |
| |
| (數據操作: 數據傳輸) |
| data + ack |
| port yyyy <———————> port 20 |
| . |
| . |
| . |
| |
\====================================================================/

one response to “ftp協議分析(一)” linuxfool says:
june 29th, 2007 at 23:43

| (控制操作: 用戶列目錄或傳輸文件) |
| |
| port, ip, port yyyy |
| port xxxx port 21 |
| |

第一個我覺得方向錯了,不知道說的對不對?

leave a reply

name (required)

mail (will not be published) (required)

website

spam protection: sum of 6 + 8 ?

轉載于:https://www.cnblogs.com/kangderui/archive/2010/01/05/1639327.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276238.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript 元編程

大家好&#xff0c;我是若川。今天給分享一篇來自freecodecamp的好文。我是freecodecamp杭州社區組織者之一&#xff0c;有一群小伙伴一起組織線下分享活動&#xff0c;不過2020年我們杭州社區幾乎沒有活躍&#xff0c;我也沒有什么貢獻。另外&#xff0c;我的公眾號「若川視野…

python 異常處理模塊_擴展Python模塊系列(五)----異常和錯誤處理

在上一節中&#xff0c;討論了在用C語言擴展Python模塊時&#xff0c;應該如何處理無處不在的引用計數問題。重點關注的是在實現一個C Python的函數時&#xff0c;對于一個PyObject對象&#xff0c;何時調用Py_INCREF和Py_DECREF。在編寫C語言代碼時&#xff0c;需要了解Python…

常見的php筆試題(附答案)搜集整理

轉載鏈接&#xff1a;http://www.yaojinbu.com/p/139.html 常見的php筆試題&#xff08;附答案&#xff09;搜集整理 1.在PHP中&#xff0c;當前腳本的名稱&#xff08;不包括路徑和查詢字符串&#xff09;記錄在哪個預定義變量中&#xff1f;而鏈接到當前頁面的URL又記錄在哪個…

Js整理備忘(02)——運算符

1、運算符的表示以及優先級 Javascript&#xff08;以下簡寫為Js&#xff09;的大部分運算符與C或Java是類似的。 記得剛學C語言時老師講的優先級口訣&#xff0c;非常好記&#xff1a;“括、單、算、移、關”“位、邏、條、賦、逗”&#xff0c;此處也可以套用一下&#xff0c…

手寫一個合格的前端腳手架

為什么我們需要一套腳手架為什么我們需要一套腳手架&#xff0c;它能幫助我們解決哪些痛點問題。?前端項目配置越來越繁瑣、耗時&#xff0c;重復無意義的工作?項目結構不統一、不規范?前端項目類型繁多&#xff0c;不同項目不同配置&#xff0c;管理成本高?腳手架也可以是…

第一篇cnblog!

本人才疏學淺&#xff0c;終于通過了cnblog的審核&#xff0c;興奮之余&#xff0c;發表感言——不容易啊&#xff01;在我的博聞里面&#xff0c;隨筆類當然就是技術類的比較多的&#xff0c;特別是實例類的。理論類的大部分放在文章板塊&#xff0c;本人e文特別好(哈哈&#…

解決error 1045: Access denied for user: 'root@localhost' (Using password: YES)

轉載連接&#xff1a;http://jianfw2009.blog.163.com/blog/static/13431366020111016112459158/ 1、先停止mysql服務2、在mysql的目錄下找到my.ini&#xff0c;在[mysqld]后面加上skip-grant-tables3、啟動mysql服務,打開Command Line Client以空密碼登錄4、退出mysql,并停止服…

fillcolor是什么意思_fill是什么意思

1. (使)裝滿;(使)注滿;(使)充滿If you fill a container or area, or if it fills, an amount of something enters it that is enough to make it full.e.g.Fill a saucepan with water and bring to a slow boil...往平底鍋里加滿水,小火煮沸。e.g.She made sandwiches, fill…

利用JMeter進行壓力測試(1)(轉)

轉自&#xff1a;http://www.cnblogs.com/game-over/archive/2010/01/08/1642685.html壓力測試以軟件響應速度為測試目標&#xff0c;尤其是在較短時間內大量并發用戶的同時訪問時&#xff0c;軟件的性能和抗壓能力。 JMeter是一款開源的壓力測試工具&#xff0c;目前最新Rele…

MyISAM InnoDB 區別

轉載鏈接&#xff1a;http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 講解 InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型&#xff0c;這兩個表類型各有優劣&#xff0c;視具體應用而定。基本的差別為&#xff1a;MyISAM…

Git 內部原理圖解——對象、分支以及如何從零開始建倉庫

我們中的許多人每天都在使用 git&#xff0c;但是有多少人知道它的內部是怎么運作的呢&#xff1f;例如我們使用 git commit 時發生了什么&#xff1f;提交&#xff08;commit&#xff09;與提交之間保存的是什么&#xff1f;兩次提交之間難道只是文件的差異&#xff08;dif…

wpsmac和pc版的區別_Mac版WPS Office和微軟Office 2019哪個更好?

眾所周知&#xff0c; macOS系統生態下&#xff0c;有許多界面精美、功能強大、體驗出色的軟件&#xff0c;但提到辦公套件&#xff0c;人們首先想到的還是微軟 Office 套件&#xff0c;其中的Word、 Excel 以及PPT&#xff0c;但用戶體驗并不如意。但現在&#xff0c;蘋果用戶…

A tutorial video for MindManager for free

MindManager 2016 for Windows Essential Training 本人學習的時候使用的是MindManager 2018版本的&#xff0c;和2016版本差異不大。 轉載于:https://www.cnblogs.com/kelamoyujuzhen/p/10253278.html

Google, 請不要離開我們!

雖然我是.net陣營, 力挺Silverlight, 但是我真心希望谷歌留在中國, 如果她能夠靠談判求的言論自由的權利, 那將對中國的擁有自由信仰的一族產生重大的影響. 谷歌離開了中國, 不是她想拋棄中國市場, 而是中國決策者背叛了人性. 在此留下 Google 2010年1月14日的logo, 智慧的幽默…

高級php面試題及部分答案

轉載鏈接&#xff1a;http://www.2cto.com/kf/201304/201112.html 一. 基本知識點 1.1 HTTP協議中幾個狀態碼的含義:503 500 401 403 404 200 301 302。。。 200 : 請求成功&#xff0c;請求的數據隨之返回。 301 : 永久性重定向。 302 : 暫時行重定向。 401 : 當前請求需要用…

iec104點號_IEC104報文流程(有常用類型標識解釋)

參數地址圍類別97版基地址2002版基地址遙信1H------400H1H------4000H遙測701H------900H4001H------5000H遙控B01------B806001H------6100H設點B81H------C00H6201H------6400H電度C01H------C80H6401H------6600H遙測和遙信個數不設置上限&#xff0c;可以沒有上限限制&…

本周ASP.NET英文技術文章推薦[04/08 - 04/14](附贈自彈超級瑪麗主題曲)

摘要 本期共有6篇文章&#xff1a; ASP.NET編譯問題的公開Hotfix補丁 期待下個版本AjaxPro 的發布 在ASP.NET 2.0中使用MultiView控件實現多頁面表單 數據綁定的技巧&#xff1a;嵌套Eval語句 在ASP.NET 2.0中訪問并更新數據&#xff1a;使用數據源控件以編程方式訪問數據 AD…

一個離開某門戶網站人員自爆黑幕

去年&#xff0c;我已在星星發表了一個關于免費發短信的各類軟件的黑幕所在。而事實上的SMS&#xff08;即短信&#xff09;的黑幕遠不止于此&#xff0c;今天&#xff0c;我終于有空坐下來&#xff0c;把其中的一些讓你感覺平常卻實際觸目驚心的事情告訴你們&#xff0c;讓你們…

28歲自學3年前端成功轉行的勵志故事

為什么轉行因為混得不好。在成為程序員之前&#xff0c;我干過很多工作。由于學歷的問題&#xff08;高中&#xff09;&#xff0c;我的工作基本上都是體力活。包括但不限于&#xff1a;工廠普工、銷售&#xff08;沒有干銷售的才能&#xff09;、搬運工、擺地攤等&#xff0c;…

css中!important的作用

轉載鏈接&#xff1a;http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html css中!important的作用 {*rule !important}這個css規則當今在網頁制作的時候的普及已經非常流行了&#xff0c;以前我對它的理解就停留在‘瀏覽器是否識別階段’ 而沒有真正去研究過&am…