張靖笙,張靖笙講師,張靖笙聯(lián)系方式,張靖笙培訓(xùn)師-【中華講師網(wǎng)】
張靖笙 2019年度中國(guó)50強(qiáng)講師
數(shù)字化轉(zhuǎn)型、大數(shù)據(jù)、工業(yè)4.0、人工智能、智能制造、區(qū)塊鏈
54
鮮花排名
0
鮮花數(shù)量
張靖笙:對(duì)互聯(lián)網(wǎng)協(xié)議標(biāo)準(zhǔn)的分析
2016-01-20 50652

Internet協(xié)議的分析方法

張靖笙舊作

       

  摘要:本文介紹了Internet的標(biāo)準(zhǔn)協(xié)議和分析方法。介紹Internet協(xié)議文件RFC,并作為舉例分析了FTP協(xié)議

  關(guān)鍵字:RFC Internet協(xié)議

   前言

     近年來(lái),Internet正以令人眩目的速度增長(zhǎng),這個(gè)增長(zhǎng)包括Internet這個(gè)網(wǎng)絡(luò)規(guī)模和與之相關(guān)的技術(shù),規(guī)模的增長(zhǎng)帶來(lái)Internet技術(shù)的廣泛普及,使其中的如IP,TCP,HTTP,FTP,TELNET,HTML,NNTP等等毫無(wú)爭(zhēng)議地成為事實(shí)的標(biāo)準(zhǔn),同時(shí)又給以上技術(shù)提出新的要求和為其發(fā)展帶來(lái)了直接的動(dòng)力;技術(shù)的不斷提高又克服了一個(gè)又一個(gè)網(wǎng)絡(luò)相聯(lián)出現(xiàn)的難題和障礙,技術(shù)和應(yīng)用的相互促進(jìn),使人類(lèi)文明能在事實(shí)上的邁入類(lèi)信息社會(huì)。

    隨著Internet的不斷擴(kuò)大,發(fā)展的無(wú)序化日益嚴(yán)重,Internet的標(biāo)準(zhǔn)化無(wú)疑對(duì)保證Internet及相關(guān)技術(shù)健康發(fā)展起了決定性作用。

    在這里作者對(duì)Internet標(biāo)準(zhǔn)組織,Internet標(biāo)準(zhǔn)化過(guò)程,Internet標(biāo)準(zhǔn)文件等做個(gè)簡(jiǎn)單的介紹,希望能提供給讀者一個(gè)直接快速地深入了解Internet的方法,同時(shí)鼓吹一種深入核心技術(shù)和融入世界規(guī)范的思想。

 

 1 描述Internet協(xié)議的官方文件 RFC(Request For Comment)

    1.1 什么是RFC

     Internet的開(kāi)發(fā)和研究中,產(chǎn)生了一系列技術(shù)協(xié)議(protocol),而其中一些被Internet的標(biāo)準(zhǔn)化機(jī)構(gòu)采用,解析這些協(xié)議的文件被稱(chēng)為RFC(request forcomments),中文意思是請(qǐng)求評(píng)注。由于RFC包含了一系列文件,所以下文用RFCs表示這一系列的文件。這些文件是關(guān)于Internet標(biāo)準(zhǔn)的最權(quán)威的定義,是INTERNET OFFICIAL PROTOCOL STANDARDS,參見(jiàn)RFC-2400。

    RFCs原本是Internet研究和開(kāi)發(fā)社團(tuán)--"網(wǎng)絡(luò)工作組"(Network Working Group)的工作筆記,一篇文件可能是關(guān)于計(jì)算機(jī)通訊技術(shù)的一些話(huà)題的論文,也可能是關(guān)于確定一個(gè)標(biāo)準(zhǔn)的會(huì)議的報(bào)告。雖然所有標(biāo)準(zhǔn)以RFC的形式公布,但并不是說(shuō),所有的RFC文件所描述的協(xié)議都是已經(jīng)確定的Internet標(biāo)準(zhǔn)。下文會(huì)討論到協(xié)議的不同分類(lèi)。

     由于許多RFC文件本身就是技術(shù)文檔,所以它們的技術(shù)參考價(jià)值非常高,而且由于用語(yǔ)規(guī)范,可讀性也非常強(qiáng)。

    RFCs是按編寫(xiě)的時(shí)間順序編號(hào)的,當(dāng)一篇文件成為RFC后,被分配一個(gè)RFC編號(hào)后,這個(gè)編號(hào)不會(huì)被其他文件使用,即使文件修改和重新發(fā)表也不會(huì)使用同一個(gè)RFC編號(hào),所以當(dāng)一個(gè)Internet協(xié)議(FTP)被改進(jìn)后,可能因而產(chǎn)生RFCs中的許多不同版本的文件,所以當(dāng)您研究一個(gè)協(xié)議時(shí),注意它在RFCs中的最新版本。

    

    1.2 RFCs是如何產(chǎn)生的

     RFCs文檔由Internet中的標(biāo)準(zhǔn)化機(jī)構(gòu)-因特網(wǎng)活動(dòng)委員會(huì)IAB(InternetActivities Board) 負(fù)責(zé)編輯管理和發(fā)表。這里不對(duì)IAB做詳細(xì)介紹,有興趣請(qǐng)參閱RFC-1160 "TheInternet Activities  Board"RFC-1601 "Charter of theInternet Architecture Board (IAB)" IAB下屬有因特網(wǎng)工程特別任務(wù)組IETF(Internet Engineering Task Force)因特網(wǎng)研究特別任務(wù)組IRTF(Internet ResearchTask Force),這兩個(gè)任務(wù)組各有一個(gè)領(lǐng)導(dǎo)組被稱(chēng)做IESG (Internet EngineeringSteering Group)IRSG(Internet Research SteeringGroup)。大部分的Internet協(xié)議的開(kāi)發(fā)和標(biāo)準(zhǔn)化活動(dòng)在IETF的工作組中進(jìn)行。

     一篇RFC的發(fā)表必須得到IESG的同意,對(duì)于一些記錄實(shí)驗(yàn)工作的文章,編輯者在發(fā)表前通知了IESG,由相關(guān)的IETF工作組或IRTF研究組檢討并向作者提供評(píng)價(jià)意見(jiàn)。

   

 2 協(xié)議的分類(lèi)(categorization)

     這里有兩個(gè)Internet協(xié)議的分類(lèi)依據(jù),其中一個(gè)根據(jù)是協(xié)議的成熟程度(maturity level)或在標(biāo)準(zhǔn)化程序中的階段(STATE ofstandardization),分為標(biāo)準(zhǔn)(standard),草案標(biāo)準(zhǔn)(draft standard),被提議的標(biāo)準(zhǔn)(proposed standard),實(shí)驗(yàn)(experimental),情報(bào)(informational),歷史(historic)。另外一個(gè)根據(jù)協(xié)議的需求程度(requirement level)或協(xié)議的地位(STATUS),分為必需(required),推薦(recommended),可選(elective),限制使用(limited use),不推薦(not recommanded)。

     在所有情況中,一個(gè)協(xié)議處于以下組合中的一種情況,表格中的X個(gè)數(shù)表示一種組合的可能性大小。一個(gè)新的協(xié)議一般從提議標(biāo)準(zhǔn),可選(proposedstandard,elective)或?qū)嶒?yàn),限制使用(experimental,  limited use)開(kāi)始。

           

Required

Recommended

Elective

Limited

Not

Standard

X

XXX

XXX

 

 

Draft standard

X

X

XXX

 

 

Proposed std

 

X

XXX

 

 

Experimental

 

 

 

XXX

 

Informational

 

 

 

 

 

Historic

 

 

 

 

XXX

 

2.1協(xié)議STATE的定義

    1)標(biāo)準(zhǔn)協(xié)議(StandardProtocol)

     IESG同意這些協(xié)議作為Internet中正式標(biāo)準(zhǔn)協(xié)議,具體包括兩組(1)IP協(xié)議和通用于整個(gè)Internet的其他協(xié)議。(2)特定網(wǎng)絡(luò)協(xié)議(network-specific protocol),一般是如何在特定網(wǎng)絡(luò)實(shí)現(xiàn)IP的說(shuō)明書(shū)。

    2)草案標(biāo)準(zhǔn)協(xié)議(DraftStandard Protocol)

     IESG正積極地考慮把這些協(xié)議提升為標(biāo)準(zhǔn)協(xié)議(Standard Protocol)。這些協(xié)議還需要嚴(yán)格和廣泛的測(cè)試和評(píng)價(jià),評(píng)價(jià)和測(cè)試結(jié)果會(huì)被提交給IESG,協(xié)議在成為標(biāo)準(zhǔn)協(xié)議時(shí)可能需要修改。

    3)被提議標(biāo)準(zhǔn)化的協(xié)議(ProposedStandard Protocol)

      這是一些被IESG考慮納入標(biāo)準(zhǔn)化程序的協(xié)議。

    4)實(shí)驗(yàn)協(xié)議(ExperimentalProtocol)

     一般地,實(shí)驗(yàn)協(xié)議指那些作為一個(gè)研究中項(xiàng)目的一部分,除了一些與該研究有關(guān)的場(chǎng)合,一般不提倡使用,如果后來(lái)它們被提議標(biāo)準(zhǔn)化,才進(jìn)入標(biāo)準(zhǔn)化程序。

    5)情報(bào)性協(xié)議(InformationalProtocol)

     這是一些由其他標(biāo)準(zhǔn)化組織或廠商制定,或由于某種原因協(xié)議的內(nèi)容超出IESG權(quán)限(purview),RFC的形式發(fā)表只是為了Internet團(tuán)體的檢索方便。

    6)歷史協(xié)議(HistoricProtocol)

     這是一些因?yàn)楸恍录夹g(shù)淘汰或缺乏興趣發(fā)展而不能成為標(biāo)準(zhǔn)的協(xié)議,保留在RFC中只是作為歷史的見(jiàn)證。

       

2.2  協(xié)議Status的定義

   1)必需協(xié)議(RequiredProtocol)

     一個(gè)Internet上的系統(tǒng)(主機(jī)或網(wǎng)關(guān))必需實(shí)現(xiàn)的協(xié)議。

   2)推薦協(xié)議(RecommendedProtocol)

     一個(gè)Internet上的系統(tǒng)最好能實(shí)現(xiàn)推薦協(xié)議

   3)可選協(xié)議(ElectiveProtocol)

     一個(gè)Internet上的系統(tǒng)可以實(shí)現(xiàn)也可以不實(shí)現(xiàn)可選協(xié)議,取決于你自己是否愿意實(shí)現(xiàn)。這里可能有幾個(gè)可選協(xié)議在同一個(gè)普通領(lǐng)域,如幾個(gè)電子郵件協(xié)議和幾個(gè)路由協(xié)議。

   4)限制使用協(xié)議(LimitedUse Protocol)

     這些協(xié)議只在一些限定的環(huán)境內(nèi)應(yīng)用,可能由于他們屬于實(shí)驗(yàn)階段,或只適用在特殊的自然環(huán)境下,或因?yàn)槠涔δ苡邢?,或已?jīng)被淘汰,如歷史協(xié)議。

   5)不推薦使用協(xié)議(NotRecommanded Protocol)

     這些協(xié)議不被推薦使用。

 

 3 協(xié)議的標(biāo)準(zhǔn)化過(guò)程

         |

        +<----------------------------------------------+

         V   0                                         |    4

   +-----------+                                  +===========+

   |  enter  |-->----------------+-------------->|experiment |

   +-----------+                   |               +=====+=====+

                                   V    1                |

                             +-----------+               V

                             | proposed  |-------------->+

                       +--->+-----+-----+              |

                        |          V   2                |

                       +<---+-----+-----+              V

                             | draft std|-------------->+

                        +--->+-----+-----+               |

                        |          V   3                |

                       +<---+=====+=====+              V

                             | standard  |-------------->+

                             +=====+=====+               |

                                                        V    5

                                                  +=====+=====+

                                                  | historic  |

                                                   +===========+

     一個(gè)協(xié)議是否進(jìn)入標(biāo)準(zhǔn)化程序或在標(biāo)準(zhǔn)化程序中由一個(gè)階段(STATE)提升到另一個(gè)階段取決于IESG的推薦。圖中的單線(xiàn)框表示臨時(shí)過(guò)渡階段,雙線(xiàn)框表示長(zhǎng)期階段,一個(gè)協(xié)議一般保留在一個(gè)臨時(shí)階段數(shù)個(gè)月時(shí)間,proposed standard最少六個(gè)月,draft standard最少四個(gè)月,如果是長(zhǎng)期階段則可能保持?jǐn)?shù)年。

     圖中從(1)proposed standard階段到(2)draft standard階段,這行動(dòng)只能由IESG決定并且協(xié)議成為proposed standard至少六個(gè)月。

     (2)draft standard(3)standard也是只能由IESG決定并且協(xié)議成為draft standard至少四個(gè)月。

     如果協(xié)議不打算進(jìn)行標(biāo)準(zhǔn)化就會(huì)被放置到(4)experimental階段,該協(xié)議將脫離標(biāo)準(zhǔn)化程序,協(xié)議經(jīng)過(guò)進(jìn)一步完善后,需要重新提交加入標(biāo)準(zhǔn)化程序的申請(qǐng)。

     有時(shí)一個(gè)協(xié)議被其他協(xié)議取代,或感覺(jué)到將要被其他協(xié)議替代,于是成為(5)historic。     

 

 4 Internet協(xié)議的分析方法

     第一,尋找可以找到RFCs文件的地方

     有關(guān)Internet的問(wèn)題當(dāng)然最好在Internet中找答案,RFCs文件在Internet的許多地方可以找到,根據(jù)本人實(shí)踐,我發(fā)現(xiàn)以下站點(diǎn)對(duì)此組織得不錯(cuò),資料查找起來(lái)非常方便。

     https://www.cis.ohio-state.edu/hypertext/information/rfc.html

     第二,確定您所研究的協(xié)議的最新版本的RFC文件。

     如前文所述,在RFC-2400中有協(xié)議的完整清單,按照清單找到的RFC一般是協(xié)議的最新版本,如果協(xié)議的STATEStandard就更好了。如下文所分析的FTP協(xié)議的RFC文件是RFC-959

     第三,獲取RFC文件

     根據(jù)RFC文件編號(hào)查看以上站點(diǎn)的RFCs文件索引

     https://www.cis.ohio-state.edu/htbin/rfc/INDEX.rfc.html

     在里面您可以很快地找到您要找的RFC文件。

     第四,閱讀描述協(xié)議的RFC文件全文

     這不用說(shuō)了。

     第五,實(shí)踐

     實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),雖然Internet協(xié)議不是什么真理,但如果能實(shí)踐一下對(duì)理解和掌握都有好處,許多Internet應(yīng)用層的協(xié)議可視程度非常高,協(xié)議中許多控制和參數(shù)用英文短語(yǔ)來(lái)表示,所傳輸?shù)臄?shù)據(jù)如文本也是ASCII碼,如HTTP,FTP,這類(lèi)協(xié)議單純用Telnet就可以模擬一下客戶(hù)端程序的運(yùn)作,當(dāng)然,編程實(shí)現(xiàn)是最好的鍛煉。

     第六,總結(jié)

     總結(jié)確實(shí)是不錯(cuò)的學(xué)習(xí)方法,自己的文章是一面鏡子。

 

 5.舉例:FTP協(xié)議分析

  FTP協(xié)議的定義在 RFC-959 "FILE TRANSFERPROTOCOL"(Standard, Recommended)。

 5.1介紹  

   FTP 文件傳輸協(xié)議 (FileTransfer Protocol)      

     FTP協(xié)議是一個(gè)應(yīng)用層協(xié)議,在TCP上實(shí)現(xiàn)的。

     開(kāi)發(fā)FTP的目的是

     1)促進(jìn)文件(計(jì)算機(jī)程序和/或數(shù)據(jù))的共享。

     2)鼓勵(lì)對(duì)遠(yuǎn)程計(jì)算機(jī)間接或隱式(implicit)(通過(guò)程序)的使用。

     3)對(duì)用戶(hù)屏蔽不同主機(jī)系統(tǒng)中的文件儲(chǔ)存的細(xì)節(jié)。

     4)可靠和高效率地實(shí)現(xiàn)文件的傳送。

     用戶(hù)雖然可以直接通過(guò)一個(gè)終端使用FTP協(xié)議,FTP協(xié)議的設(shè)計(jì)主要是給程序使用的。

         

 5.2 FTP模型圖

       

                                            -------------

                                           |/---------\|

                                           ||   User  ||   --------

                                           ||Interface|<--->| User |

                                            |\----^----/|    --------

                  ----------                |     |    |

                  |/------\|  FTP Commands |/----V----\|

                 ||Server|<---------------->|  User  ||

                  ||  PI ||   FTP Replies  ||   PI   ||

                  |\--^---/|                |\----^----/|

                  |   |   |                |     |    |

      --------    |/--V---\|      Data     |/----V----\|    --------

      | File |<--->|Server|<---------------->|  User  |<--->| File |

      |System|    || DTP ||   Connection   ||  DTP   ||    |System|

      --------    |\------/|                |\---------/|    --------

                  ----------                -------------

 

                  Server-FTP                   USER-FTP

 

        : 1. 圖中的 data connection 可以被雙向使用。

            2. data connection不需要任何時(shí)間都存在。

     

5.3 術(shù)語(yǔ)解析 

    為了描述上的準(zhǔn)確,有關(guān)FTP術(shù)語(yǔ)出現(xiàn)的地方基本引用其英文原文,這里給出相應(yīng)的中文解釋?zhuān)瑑H僅為了方便讀者的理解。為了檢索方便,這里的術(shù)語(yǔ)是按照其原英文順序排列,一些前面沒(méi)有解析的術(shù)語(yǔ)請(qǐng)?jiān)诤竺嬲摇?/p>

  control connection 控制(信息)連接

    USER-PISERVER-PI之間交換FTP命令和回應(yīng)的通信通道,連接中傳送的信息符合Telnet協(xié)議(RFC-854)中的約定,在整個(gè)FTP使用過(guò)程中,控制連接是一直保持的。

  data connection 數(shù)據(jù)連接

     數(shù)據(jù)傳送中使用的全雙工連接,數(shù)據(jù)傳送有特定模式(mode)和類(lèi)型(type)。這里所說(shuō)的數(shù)據(jù)可能是一個(gè)文件的一部分,或一整個(gè)文件或多個(gè)文件。連接可能是Server-DTPUser-DTP之間,或兩個(gè)Server-DTPs之間,數(shù)據(jù)連接在需要傳送數(shù)據(jù)時(shí)才需要建立。 

  data port 數(shù)據(jù)端口

     當(dāng)有一個(gè)數(shù)據(jù)傳送的要求時(shí),DTP在數(shù)據(jù)端口監(jiān)聽(tīng),等待對(duì)方發(fā)來(lái)的連接請(qǐng)求以建立連接。

  data structures 數(shù)據(jù)結(jié)構(gòu)

     除了數(shù)據(jù)類(lèi)型(TYPE)外,FTP允許指定一個(gè)傳送中文件的結(jié)構(gòu),以便決定Server-FTP對(duì)文件的處理方式。在FTP中定義有三種文件結(jié)構(gòu)。

    file structure:文件沒(méi)有內(nèi)部結(jié)構(gòu),是一個(gè)連續(xù)的數(shù)據(jù)字節(jié)序列。

    record structure:文件數(shù)據(jù)按記錄形式組織,文件由連續(xù)的記錄組成。

    page structure:文件由獨(dú)立的含索引的數(shù)據(jù)頁(yè)組成。

  DTP data transfer process) 數(shù)據(jù)傳送進(jìn)程

     數(shù)據(jù)傳送進(jìn)程建立數(shù)據(jù)連接(data connection)和進(jìn)行文件數(shù)據(jù)的傳送。        

  FTP commands FTP命令集

    FTP命令集是由User-FTP發(fā)給Server-FTP的請(qǐng)求命令組成的集合。        

  mode(傳輸)模式

    數(shù)據(jù)通過(guò)數(shù)據(jù)連接(data connection)傳輸數(shù)據(jù)的模式,模式定義了數(shù)據(jù)在傳輸中的格式,有以下三種。

     stream mode 流模式

      文件以字符流的形式傳輸,數(shù)據(jù)在表示類(lèi)型上沒(méi)有限制。

     block mode 塊模式

      文件以數(shù)據(jù)塊的模式按順序傳輸,每個(gè)塊的開(kāi)頭的含表達(dá)控制信息的字節(jié)。

     compressed mode 壓縮模式

      傳輸?shù)臄?shù)據(jù)按照一定的格式被壓縮。      

    模式用MODE命令設(shè)置,一般缺省情況是stream。

 PI (protocolinterpreter)協(xié)議解釋器

    如上圖所示,PI是用戶(hù)端和服務(wù)器端實(shí)現(xiàn)和解釋FTP協(xié)議的部分,具體在用戶(hù)端(User-PI)實(shí)現(xiàn)FTP命令(FTP command)的發(fā)送和回應(yīng)的解釋?zhuān)诜?wù)器端實(shí)現(xiàn)FTP命令的解釋執(zhí)行和回應(yīng)(reply)的返回。一般的常見(jiàn)FTP客戶(hù)端軟件(User-PI)上還有用戶(hù)界面(User-Interface),普通用戶(hù)不用直接面對(duì)FTP命令和回應(yīng)。實(shí)際例子中,簡(jiǎn)單的用戶(hù)界面如現(xiàn)在各種操作系統(tǒng)提供的ftp程序的命令交互,復(fù)雜如諸如Bullet FTP,Cute FTP等產(chǎn)品的圖形界面。最簡(jiǎn)單的情況可用Telnet程序來(lái)使用,但缺點(diǎn)是沒(méi)法產(chǎn)生User-DTP,所以實(shí)際上無(wú)法直接實(shí)現(xiàn)數(shù)據(jù)的傳送。

reply回應(yīng)

    一個(gè)回應(yīng)是一個(gè)從服務(wù)器傳送到客戶(hù)端的對(duì)FTP命令執(zhí)行情況的反饋(肯定或否定)?;貞?yīng)的一般格式是一個(gè)3位數(shù)字編碼后面跟著一句文字串。        

server-DTP

    服務(wù)器端的數(shù)據(jù)傳送進(jìn)程,User-FTPServer-FTP之間數(shù)據(jù)連接建立過(guò)程中,Server-DTP一般充當(dāng)請(qǐng)求連接的一方。在兩個(gè)Server-FTP之間則其中一個(gè)充當(dāng)被動(dòng)監(jiān)聽(tīng),另外一個(gè)充當(dāng)主動(dòng)請(qǐng)求連接。具體由與它們相連的User-FTP發(fā)來(lái)的FTP命令決定。

server-PI

   服務(wù)端的協(xié)議解釋器,在端口21監(jiān)聽(tīng)等待User-PI請(qǐng)求建立控制連接(control connection)。和User-PI建立連接后,Server-PI接收user-PI發(fā)來(lái)的FTP命令,解析執(zhí)行命令,發(fā)送回應(yīng),和有數(shù)據(jù)傳送要求時(shí)管理server-DTP。

type類(lèi)型

   由于不同類(lèi)型的主機(jī)的數(shù)據(jù)表達(dá)方式不同,如IBM S390EBCDIC碼,普通PCASCII碼,為了使不同類(lèi)型的主機(jī)能實(shí)現(xiàn)文件的交換,在傳送過(guò)程中的數(shù)據(jù)類(lèi)型應(yīng)該是確定的,類(lèi)型的設(shè)置暗示了數(shù)據(jù)由儲(chǔ)存中到傳送的轉(zhuǎn)換規(guī)則(transformation)FTP中有以下類(lèi)型。

     ASCII TYPE 

     這是比較通用的類(lèi)型,表示發(fā)送的是字符文件,且在文件傳送過(guò)程中數(shù)據(jù)使用ASCII碼表示。發(fā)送者會(huì)把按內(nèi)部字符表表示的數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的八位NVT-ASCII碼。         

    EBCDIC TYPE

     文件傳送過(guò)程中使用EBCDIC碼。

    IMAGE TYPE

     傳送的數(shù)據(jù)按照連續(xù)的位流傳送,為了傳輸上的方便,數(shù)據(jù)被封裝為八位的字節(jié)單位,不足8位的補(bǔ)零。比較常見(jiàn)的稱(chēng)呼是二進(jìn)制數(shù)據(jù)(binary data)。

    LOCAL TYPE

     傳送的數(shù)據(jù)按照發(fā)送方所在主機(jī)的字符表示傳送,在一些主機(jī)中一個(gè)字可能是大于8位的,則對(duì)齊成8的倍數(shù),如一個(gè)36位字符轉(zhuǎn)換64位,即8個(gè)字節(jié),兩個(gè)36位字符轉(zhuǎn)換成72位,即9個(gè)字節(jié)。

user-DTP

   當(dāng)有數(shù)據(jù)傳送要求時(shí),用戶(hù)端的數(shù)據(jù)傳送進(jìn)程在數(shù)據(jù)端口監(jiān)聽(tīng),等待服務(wù)器端DTP的連接請(qǐng)求。

user-PI

   用戶(hù)端的協(xié)議解釋器,負(fù)責(zé)向Server-PI請(qǐng)求建立控制連接,發(fā)送FTP命令,在文件傳輸過(guò)程中管理user-DTP        

  

5.4常用的FTP命令解釋

   由于篇幅所限,這里不對(duì)以上每個(gè)FTP命令做解釋?zhuān)@里僅解釋一下作者認(rèn)為比較重要或常用的FTP命令,如果讀者需要深入了解請(qǐng)參閱 RFC-959 "FILETRANSFER PROTOCOL"

USER NAME(USERsp〉〈username)

    本命令的參數(shù)〈username〉標(biāo)識(shí)用戶(hù)名,服務(wù)器憑這個(gè)用戶(hù)的權(quán)限使用文件系統(tǒng)。這個(gè)命令一般是在控制連接后的第一個(gè)命令。這個(gè)命令成功執(zhí)行后,服務(wù)器會(huì)等待PASS命令,PASS也成功執(zhí)行后,用戶(hù)才算等錄成功,可以存取Server-FTP中的文件。

PASSWORD(PASSsp〉〈password)

    這個(gè)命令是USER命令的補(bǔ)充,向Server-FTP發(fā)送由〈password〉所表示的密碼,該命令執(zhí)行成功,USER命令所指示的〈username〉才算成功登錄。這里的〈password〉是明文傳送。

CHANGE WORKING DIRECTORY(CWDSP〉〈pathname)

    Server-FTP改變當(dāng)前目錄到〈pathname〉。

LOGOUT(QUIT)

    這個(gè)命令表示用戶(hù)停止使用FTP, Server-FTP會(huì)關(guān)閉控制連接。

DATA PORT(PORT SP〉〈host-port)

   User-FTP這個(gè)命令告訴Server-FTP,等待Server-DTP連接的DTP(可能是User-DTP或其他的Server-DTP)的地址,host-port〉所指示的就是這個(gè)地址,具體的PORT命令形式如下。

    PORT  h1,h2,h3,h4,p1,p2

     以上六個(gè)參數(shù)都是小于256的數(shù)字。

    h1,h2,h3,h4表示IP地址,192,168,0,1 表示IP地址是192.168.0.1的主機(jī)。

    p1,p2,表示端口號(hào),注意p1p2都是小于256,所以1000表示為3,232(1000=3*256+232) 

RETRIEVE(RETRSP〉〈pathname)

     這個(gè)命令請(qǐng)求Server-FTP通過(guò)數(shù)據(jù)連接向User-DTP傳送由〈pathname〉指示的文件的數(shù)據(jù)。          

STOR(RETR SP〉〈pathname)  

     這個(gè)命令請(qǐng)求Server-FTP通過(guò)數(shù)據(jù)連接接收User-DTP傳送的數(shù)據(jù),數(shù)據(jù)保存在由〈pathname〉指示的文件中。注意〈pathname〉是在Server-FTP的主機(jī)上的。

PRINT WORKING DIRECTORY(PWD)

    Server-FTP收到該命令后在回應(yīng)中返回當(dāng)前工作目錄名。

LIST(LIST [SP〉〈pathname])

    Server-FTP收到該命令后向User-DTP發(fā)送目錄〈pathname〉的文件目錄信息。如果沒(méi)有〈pathname〉參數(shù),則返回當(dāng)前目錄的文件目錄信息。

STATUS(STAT [SP〉〈pathname])

   這個(gè)命令的回應(yīng)有兩種情況,沒(méi)有〈pathname〉參數(shù)和有〈pathname〉參數(shù)。

   1)沒(méi)有參數(shù),Server-FTP會(huì)在回應(yīng)中返回的一些狀態(tài)信息,如以下是我Linux上的Server-FTP返回的信息:

         211-zfm.home FTP server status:

                 Versionwu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999

                 Connected to zfl_k6.home (192.168.0.1)

                 Logged in as fszfl

                 TYPE: ASCII, FORM: Nonprint; STRUcture:File; transfer MODE: Stream

                 No data connection

                 0data bytes received in 0 files

                 0 data bytes transmitted in 0 files

                 0 data bytes total in 0 files

                 145 traffic bytes received in 0 transfers

                 4306 traffic bytes transmitted in 0transfers

                 4501 traffic bytes total in 0 transfers

          211 End of status

   2)如果有〈pathname〉參數(shù),則在回應(yīng)中返回〈pathname〉的目錄信息,如以下是我發(fā)送STAT . 的結(jié)果:

         213-statusof .:                                                   

              total 64                                                            

              drwxrwxr-x   2 fszfl   fszfl        1024 Nov 25 01:37.           

              drwx------  12 fszfl   fszfl        1024 Nov 29 00:35 ..          

           213 End of Status 

    這個(gè)功能好象和LIST有點(diǎn)相似,但LIST中的目錄信息在數(shù)據(jù)連接中返回的。

HELP [SP〉〈string]

    這是幫助命令,如果沒(méi)有參數(shù)則返回FTP命令列表,如果有參數(shù)則返回〈string〉表示的命令的語(yǔ)法。

   

5.5 FTP回應(yīng)

 5.5.1 回應(yīng)的格式

   FTP回應(yīng)有3位數(shù)字編碼和有關(guān)信息的文本組成,編碼后一個(gè)分隔符,如果回應(yīng)中返回信息的長(zhǎng)度大于一行,則編碼后跟減號(hào)(-),否則跟空格(sp)。多于一行的信息可以參考上面的例子。注意最后還有"213End of Status"表示信息的結(jié)束。FTP回應(yīng)使用的編碼是約定好的,信息文本可以由具體的Server-FTP設(shè)計(jì)。顯然,編碼為了方便程序設(shè)計(jì),文本信息可以方便閱讀。

  為了敘述方便,下文把這3位編碼稱(chēng)為回應(yīng)碼。

5.5.2 回應(yīng)碼含義

  3位回應(yīng)碼的每一位都有確定的含義。第一位表示命令的執(zhí)行結(jié)果,表示成功,失敗,或命令沒(méi)有完成。第二位表示回應(yīng)的類(lèi)型,第三位一般指第二位的進(jìn)一步細(xì)化,預(yù)留給將來(lái)的發(fā)展。

  1位可能的取值:

   1yz  初步確認(rèn) (Positive Preliminary reply)

     表示請(qǐng)求的命令已經(jīng)開(kāi)始,請(qǐng)等待進(jìn)一步的回應(yīng),在此之前不要發(fā)送新的FTP命令。

   2yz  完成確認(rèn) (Positive Completion reply)

     表示請(qǐng)求的命令已經(jīng)成功完成,可以發(fā)送新的請(qǐng)求。

   3yz  中間狀態(tài)確認(rèn)(Positive Intermediate reply)

     請(qǐng)求的命令已經(jīng)被接受,等待下一條相關(guān)的命令提供進(jìn)一步的信息。這個(gè)回應(yīng)用于一些命令序列中,如USERPASS,如果USER被接受則可以得到這個(gè)回應(yīng),表明還需要密碼來(lái)完成用戶(hù)的登錄。

   4yz  暫時(shí)否認(rèn) (Transient Negative Completionreply)

     Server-FTP由于一些暫時(shí)的原因沒(méi)有接收命令,User-FTP最好重新請(qǐng)求這個(gè)命令。如果是命令序列,則需要從該序列的第一條指令開(kāi)始。

   5yz  命令有錯(cuò) (Permanent Negative Completionreply)

     命令沒(méi)有被接收,具體的拒絕原因由回應(yīng)碼第二位指出。

   2位可能的取值,描述回應(yīng)的分類(lèi):  

   x0z   語(yǔ)法(Syntax) - 命令語(yǔ)法不正確,或Server-FTP沒(méi)有實(shí)現(xiàn)這個(gè)功能。                 

   x1z   信息(Information) -  描述如STATHELP等命令要求Server-FTP信息的返回。

   x2z   連接(Connections) - 描述有關(guān)控制和數(shù)據(jù)連接。

   x3z   帳戶(hù)和認(rèn)證(Authentication and accounting)- 登錄過(guò)程的回應(yīng)。   

   x4z   現(xiàn)在還沒(méi)有指定。

   x5z   文件系統(tǒng)(File system) - 這個(gè)回應(yīng)反映服務(wù)器的文件系統(tǒng)的狀態(tài)。

   3位的的含義需要根據(jù)第1,2位的值再細(xì)化。

 

5.5.3 回應(yīng)舉例

        3位回應(yīng)碼的不同組合產(chǎn)生了許多不同的含義,篇幅所限不一一列舉,具體請(qǐng)查 RFC-959。下面是幾個(gè)例子:

        200 Command okay.

        500 Syntax error, command unrecognized.            

        501 Syntax error in parameters or arguments

 

 5.6 FTP舉例

      以下給出一個(gè)實(shí)際的例子,FTP客戶(hù)端用隨Windows98提供ftp,FTP服務(wù)器用Sco Unix 5.0.4,其中的'------'表示客戶(hù)端發(fā)給服務(wù)器的命令,'--------'表示服務(wù)器的回應(yīng),〈CR〉表示回車(chē),〈CRLF〉表示回車(chē)換行。

  

用戶(hù)界面的命令

引用FTP

c:ftp zfl_5x86CR

 connect to 192.168.0.8

 

提示User:

輸入fszflCR

 

提示password:

輸入xxxxxCR

 

ftpcd simpletcpCR

 

ftpdirCR              

   準(zhǔn)備DTP,DTP在端口1841 (=7x256+49)監(jiān)聽(tīng)

 

 

 

接收數(shù)據(jù)

  顯示通過(guò)數(shù)據(jù)連接收回來(lái)的東西。如

     total 64

     .......                                                            

     -rw-r--r--   1 fszfl    fszfl        1242 Nov 25 01:37 client.c

     .......

                        

ftpget client.cCR

 

 

 

 

 

接收數(shù)據(jù),同時(shí)把數(shù)據(jù)寫(xiě)到client.c

 

顯示接收成功,接收的字節(jié)數(shù)                                  

ftpbinCR

 

 

ftpput autoexec.batCR 

準(zhǔn)備DTP,DTP在端口1848(=7x256+56)監(jiān)聽(tīng)

 

 

 

 

 

 讀文件autoexec.bat,把數(shù)據(jù)通過(guò)數(shù)據(jù)連  接發(fā)送,到文件結(jié)束關(guān)閉數(shù)據(jù)連接。

顯示發(fā)送成功,發(fā)送字節(jié)數(shù).

FtpquitCR

連接到主機(jī)zfl_5x86,端口21,

建立控制連接。

---- 220  zfl_5x86 FTP server (Version 2.1WU(1)) ready.

 

USER fszflCRLF----

---- 331  Password required for fszfl.

 

PASS xxxxxCRLF----

---- 230  User fszfl logged in.

 CWD simpletcpCRLF------

---- 250  CWD command successful.

 

 

PORT 192,168,0,8,7,49CRLF-------

---- 200  PORT command successful.

 LISTCRLF------

---- 150  Opening ASCII mode data connection for /bin/ls.

 

 

 

 

 

 

---- 226  Transfer complete.

 

PORT 192,168,0,8,7,53CRLF-------

---- 200  PORT command successful.

RETR client.cCRLF----

---- 150  Opening ASCII mode data connection for client.c.

 

---- 226  Transfer complete.

 

 

TYPE ICRLF----

---- 200  Type set to I.

 

 

 

PORT 192,168,0,8,7,56CRLF-------

---- 200  PORT command successful.

STOR AUTOEXEC.BATCRLF----

---- 150  Opening BINARY mode data connection for autoexec.c.

 

 

---- 226  Transfer complete.

 

QUIT CRLF----

-----221  Goodbye.

 控制連接關(guān)閉。

 

5.7實(shí)踐

     有條件的讀者可以按以上例子實(shí)踐一下,在win98user-FTP程序中有debug命令,可以打開(kāi)調(diào)式模式,調(diào)式模式中會(huì)顯示使用中的FTP命令和回應(yīng),讀者可以很清晰地驗(yàn)證FTP的使用過(guò)程。

     如果還有條件可以用TCP編程技術(shù),按FTP的原理和約定編制一個(gè)簡(jiǎn)單的User-FTPServer-FTP程序,應(yīng)該不是非常困難的事,但非常有利于理解。

全部評(píng)論 (0)
熱門(mén)領(lǐng)域講師
互聯(lián)網(wǎng)營(yíng)銷(xiāo) 互聯(lián)網(wǎng) 新媒體運(yùn)營(yíng) 短視頻 電子商務(wù) 社群營(yíng)銷(xiāo) 抖音快手 新零售 網(wǎng)絡(luò)推廣 領(lǐng)導(dǎo)力 管理技能 中高層管理 中層管理 團(tuán)隊(duì)建設(shè) 團(tuán)隊(duì)管理 高績(jī)效團(tuán)隊(duì) 創(chuàng)新管理 溝通技巧 執(zhí)行力 阿米巴 MTP 銷(xiāo)售技巧 品牌營(yíng)銷(xiāo) 銷(xiāo)售 大客戶(hù)營(yíng)銷(xiāo) 經(jīng)銷(xiāo)商管理 銷(xiāo)講 門(mén)店管理 商務(wù)談判 經(jīng)濟(jì)形勢(shì) 宏觀經(jīng)濟(jì) 商業(yè)模式 私董會(huì) 轉(zhuǎn)型升級(jí) 股權(quán)激勵(lì) 納稅籌劃 非財(cái)管理 培訓(xùn)師培訓(xùn) TTT 公眾演說(shuō) 招聘面試 人力資源 非人管理 服裝行業(yè) 績(jī)效管理 商務(wù)禮儀 形象禮儀 職業(yè)素養(yǎng) 新員工培訓(xùn) 班組長(zhǎng)管理 生產(chǎn)管理 精益生產(chǎn) 采購(gòu)管理 易經(jīng)風(fēng)水 供應(yīng)鏈管理 國(guó)學(xué) 國(guó)學(xué)文化 國(guó)學(xué)管理 國(guó)學(xué)經(jīng)典 易經(jīng) 易經(jīng)與管理 易經(jīng)智慧 家居風(fēng)水 國(guó)際貿(mào)易
鮮花榜
頭像
+6107朵
頭像
+6098朵
頭像
+6087朵
頭像
+6087朵
頭像
+6065朵
頭像
+6059朵
頭像
+6054朵
頭像
+6049朵
頭像
+6019朵

Copyright©2008-2025 版權(quán)所有 浙ICP備06026258號(hào)-1 浙公網(wǎng)安備 33010802003509號(hào) 杭州講師網(wǎng)絡(luò)科技有限公司
講師網(wǎng) www.kasajewelry.com 直接對(duì)接10000多名優(yōu)秀講師-省時(shí)省力省錢(qián)
講師網(wǎng)常年法律顧問(wèn):浙江麥迪律師事務(wù)所 梁俊景律師 李小平律師