HTTPHTTP的發(fā)展是萬維網(wǎng)協(xié)會(World Wide Web Consortium)和Internet工作小組(Internet Engineering Task Force)合作的結(jié)果,(他們)最終發(fā)布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定義了HTTP協(xié)議中一個現(xiàn)今被廣泛使用的版本——HTTP 1.1。
HTTP是一個客戶端和服務器端請求和應答的標準(TCP)??蛻舳耸墙K端用戶,服務器端是網(wǎng)站。通過使用Web瀏覽器、網(wǎng)絡爬蟲或者其它的工具,客戶端發(fā)起一個到服務器上指定端口(默認端口為80)的HTTP請求。(我們稱這個客戶端)調(diào)用戶代理(user agent)。應答的服務器上存儲著(一些)資源,比如HTML文件和圖像。(我們稱)這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個中間層,比如代理,網(wǎng)關(guān),或者隧道(tunnel)。盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應用,HTTP協(xié)議并沒有規(guī)定必須使用它和(基于)它支持的層。事實上,HTTP可以在任何其他互聯(lián)網(wǎng)協(xié)議上,或者在其他網(wǎng)絡上實現(xiàn)。HTTP只假定(其下層協(xié)議提供)可靠的傳輸,任何能夠提供這種保證的協(xié)議都可以被其使用。通常,由HTTP客戶端發(fā)起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監(jiān)聽客戶端發(fā)送過來的請求。一旦收到請求,服務器(向客戶端)發(fā)回一個狀態(tài)行,比如"HTTP/1.1 200 OK",和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打開一個)一個網(wǎng)頁必須傳送很多數(shù)據(jù),而TCP協(xié)議提供傳輸控制,按順序組織數(shù)據(jù),和錯誤糾正。具體細節(jié)請參考‘TCP和UDP的不同’。通過HTTP或者HTTPS協(xié)議請求的資源由統(tǒng)一資源定位器(Uniform Resource Identifiers,或者,更準確一些,URI)來標識。
FTP服務一般運行在20和21兩個端口。端口20用于在客戶端和服務器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務器的進口。當數(shù)據(jù)通過數(shù)據(jù)流傳輸時,控制流處于空閑狀態(tài)。而當控制流,空閑很長時間后,客戶端的防火墻,會將其會話置為超時,這樣當大量數(shù)據(jù)通過防火墻時,會產(chǎn)生一些問題。此時,雖然文件可以成功的傳輸,但因為控制會話,會被防火墻斷開;傳輸會產(chǎn)生一些錯誤。FTP實現(xiàn)的目標:促進文件的共享(計算機程序或數(shù)據(jù))鼓勵間接或者隱式的使用遠程計算機向用戶屏蔽不同主機中各種文件存儲系統(tǒng)(File system)的細節(jié)可靠和高效的傳輸數(shù)據(jù)缺點:密碼和文件內(nèi)容都使用明文傳輸,可能產(chǎn)生不希望發(fā)生的竊聽。因為必須開放一個隨機的端口以建立連接,當防火墻存在時,客戶端很難過濾處于主動模式下的FTP流量。這個問題,通過使用被動模式的FTP,得到了很大解決。服務器可能會被告知連接一個第三方計算機的保留端口。此方式在需要傳輸文件數(shù)量很多的小文件時,效能不好FTP雖然可以被終端用戶直接使用,但是它是設計成被FTP客戶端程序所控制。運行FTP服務的許多站點都開放匿名服務,在這種設置下,用戶不需要帳號就可以登錄服務器,默認情況下,匿名用戶的用戶名是:“anonymous”。這個帳號不需要密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節(jié)或者此郵件地址根本不被確定,而是依賴于FTP服務器的配置情況。應用層協(xié)議為應用程序之間的通信提供規(guī)則,為確保通信暢通,源主機和目的主機上所實現(xiàn)的應用層協(xié)議必須一致。