javaweb深入學習001 Web請求過程

2021-06-26 01:19:23 字數 2388 閱讀 3252

一:幾個不變的原則:

1、網際網路上所有的資源都對應著自身的url(統一資源定位符),一如每個人的身份證號一樣每個資源的url也是是唯一的!

2、瀏覽器發出的服務請求是http請求

3、所有的資料都是在瀏覽器中獲得展示的,伺服器找到瀏覽器請求的資源,並以位元組流的方式傳送給瀏覽器,瀏覽器得到資料後將資料解析顯示出來。

二 :服務請求的簡要過程:

瀏覽器程序呼叫解析程式(resolver),並成為dns的乙個客戶,把帶解析的網域名稱存放在dns請求報文中(請求以udp使用者資料報方式傳送給本地網域名稱伺服器)。本地網域名稱伺服器查詢網域名稱對應的ip位址(本地網域名稱伺服器查詢失敗時會向頂級網域名稱伺服器發起查詢請求......),並將對應的ip位址放在回答報文段中返回。瀏覽器獲得目的主機的ip位址之後即可進行下一步通訊。

4、瀏覽器發起乙個get請求。

5、伺服器收到瀏覽器請求,給出相應的響應(服務處理請求的過程是乙個可簡單可複雜的處理過程,稍後在詳細介紹)。

6、釋放tcp連線。

7、瀏覽器獲得伺服器返回的資料,並進行解析和顯示。

一:一些必要的介紹

1、http是乙個

應用層協議,使用了面向連線的tcp作為傳輸層協議,保證了資料的可靠傳輸。http協議不用考慮資料傳輸過程中的丟包和重傳等問題。但是http協議本身是

2、http協議是

無狀態的,也即:同乙個使用者第二次訪問同乙個伺服器上的頁面時,伺服器響應與第一次被訪問時的相同。(這就產生了cookie和session機制)

3、http協議是面向文字的,報文中的每乙個欄位都是乙個 ascii 碼串。

http協議首先要和伺服器建立tcp連線,這需要三次握手。當三次握手的前兩部分完成後(即經過乙個rtt時間後)客戶端(瀏覽器)就把

http請求報文作為三次握手的第三個報文的資料傳送給伺服器。伺服器收到http請求報文之後,就把所請求的資源文件作為響應報文返回給客戶。由此可以知道:請求乙個文件的時間和文件資源的大小是成正比的,用時 = 文件傳輸時間 + 兩倍往返時間 rtt (乙個 rtt 用於連線 tcp 連線,另乙個 rtt 用於請求和接受伺服器響應)。

5、http協議的主要版本:

http/1.1:有效的解決了1.0版本的問題,1.1版本中採用了

持續連線(伺服器在傳送回響應後仍然在一段時間內保持這條連線,使同乙個客戶和該伺服器可以繼續在這條連線上傳送後續的http請求報文和響應報文)。1.1協議的持續連線方式有兩種:非流水線式和流水線式;非流水線式特點:客戶只用在收到前乙個響應之後才能發出下乙個請求(較1.0版本節約了乙個 rtt 時間,仍然存在伺服器資源的浪費,因為伺服器傳送完乙個物件後tcp連線就處於空閒狀態了)。流水線式特點:使用者在收到響應報文前就可以發出新的請求報文(客戶端訪問所有物件只需要花費乙個 rtt 時間)。

二: http 的報文結構:

1、http報文分為兩類:

請求報文:從客戶端向伺服器端傳送請求報文

響應報文:從伺服器端到客戶端的回答

2、http的請求和響應報文都由三個部分組成。

兩種報文格式的區別就是開始行不同:

(1) 開始行 :用於區別是請求報文還是響應報文,在請求報文中開始行叫做

請求行(request-line),在響應報文中開始行叫做

狀態行(status-line)。

請求行的組成由「三個內容」 組成,即

:方法、請求資源的url、http版本 。常用的方法有 get 和 post

例如: get http/1.1 (

「三個內容」之間用空格 " " 隔開的)

(2) 首部行:用來說明瀏覽器、伺服器和報文主體的一些資訊,首部行可以是好幾行也可以沒有。 在每乙個首部行中都有首部欄位名和它的值,每一行結束的地方要

有」回車「和」換行「。整個首部結束時,還有乙個空行將首部行和後面的實體主體區別開。

(3) 實體主體:在請求報文中一般不使用這一字段,響應報文中也可能沒有。

請求報文段示例:

[請求報文的最後還有乙個空行]

----

3、響應報文的響應狀態碼:

響應狀態碼分為 5 類 33 種:

1xx : 表示通知資訊,如接受到了或是正在處理

2xx :表示成功,如接受到了或是知道了

3xx :表示重定向

4xx :表示客戶端錯誤,如請求的url不正確

5xx :表示伺服器的錯誤,如伺服器壓力過大無法完成請求響應

UIApplication深入學習

新建乙個任意型別的ios應用工程,加入我們在class prefix輸入是tc,我們可以看到工程中生成乙個類 在main函式中,autoreleasepool 函式中 說明 當應用程式將要入非活動狀態執行,在此期間,應用程式不接收訊息或事件。比如來 了。說明 當應用程式入活動狀態執行,這個剛好跟上面...

深入學習CSS

什麼是css?在之前的這篇文章中已經介紹了初步的介紹,詳細請看 div加css進一步講解了css中的內容,先總結如下圖 其實在實際開發中,我們通常採用是外部樣式的匯入,這樣做的好處是對於很對有同樣設計樣式的頁面可以實現樣式的共享,這樣我們不僅僅可以節省了大量的時間,並且也方便我們可以靈活的呼叫的樣式...

block深入學習

block的宣告和使用看上一節就行了。本章主要講block內部的實現過程及原理。block的定義和函式指標非常相似 對比一下 block定義 void someblock 函式指標定義 void functionpionter void functionname 當然區別還是有的,block的返回型...