TCP/IP四層模型分為: 應用層,傳輸層(只關註起點(發送者)和終點(接收者)),網路層(規划出一條或幾條路線),數據鏈路層(關註兩個相鄰點之間怎麼傳輸) 設備驅動程式及 網路介面負責 一、應用層: 1、HTTP協議(主要協議):HTTP是超文本傳輸協議,是當前最流行也是最典型的應用層協議 HTT ...
TCP/IP四層模型分為: 應用層,傳輸層(只關註起點(發送者)和終點(接收者)),網路層(規划出一條或幾條路線),數據鏈路層(關註兩個相鄰點之間怎麼傳輸)
協議 | ||
應用層 | DNS,URI,HTML,HTTP,SSL,SMTP,POP,IMAPTELNET,SSH,FTP,SNMP | 應用程式相關 |
傳輸層 | TCP,UDP,UDP-Lite,SCTP,DCCP | 操作系統內核負責 |
網路層 | ARP,IP,ICMP | 操作系統內核負責 |
數據鏈路層 | 網卡層(乙太網協議) |
設備驅動程式及 網路介面負責 |
一、應用層:
1、HTTP協議(主要協議):HTTP是超文本傳輸協議,是當前最流行也是最典型的應用層協議
HTTP還衍生出了封裝SSL
協議的“安全版”,HTTPS是HTTP協議的安全版,從2015年以後,基本上採用HTTPS,其更為安全,加密
2、HTTP協議的格式:
HTTP協議格式又分為其請求和相應模式
請求模式:
1)首行:方法(GET/POST/HEAD/PUT/DELETE/...)+URL+版本號(HTTP1.1為多數場景下)
2) Content-Length 表示body部分的長度(位元組)
Content-Type 表示body部分的數據格式
協議頭header:請求的屬性,每一行都是一個鍵值對,鍵和值之間用": "來分割,每組屬性之間用\n分隔
User-Agent:表示操作系統和瀏覽器的型號
- host 表示客戶端告知伺服器, 所請求的資源是在哪個主機的哪個埠上;
- Referer表示當前頁面是從哪個頁面跳轉過來的
- Cookie:用於在客戶端存儲少量信息. 通常用於實現會話(session)的功能,瀏覽器存儲數據的一種方式(客戶端的概念) ,這裡麵包含身份標識session id內容都是由對應的程式員決定 的,Session是伺服器進行描述用戶身份信息的方式(服務端的概念)
- location:搭配3xx狀態碼使用, 告訴客戶端接下來要去哪裡訪問;
空行:表示header結束的標記
3)body正文:即協議正文,數據種類非常多樣了,也可能body為空(GET請求一般為空,POST請求一般有數據)空行後面的內容都是body,body允許為空字元串,如果body存在,則在Header中會有一個
響應模式:
1)首行+狀態碼(標識這次請求是否失敗,以及原因)+狀態碼描述信息
2)協議頭header,每一行是一個冒號分隔的鍵值對,請求的屬性,每組屬性之間用\n分隔,遇到空行表示Header結束
3)body:空行後面的內容都是body,body允許為空字元串,如果body存在,則在header中會有一個Content-Length屬性會標識Body的長度;
如果伺服器返回了一個html頁面那麼html頁面中的內容就是在body中
3、HTTP協議的方法:
方法 | 說明 | 支持的HTTP協議版本 |
POST | 獲取資源 | 1.0, 1.1 |
GET | 傳輸實體主體 | 1.0, 1.1 |
PUT | 傳輸文件 | 1.0, 1.1 |
HEAD | 獲得報文首部 | 1.0, 1.1 |
DELETE | 刪除文件 | 1.0, 1.1 |
OPTIONS | 詢問支持的方法 | 1.1 |
TRACE | 追蹤路徑 | 1.1 |
CONNECT | 要求用隧道協議連接代理 | 1.1 |
LINK | 建立和資源之間的關係 | 1.0 |
UNLICK | 斷開連接關係 | 1.0 |
常用的方法:GET和POST
GET和POST的區別?
GET把數據放在query_string來傳輸,POST請求通常把數據據通過body來傳輸
並不是唯一,也可以互放,只是習慣性
4、HTTP的狀態碼:
類別 | 原因短語 | |
1XX | Informational(信息性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 伺服器無法處理請求 |
5XX | Server Error(伺服器錯誤狀態碼) | 伺服器處理請求出錯 |
200 OK 請求成功 2xx表示請求成功
302 重定向 3xx重定向(呼叫轉移)
303 Location:url 重定向到某url
404 not Found表示訪問失敗(但百度並沒有用404而是302) 4xx都表示客戶端開頭
403表示沒有許可權
5xx表示伺服器錯誤
502(伺服器掛了)
504超時(伺服器響應速度過慢,伺服器部署在某雲上,帶寬過小,卡只是現象,還有cpu,記憶體問題...cpu占用,帶寬占用,記憶體占用)
cookie和session id的區別:
cookie:存了一個字元串(方便數據永久性存儲):客戶端里所保存的字元串
session id(大概率放到cookie) 會話id,session對象裡面記錄某個特定用戶的登陸等信息,購買記錄,購物車,結算等
會話對象由伺服器創建,分配一個session id,再將session id寫到瀏覽器的cookie裡面,後續瀏覽器再訪問你相同的網站(區別相同網頁,而是網站)的時候,都會帶上一個相同的cookie內容,來識別用戶信息
(Session是伺服器進行描述用戶信息的方式(伺服器端的概念))
實現Session機制的過程中(程式員手動實現的),通常要把 session id放到cookie中來保存
POST