應用層 之一 HTTP協議與FTP協議

2021-09-02 12:20:10 字數 4609 閱讀 1201

[b][size=large]一、http協議[/size][/b]

[b][size=large]二、ftp協議[/size][/b]

[b][size=large]三、http與ftp的異同點[/size][/b]

[b][size=large]一、http協議簡介[/size][/b]

[size=medium][b]1. 概念[/b][/size]

[size=medium]http: hypertext transfer protocal,超文字傳輸協議。它是web的核心。[/size]

[size=medium]http協議由兩部分程式實現:乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換http報文進行會話。[/size]

[size=medium]http定義了這些報文的格式,以及客戶機和伺服器是如何進行報文交換的,即:web客戶機是如何向web伺服器請求web頁面,以及伺服器如何將web頁面傳送給客戶機。[/size]

[align=center][img]

[size=medium][b]2. http是乙個無狀態協議(stateless protocal)[/b][/size]

[size=medium]伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。[/size]

[size=medium]假如某個特定的客戶機在短短的幾秒鐘內兩次請求同乙個物件,伺服器並不會因為剛剛為該使用者提供了該物件就不再做出反應,而是重新傳送該物件,就像該伺服器已經完全忘記不久之前所做過的事一樣。[/size]

[size=medium]正因為乙個http伺服器並不儲存關於客戶機的任何資訊,所以我們說http是乙個無狀態協議。[/size]

[size=medium][b]3. 非持久連線(non-persistent connection)和持久連線(persistent connection)[/b][/size]

[size=medium][b](1)[/b]在許多網際網路應用中,客戶機和伺服器進行長時間的通訊,其中客戶機發出一系列請求,伺服器對每個請求進行響應。[/size]

[size=medium]根據不同的應用程式以及應用程式使用的方式,這一系列請求,可以周期性地乙個接乙個地發出,也可以間斷性地發出。[/size]

[size=medium]當這種客戶機/伺服器的互動執行於tcp協議之上時,應用程式的研製者需要確定每個請求/響應對,是經乙個 [b]單獨的tcp連線[/b] 傳送,還是所有的請求及相應的響應經 [b]相同的tcp連線[/b] 傳送。[/size]

[size=medium]如果每個請求/響應對,都是經乙個 [b]單獨的tcp連線[/b] 傳送,該應用程式被稱為 使用 [b]非持久連線[/b];如果所有的請求及相應的響應都經 [b]相同的tcp連線[/b] 傳送,則該應用程式被稱為 使用 [b]持久連線[/b]。[/size]

[size=medium][b](2)[/b]http既可以使用非持久連線,也可以使用持久連線,預設方式下,http使用持久連線。[/size]

[size=medium][b](3)[/b]非持久連線的缺點:[/size]

[size=medium]1)[b]非持久連線必須為每乙個請求的物件建立和維護乙個全新的連線。[/b][/size]

[size=medium]對於這樣的連線,在客戶機和伺服器都要分配tcp的緩衝區和變數,這給伺服器帶來了嚴重的負擔,因為一台web伺服器可能同時服務於數以百計的客戶機請求。[/size]

[size=medium]2)每乙個物件的傳輸時延為兩個rtt(round-trip time,往返時間),即乙個rtt用於建立tcp,另乙個rtt用於請求和接收乙個物件。傳輸時延太大。[/size]

[size=medium][b]在持久連線的情況下,伺服器在傳送響應後保持該tcp連線開啟。[/b][/size]

[size=medium]在相同的客戶機和伺服器之間的後續請求和響應報文,可通過相同的連線進行傳送。特別是乙個完整的web頁面(如基本的html檔案,加上10個圖形),可以用單個持久的tcp連線進行傳送。[/size]

[size=medium]更有甚者,位於同一臺伺服器的多個web頁面,在從該伺服器傳送給同乙個客戶機時,可以在單個持久的tcp連線上進行。對這些物件的請求可乙個接乙個地發出,而不必等待未決請求的回答,像流水線一樣進行。[/size]

[size=medium]一般來說,如果乙個連線經過一定時間間隔(乙個可配置的超時間隔)仍未被使用,http伺服器就關閉該連線。[/size]

[size=medium][b]http的預設模式使用了流水線方式的持久連線。[/b][/size]

[size=medium][b]4. http報文格式[/b][/size]

[size=medium]http報文有兩種:請求報文和響應報文。[/size]

[size=medium][color=red][b](詳情以後補充)[/b][/color][/size]

[b][size=large]二、ftp協議[/size][/b]

[size=medium]ftp:file transfer protocol,檔案傳輸協議。[/size]

[align=center][img]

[size=medium]使用者通過乙個ftp使用者介面與ftp互動。使用者首先提供遠端主機的主機名,使本地主機的ftp客戶機程序建立乙個到遠端主機ftp伺服器程序的tcp連線。[/size]

[size=medium]然後,為使使用者能訪問遠端主機的賬戶,使用者必須提供乙個使用者標識和口令,作為ftp命令的一部分在該tcp連線上傳送。一旦該伺服器向該使用者授權,使用者就能從本地檔案系統向遠端檔案系統傳送檔案,反之亦然。[/size]

[b][size=large]三、http與ftp的異同點[/size][/b]

[size=medium][b]1. 同:[/b][/size]

[size=medium](1)都是應用層協議;[/size]

[size=medium](2)都執行在tcp上,即都使用tcp(而不是udp)作為其支撐的運輸層協議。[/size]

[size=medium][b]2. 異:[/b][/size]

[size=medium][b](1)http是超文字傳輸協議,是面向網頁的;ftp是檔案傳輸協議,是面向檔案的。[/b][/size]

[size=medium][b](1)http協議預設埠:80號埠。ftp協議預設埠:21號埠。[/b][/size]

[size=medium][b](3)ftp的控制資訊是帶外(out-of-band)傳送的,而http的控制資訊是帶內(in-band)傳送的。[/b][/size]

[size=medium]ftp使用兩個並行的tcp連線來傳輸檔案,乙個是 [b]控制連線[/b](control connection),乙個是 [b]資料連線[/b](data connection)。[/size]

[size=medium]控制連線用於在兩個主機之間傳輸控制資訊,如使用者標識、口令、改變遠端目錄的命令以及「put」和「get」檔案的命令。[/size]

[size=medium]資料連線用於實際傳輸乙個檔案。[/size]

[align=center][img]

[size=medium]因為ftp協議使用乙個分離的控制連線,因此稱ftp的控制資訊是帶外傳送的。[/size]

[size=medium]而http協議是在傳輸檔案的tcp連線中傳送請求和響應首部行的,因此其控制資訊是帶內傳送的。[/size]

[size=medium][b](3)ftp伺服器必須在整個會話期間保留使用者的狀態(state)資訊,而http是無狀態的。[/b][/size]

[size=medium]ftp伺服器必須把特定的使用者賬戶與控制連線聯絡起來,隨著使用者在遠端目錄樹上移動,伺服器必須追蹤使用者在遠端目錄樹上的當前位置。對每個活動著的使用者會話的狀態進行追蹤,可以對ftp會話總數進行限制。[/size]

[size=medium][b](4)ftp的控制連線是持久連線,資料連線是非持久連線;而http既可以使用非持久連線,也可以使用持久連線,預設方式下,http使用持久連線。[/b][/size]

[size=medium]當使用者主機與遠端主機開始乙個ftp會話前,ftp的客戶機(使用者)首先在21號埠上發起乙個用於控制的與伺服器(遠端主機)的tcp連線。ftp的客戶機通過該控制連線,傳送使用者的標識和口令,也傳送改變遠端目錄的命令。[/size]

[size=medium]1)ftp的port(主動式)工作方式:當需要傳送資料時,[color=red]客戶端[/color]在控制連線鏈路上用port命令告訴[color=red]伺服器[/color]:「我開啟了***x埠,你過來連線我」。於是伺服器從20埠向客戶端的***x埠傳送連線請求,建立一條資料連線鏈路來傳送資料。[/size]

[size=medium]2)ftp的pasv(被動式)工作方式:當需要傳送資料時,[color=red]伺服器[/color]在控制連線鏈路上用pasv命令告訴[color=red]客戶端[/color]:「我開啟了***x埠,你過來連線我」。於是客戶端向伺服器的***x埠傳送連線請求,建立一條資料連線鏈路來傳送資料。[/size]

[size=medium]如果在同乙個會話期間,使用者還需要傳輸另乙個檔案,ftp則開啟另乙個資料連線。[/size]

[size=medium]因此,ftp的控制連線貫穿了整個使用者會話期間,但是針對會話中的每一次檔案傳輸,都需要建立乙個新的資料連線。故,控制連線是持久連線,而資料連線是非持久連線。[/size]

應用層協議 FTP

1.ftp協議 檔案傳輸協議file transfer protocol 也就是將檔案從一台主機傳輸到另一台主機的應用協議。同大多數internet服務一樣,ftp也是乙個客戶 伺服器系統,即ftp協議包括兩個重要的組成部分,ftp伺服器和ftp客戶端。ftp伺服器用於儲存和傳送檔案,使用者使用ft...

應用層(HTTP協議)

應用層 負責應用程式之間的溝通 結構化傳輸協議 方便資料式的組織與解析 1.作用 傳輸檔案,網頁 採用tcp協議 tcp協議詳解 2.url 統一資源定位符 相對路徑是根目錄下的相對路徑 3.urlencode 編碼 和urldecode 解碼 乙個字元8位,前4位 編成1位,後4位 編成1位,再加...

應用層 HTTP協議

應用層 應用層和應用程式直接相關,這是和程式設計師打交道最多的地方。自定製協議 不重要 1 約定好客戶端請求 request 包含什麼資訊,伺服器響應 response 包含什麼資訊 2 約定好資料按照什麼格式來組織,本質上網際網路傳輸的都是 二進位制 字串 序列化 反序列化 已有協議 重要 htt...