深入理解TCP/IP應用層


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


免責聲明!

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



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