應用層(HTTP協議)

2021-08-23 12:35:33 字數 3245 閱讀 9564

應用層:負責應用程式之間的溝通

結構化傳輸協議:(方便資料式的組織與解析)

1.作用:傳輸檔案,網頁

採用tcp協議(tcp協議詳解:

2.url:統一資源定位符

相對路徑是根目錄下的相對路徑

3.urlencode(編碼) 和urldecode(解碼)

乙個字元8位,前4位-->編成1位,後4位-->編成1位,再加上%。

0000 0000 + 0010 1011 eg:c++ ---> c%2b%2b

前四位轉換成乙個十六進製制的數字 2

後四位轉換成乙個十六進製制的數字 b

4.http協議格式(四部分)

請求request:

1)首行:請求方法 url 協議版本號\r\n

請求方法:post:提交資料有正文。將請求放在正文(body)裡(key=val&key=val)

get:請求資源沒有正文,提交資料在url(urlencode)

(query_string查詢字串)中。(資料長度有限 )

get和post乙個重要的區別:

get產生乙個tcp資料報,post產生兩個tcp資料報。時間上:post比get消耗時間多。

2)請求頭(header):請求的屬性,冒號分割的鍵值對。

格式:key: val\r\n key: val\r\n

key冒號空格val換行

每行為乙個關鍵資訊,用「\r\n」(windows下)間隔,每一行資訊由鍵(key)

值(value)對組成

user-agent:將作業系統和瀏覽器的資訊告訴伺服器

content-type:正文型別(格式)

content-length:指定正文長度(一次性傳送)

cache-control:快取大小

accept-encoding:所能接收的資料格式

accept-language:能接受的語言

cookie:(最多300個,4k)儲存會話或是瀏覽資訊

set-cookie:儲存某些瀏覽器的資訊

referer:當前的請求從哪個網頁跳轉的

連續接收兩個「\r\n」表示請求頭請求接收

3)空格:用於間隔請求頭header與body正文

4)body:向伺服器傳送的正文(可以是空字串)。如果body存在,header中會有

乙個connect-length屬性來標識body的長度。

響應response

1)首行:協議版本號 響應狀態碼 狀態碼描述

響應狀態碼:1開頭(通知)

2開頭(響應成功)

3開頭(重定向     301:永久重定向    302:臨時重定向)

4開頭(客戶端錯誤      404:沒找到    403:forbidden)

5開頭(服務端錯誤)

2)header:

格式:key: val\r\n key: val\r\n

key冒號空格val換行

location:以3開頭的重定向的位置,表示下一次在**顯示

transfer-encoding:傳輸方式

chunked:分次傳送,最後大小以0 結束

expires:生存週期

3)空行:用於間隔請求頭header與body正文

4)body:向伺服器傳送的正文(可以是空字串)。如果body存在,header中會有

乙個connect-length屬性來標識body的長度。如果伺服器返回了乙個html介面,

那麼html頁面內容就是在body中。

5.http和https的區別:

1) https協議需要到ca申請證書,一般免費證書比較少,因而需要一定費用。

2) http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl 加密傳輸協議。

3) http和https使用的是完全不同的連線方式,用的埠號也不一樣,http是80埠,https是443埠。

4)http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸,身份認證的網路協議,比http更加安全。

6.cookie和session的區別

1) cookie存放在客戶端,伺服器能夠知道其中的資訊。

session儲存在伺服器端,客戶端不知道其中的資訊,一般以檔案的形式儲存,不同的使用者訪問會產生不同的session_id, session_id是該session值的唯一標示。

2) session中儲存的是物件,cookie中儲存的是字串.

3) session不能區分路徑,同乙個使用者在訪問乙個**期間,所有的session在任何乙個地方都可以訪問到.

cookie中如果設定了路徑引數,那麼同乙個**中不同路徑下的cookie互相是訪問不到的。

7.get和post的比較

(1)get是從伺服器端獲取資料,post則是向伺服器端傳送資料。

(2)在客戶端,get方式通過url提交資料,在url位址列可以看到請求訊息,該訊息被編碼過;post資料則是放在html header內提交。

(3)對於get方式,伺服器端用request.querystring獲取變數的值;對用post方式,伺服器端用request.form獲取提交的資料值。

(4)get方式提交的資料最多1024位元組,而post則沒有限制。

(5)get方式提交的引數及引數值會在位址列顯示,不安全,而post不會,比較安全。

應用層 HTTP協議

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

應用層協議 HTTP

http通常用於瀏覽器請求web 詳細參見 http 1.1協議中共定義了八種方法 也叫 動作 來以不同方式操作指定的資源 gethead 與get方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部分。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中 ...

HTTP 應用層協議

我們先了解一下http是什麼 http hypertext transfer protocol 超文字傳輸協議 http就是檔案傳輸的乙個協議,屬於應用層協議,使用tcp作為它的支撐傳輸協議 http是web的核心,web客戶端和web服務端通過交換http報文進行檔案傳輸 我們看一下客戶端是如何使...