應用層協議HTTP (端口號:80 TCP連接)


web:

web使用應用層協議HTTP(端口號:80,使用的傳輸層協議為TCP),web由多個對象組成,一般若web包含html文本和5個圖片,則這個web有6(1+5)個對象。每個對象通過對應的URL進行引用。

 

HTTP服務器並不保存關於客戶機的任何信息,故稱HTTP為無狀態協議。即使客戶端在很短的時間內對同一對象進行請求,服務器也會進行反應。

 

非持久連接:

web每個對象的請求均建立一個獨立的TCP,但這些TCP可並行建立從而加快了響應速度。

例如:

①HTTP客戶機進程在端口80發起一個到服務器的TCP連接。

②HTTP客戶機通過socket向服務器發出一個請求報文,其中包含文件的路徑。

③HTTP服務通過socket接受請求並發送請求對象。

④HTTP服務器通知TCP並斷開連接,一般只有在數據傳輸完成后TCP才會斷開。

⑤HTTP客戶機接收響應報文並斷開TCP。

⑥對於非持久連接,要重復上面的過程發送每個對象。

 

持久連接:對於同一客戶機與服務器之間只建立一條TCP,所有對象由TCP傳輸。

 

RTT:round-trip time  往返時間。建立TCP連接要進行3次捂手,1.5個RTT。

 

HTTP請求報文:

方法字段      URL           HTTP協議版本

GET          /somedir/page.heml      HTTP/1.1                //第一行為 請求行 request line  后面為首部行與實體部分

connection  :close                                             非持久連接

user-agent  :***                                                客戶機使用的瀏覽器                首部行 header line 

accept-language :***                                         使用的語言

*****entity 實體部分*******

一般而言,使用GET方法時,實體部分為空。使用post方法時實體部分不是空。例如在客戶端向服務器提交密碼與用戶名是要使用post方法。向服務器提供數據時不一定使用post方法,例如可以使用擴展的get方法(利用表單生成的請求可以使用GET方法)

例如:www.s.com/animals?monkey&bananas    這個URL就攜帶了部分提交給服務器的數據。

 

HTTP響應報文:

HTTP/1.1       200(狀態碼)   ok                                狀態行

connection      close     非持久連接

......data......

server****                  服務器類型

last-modefied               對象最后更改的時間,一般用於web緩存的更新依據              首部行    header line 

content-length 

content-type                   text/html

......data......

 

常見的狀態碼:    200  ok   請求成功

        301         moved  permanently  請求對象被永久的轉移了,並返回了對象存儲的新URL。

        400         bad  request    服務器無法理解的請求內容

        404          not found       請求的內容不在服務器中。

        505          HTTP version  not  supported

 

雖說HTTP是無狀態的,但可以使用cookie使服務器跟蹤用戶的動作。

cookie系統由四個部分組成:

①HTTP響應報文中有一個cookie首部行。

②HTTP請求報文中有一個cookie首部行。

③用戶系統中有一個cookie文件。

④在web站點有一個關於cookie的后端數據庫。

cookie標識碼由服務器產生,並用於服務器對端系統的身份識別,web系統可以使用cookie(設識別碼為12345)記錄用戶12345(系統不知道用戶的真實姓名)的行為,並通過這些數據對用戶做出一些反應,例如對用戶推薦一些產品。若將cookie識別碼與用戶的用戶名和密碼對應,則用戶在下次登錄系統是可以不用輸入用戶名和密碼。

 

cookie的一個爭議就是使用cookie可能會侵犯用戶的隱私。

 

web緩存器(web cache )也稱為web代理器(proxy  server):

web  cache即使客戶機也是服務器,當瀏覽器向web緩存發出請求時,web緩存為服務器,當web緩存向源web服務器請求數據時(緩存中缺少某些對象)其又是客戶機。

web  cache可以是一台主機由ISP提供,也可以是本PC機上的一個通用的軟件。

web  cache存在與源web  sever 同步的問題,一般web緩存會在一定的時間里與源web server同步,同步時使用的是條件GET指令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM