一、網絡分層架構
1.1 分層架構匯總圖
原文鏈接:https://blog.csdn.net/qq_38560742/article/details/88398270
1.2 分析相應層接口作用(自己整理)
1.3 網絡通信過程
原文鏈接:https://www.runoob.com/http/http-tutorial.html
數據通信:
封裝: 應用層 —— 傳輸層 —— 網絡層 —— 鏈路層 。 沒有經過封裝的數據,不能在網絡環境中傳遞。
解封裝 : 鏈路層 —— 網絡層 —— 傳輸層 —— 應用層
TCP(傳輸層)通信過程:
三次握手:
1. 主動發起請求端, 發送 SYN
2. 被動建立連接請求端 , 應答ACK 同時 發送 SYN
3. 主動發起請求端,發送應答 ACK
* 標志 TCP 三次握手建立完成。 —— server:Accept() 返回 。— client:Dial() 返回。
四次揮手:
1. 主動關閉連接請求端, 發送 FIN
2. 被動關閉連接請求端 ,應答 ACK
標志。半關閉完成。 —— close()
3. 被動關閉連接請求端 ,發送 FIN
4. 主動關閉連接請求端,應答 ACK
標志。四次揮手建立完成。 —— close().
1.4 socket:套接字
網絡通信過程中,socket 一定是成對出現的。
1,在TCP/IP協議中,“IP地址+TCP或UDP端口號”唯一標識網絡通訊中的一個進程。
2,IP地址+端口號:就對應一個socket。
3,欲建立連接的兩個進程各自有一個socket來標識,那么這兩個socket組成的socket pair就唯一標識
一個連接。
4,Socket來描述網絡連接的一對一關系。
5,常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數據報式Socket(SOCK_DGRAM)。
a)流式是一種面向連接的Socket,針對於面向連接的TCP服務應用;
b)據報式Socket是一種無連接的Socket,對應於無連接的UDP服務應用。
二、 HTTP協議
2.1 HTTP協議是什么?
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適
用於分布式超媒體信息系統。
HTTP協議特點:
1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
2、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
3.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
4.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
5、支持B/S及C/S模式。
2.2 HTTP之狀態碼
狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:
1xx:指示信息--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:服務器端錯誤--服務器未能實現合法的請求
常見狀態碼:
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden //服務器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //服務器發生不可預期的錯誤
503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。
2.3 請求格式(在頁面按F12查看請求結構)
客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成,下圖給出了請求報文的一般格式。
HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。
2.4 請求方法
HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
1 GET 請求指定的頁面信息,並返回實體主體。
2 HEAD 類似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。
Content-Type(內容類型),一般是指網頁中存在的 Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,Content-Type 標頭告訴客戶端實際返回的內容的內容類型。
2.5 HTTP之狀態碼
狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:
1xx:指示信息--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:服務器端錯誤--服務器未能實現合法的請求
常見狀態碼:
200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用 403 Forbidden //服務器收到請求,但是拒絕提供服務 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL 500 Internal Server Error //服務器發生不可預期的錯誤 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常