測試小卒子 HTTP 基礎知識

2021-07-13 10:12:49 字數 2480 閱讀 8009

最近做乙個平台的搭建,需要做頁面展示,就接觸了nginx(nginx是後話,之後會慢慢深入編寫),在配置的過程中我對http產生了很多的興趣,之前做過介面測試,對http有點了解,但是不深入。經過這一段時間的接觸,對http有了一定的了解。

http,按照官方的話來說就是—超文字傳輸協議(http,hypertext transfer protocol)。這樣說,未免太過官方,依照我個人的理解,從幾點來說。

1、什麼是http協議:

http是一種請求/響應式的協議。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器;伺服器接到請求後,給予相應的響應資訊。http 的第一版本 http/0.9是一種簡單的用於網路間原始資料傳輸的協議;

http/1.0由 rfc 1945 定義 ,在原 http/0.9 的基礎上,有了進一步的改進,允許訊息以類 mime 資訊格式存 在,包括請求/響應正規化中的已傳輸資料和修飾符等方面的資訊;

http/1.1(rfc2616) 的要求更加嚴格以確保服務的可靠性,增強了在http/1.0 沒有充分考慮到分層**伺服器、高速緩衝儲存器、持久連線需求或虛擬主機等方面的效能;

安全增強版的 http (即s-http或https),則是http協議與安全套介面層(ssl)的結合,使http的協議資料在傳輸過程中更加安全。

2、tcp/ip:

提到http就不得不說道tcp/ip,tcp/ip協議是分層的,從底層至應用層分別為:物理層、鏈路層、網路層、傳輸層和應用層,是我在網上找的,還算畫的清楚如下圖所示:

從應用層至物理層,資料是一層層封裝,封裝的方式一般都是在原有資料的前面加乙個資料控制頭,資料封裝格式如下:

其中,對於tcp傳輸協議,客戶端在於伺服器建立連線前需要經過tcp三層握手,過程如下:

http是應用層的協議。

3、http基礎知識

1) http結構

http 分成了三部分:http://host[:port][abs_path]

其中,http就是指咱們上述的指的http協議所定位的網路資源了。

host指的是主機網域名稱和ip位址

port指的是指定乙個埠號,擁有被請求資源的伺服器主機監聽該埠的tcp連線。如果port是空,則使用預設的埠80。當伺服器的埠不是80的時候,需要顯式指定埠號。

abs_path指的是請求資源的uri(uniform resource identifier,統一資源定位符),如果url中沒有給出abs_path,那麼當它作為請求uri時,必須以「/」的形式給出。通常這個工作瀏覽器就幫我們完成了強調內容

瀏覽器與伺服器連線的一般過程:

(瀏覽器自動加)->dns(domain name sevice)->***.***.***.**:80

socket socket = new socket("***.***.***.**:80", 80);

2) uri與urluri純粹是乙個符號結構,用於指定構成web資源的字串的各個不同部分。

url是一種特殊型別的uri,它包含了用於查詢某個資源的足夠的資訊。

其他的uri,例如:[email protected],則不屬於url,因為它裡面不存在根據該識別符號來查詢的任何資料。這種uri稱為urn(通用資源名)。

3) http請求

http請求就是,客戶端通過傳送http請求向伺服器請求對資源的訪問

http請求由3部分組成,分別是:請求行,訊息報頭,請求正文

請求行:請求行以乙個方法符號開頭,後面跟著請求的uri和協議的版本,以crlf作為結尾。請求行以空格分隔,除了作為結尾的crlf外,不允許出現單獨的cr或lf字元,格式如下:

method 表示請求的方法;

request-uri 是乙個統一資源識別符號,標識了要請求的資源;

http-version 表示請求的http協議的版本(關於http各個版本的不同,我會在另一篇部落格中體現)

crlf 表示回車換行

例如: get /test.html http/1.1(crlf)

4) http 請求方法

HTTP 基礎知識

具體去看原文 你應該知道的http基礎知識 1.http請求報文格式 http的請求報文分為三個部分請求行 請求頭和請求體。1.1 請求行 請求行 request line 分為三個部分 請求方法 請求位址和協議及版本,以crlf r n 結束。http 1.1定義的請求方法有8中 get post...

HTTP 基礎知識

標籤位於文件的頭部,不包含任何內容。標籤的屬性定義了與文件相關聯的名稱 值對。標籤永遠位於 head 元素內部。http equiv 屬性為名稱 值對提供了名稱。並指示伺服器在傳送實際的文件之前先在要傳送給瀏覽器的 mime 文件頭部包含名稱 值對。當伺服器向瀏覽器傳送文件時,會先傳送許多名稱 值對...

HTTP基礎知識

get 用於請求訪問已經被uri 統一資源識別符號 識別的資源,可以通過url傳參給伺服器 post 用於傳輸資訊給伺服器,主要功能與get方法類似,但一般推薦使用post方式。put 傳輸檔案,報文主體中包含檔案內容,儲存到對應uri位置。head 獲得報文首部,與get方法類似,只是不返回報文主...