ftp协议分析(一)
網(wǎng)址:http://www.xiaojb.com/archives/it/ftp.shtml
根據(jù)是使用port模式還是passive模式,ftp使用不同的tcp端口號(hào),在詳細(xì)描述ftp前,我們來(lái)簡(jiǎn)單討論一下tcp端口號(hào)的一些基本概念。tcp使用端口號(hào)來(lái)標(biāo)識(shí)所發(fā)送和接收的應(yīng)用,端口號(hào)可以幫助tcp來(lái)分離字節(jié)流并且?guī)拖鄳?yīng)字節(jié)傳遞給正確的應(yīng)用程序。
tcp端口號(hào)可以是半永久的和暫時(shí)的。服務(wù)器端監(jiān)聽(tīng)在半永久的端口上來(lái)讓客戶端訪問(wèn)。客戶端使用暫時(shí)的端口在本地標(biāo)識(shí)一個(gè)對(duì)話,客戶端端口只在使用tcp服務(wù)時(shí)候才存在,而服務(wù)器端口只要服務(wù)器在運(yùn)行就一直在監(jiān)聽(tīng)。
tcp端口可以歸為3類:
1、眾所周知的端口來(lái)標(biāo)識(shí)在tcp上運(yùn)行的標(biāo)準(zhǔn)服務(wù),包括ftp、http、elnet、smtp等,這些端口號(hào)碼范圍為0-1023;
2、注冊(cè)端口號(hào)用來(lái)標(biāo)識(shí)那些已經(jīng)向iana(internet assigned numbers assigned numbers authority)注冊(cè)的應(yīng)用,注冊(cè)端口號(hào)為1024-49151;
3、私有端口號(hào)是非注冊(cè)的并且可以動(dòng)態(tài)地分配給任何應(yīng)用,私有端口為49152-65535;注冊(cè)的端口號(hào)本來(lái)打算只給注冊(cè)的應(yīng)用使用,
ftp port模式和ftp passive模式
當(dāng)你對(duì)一個(gè)ftp問(wèn)題進(jìn)行排錯(cuò)時(shí)候,你首先要問(wèn)的一個(gè)問(wèn)題是使用的是port模式的還是passive模式。因?yàn)檫@兩種行為迥異,所以這兩種模式引起的問(wèn)題也不同;在過(guò)去,客戶端缺省為active(port)模式;近來(lái),由于port模式的安全問(wèn)題,許多客戶端的ftp應(yīng)用缺省為passive模式。
2.1 ftp port模式
port模式的ftp步驟如下:
1、 客戶端發(fā)送一個(gè)tcp syn(tcp同步)包給服務(wù)器段眾所周知的ftp控制端口21,客戶端使用暫時(shí)的端口作為它的源端口;
2、 服務(wù)器端發(fā)送syn ack(同步確認(rèn))包給客戶端,源端口為21,目的端口為客戶端上使用的暫時(shí)端口;
3、 客戶端發(fā)送一個(gè)ack(確認(rèn))包;客戶端使用這個(gè)連接來(lái)發(fā)送ftp命令,服務(wù)器端使用這個(gè)連接來(lái)發(fā)送ftp應(yīng)答;
4、 當(dāng)用戶請(qǐng)求一個(gè)列表(list)請(qǐng)求或者發(fā)起一個(gè)要求發(fā)送或者接受文件的請(qǐng)求,客戶端軟件使用port命令,這個(gè)命令包含了一個(gè)暫時(shí)的端口,客戶端希望服務(wù)器在打開(kāi)一個(gè)數(shù)據(jù)連接時(shí)候使用這個(gè)暫時(shí)端口;port命令也包含了一個(gè)ip地址,這個(gè)ip地址通常是客戶自己的ip地址,而且ftp也支持第三方(third-party)模式,第三方模式是客戶端告訴服務(wù)器端打開(kāi)與另臺(tái)主機(jī)的連接;
5、 服務(wù)器端發(fā)送一個(gè)syn包給客戶端的暫時(shí)端口,源端口為20,暫時(shí)端口為客戶端在port命令中發(fā)送給服務(wù)器端的暫時(shí)端口號(hào);
6、 客戶端以源端口為暫時(shí)端口,目的端口為20發(fā)送一個(gè)syn ack包;
7、 服務(wù)器端發(fā)送一個(gè)ack包;
8、 發(fā)送數(shù)據(jù)的主機(jī)以這個(gè)連接來(lái)發(fā)送數(shù)據(jù),數(shù)據(jù)以tcp段(注:segment,第4層的pdu)形式發(fā)送(一些命令,如stor表示客戶端要發(fā)送數(shù)據(jù),retr表示服務(wù)器段發(fā)送數(shù)據(jù)),這些tcp段都需要對(duì)方進(jìn)行ack確認(rèn)(注:因?yàn)閠cp協(xié)議是一個(gè)面向連接的協(xié)議)
9、 當(dāng)數(shù)據(jù)傳輸完成以后,發(fā)送數(shù)據(jù)的主機(jī)以一個(gè)fin命令來(lái)結(jié)束數(shù)據(jù)連接,這個(gè)fin命令需要另一臺(tái)主機(jī)以ack確認(rèn),另一臺(tái)主機(jī)也發(fā)送一個(gè)fin命令,這個(gè)fin命令同樣需要發(fā)送數(shù)據(jù)的主機(jī)以ack確認(rèn);
10、 客戶端能在控制連接上發(fā)送更多的命令,這可以打開(kāi)和關(guān)閉另外的數(shù)據(jù)連接;有時(shí)候客戶端結(jié)束后,客戶端以fin命令來(lái)關(guān)閉一個(gè)控制連接,服務(wù)器端以ack包來(lái)確認(rèn)客戶端的fin,服務(wù)器同樣也發(fā)送它的fin,客戶端用ack來(lái)確認(rèn)。
下圖圖示了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 連接初始化,數(shù)據(jù)端口) |
| syn |
| port yyyy <———————- port 20 |
| syn+ack |
| port yyyy ———————-> port 20 |
| ack |
| port yyyy <———————- port 20 |
| |
| |
| (數(shù)據(jù)操作: 數(shù)據(jù)傳輸) |
| data + ack |
| port yyyy <———————> port 20 |
| . |
| . |
| . |
| |
\====================================================================/
june 29th, 2007 at 23:43
| (控制操作: 用戶列目錄或傳輸文件) |
| |
| port, ip, port yyyy |
| port xxxx port 21 |
| |
第一個(gè)我覺(jué)得方向錯(cuò)了,不知道說(shuō)的對(duì)不對(duì)?
leave a replyname (required)
mail (will not be published) (required)
website
spam protection: sum of 6 + 8 ?
轉(zhuǎn)載于:https://www.cnblogs.com/kangderui/archive/2010/01/05/1639327.html
總結(jié)
以上是生活随笔為你收集整理的ftp协议分析(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一步步学习SPD2010--词汇表
- 下一篇: 郭霖LitePal