你需要了解的網(wǎng)絡(luò)協(xié)議

網(wǎng)絡(luò)協(xié)議有哪些?

  • 應(yīng)用層:HTTP、FTP、SSH、SMTP
  • 表示層
  • 會(huì)話層
  • 傳輸層:TCP、UDP
  • 網(wǎng)絡(luò)層:IP
  • 數(shù)據(jù)鏈路層
  • 物理層

HTTP的工作流程如下 :

HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。

  1. 地址解析

    HTTP協(xié)議是通過標(biāo)準(zhǔn)URL來請(qǐng)求指定的服務(wù)器中指定服務(wù)的 . 一個(gè)標(biāo)的 URL 如下 :

http://www.baidu.com:80/index.html?name=tom&age=18

(1)http: 協(xié)議類型
(2)www.baidu.com 主機(jī)名,通過主機(jī)名,可以準(zhǔn)確定位到要訪問的那臺(tái)服務(wù)器

(3) 80 :端口號(hào) . HTTP請(qǐng)求的URL的時(shí)候,80端口一般是省略的

(4) index.html:請(qǐng)求的文件名

(5) ?name=tom&age=18:請(qǐng)求參數(shù)

  1. 在瀏覽器中輸入 URL,瀏覽器會(huì)從中分解出協(xié)議名、主機(jī)名、端口、對(duì)象路徑等部分

  2. 封裝 HTTP 請(qǐng)求數(shù)據(jù)包

  3. 瀏覽器獲取主機(jī) IP 地址,建立 TCP 鏈接(TCP 的三次握手)

  4. TCP 鏈接建立后發(fā)送 HTTP 請(qǐng)求

  5. 請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào),后邊是 MIME 信息包括請(qǐng)求修飾符、客戶機(jī)信息和可內(nèi)容。

  6. 服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息

  7. 其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是 MIME 信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容

  8. 服務(wù)器斷開 TCP 連接

HTTPS實(shí)現(xiàn)過程是什么?

HTTPS(超文本傳輸安全協(xié)議)是一種通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議,提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,保護(hù)數(shù)據(jù)傳輸?shù)耐暾?、安全性?/p>

HTTPS:是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。

HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認(rèn)網(wǎng)站的真實(shí)性。

實(shí)現(xiàn)過程:

  1. 客戶端發(fā)起一個(gè) https 的請(qǐng)求

  2. 服務(wù)端接收客戶端請(qǐng)求,返回?cái)?shù)字證書相關(guān)信息

  3. 客戶端收到服務(wù)端響應(yīng)

  4. 驗(yàn)證證書的合法性

  5. 如果證書受信任,生成隨機(jī)數(shù)的密碼

  6. 使用約定好的 HASH 算法計(jì)算握手消息,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密,然后發(fā)送給服務(wù)端

  7. 網(wǎng)站接收瀏覽器發(fā)來的密文后

  8. 使用私鑰來解密握手消息取出隨機(jī)數(shù)密碼,再用隨機(jī)數(shù)密碼解密,握手消息與 HASH 值,并與傳過來的HASH值做對(duì)比確認(rèn)是否一致

  9. 使用密碼加密一段握手消息,發(fā)送給瀏覽器

  10. 瀏覽器解密并計(jì)算握手消息的 HASH,如果與服務(wù)端發(fā)來的 HASH 一致,此時(shí)握手過程結(jié)束,之后所有的通信數(shù)據(jù),將由之前瀏覽器生成的隨機(jī)密碼,并利用對(duì)稱加密算法進(jìn)行加密。

數(shù)字證書都包含那些信息?

  1. 證書的版本信息;

  2. 證書的序列號(hào),每個(gè)證書都有一個(gè)唯一的證書序列號(hào);

  3. 證書所使用的簽名算法;

  4. 證書的發(fā)行機(jī)構(gòu)名稱;

  5. 證書的有效期;

  6. 證書所有人的名稱、公開密鑰;

  7. 證書發(fā)行者對(duì)證書的簽名

TCP 三次握手的流程

  • 客戶端發(fā)送一個(gè) SYN 標(biāo)志位置 1 的包,指明客戶端要連接服務(wù)器端的接口,發(fā)送完畢后,客戶端進(jìn)入 SYN_SEND 狀態(tài)

  • 服務(wù)器發(fā)回確認(rèn)包 (ACK) 應(yīng)答。即 SYN 標(biāo)志位和 ACK 標(biāo)志位均為1。服務(wù)器端選擇自己 ISN 序列號(hào),放到 Seq 域里,同時(shí)將確認(rèn)序號(hào)(Acknowledgement Number)設(shè)置為客戶的 ISN 加1,即X+1。 發(fā)送完畢后,服務(wù)器端進(jìn)入 SYN_RCVD 狀態(tài)。

  • 客戶端再次發(fā)送確認(rèn)包(ACK),SYN 標(biāo)志位為0,ACK 標(biāo)志位為1,并且把服務(wù)器發(fā)來 ACK 的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方,并且在數(shù)據(jù)段放寫ISN的+1

  • 發(fā)送完畢后,客戶端進(jìn)入 ESTABLISHED 狀態(tài),當(dāng)服務(wù)器端接收到這個(gè)包時(shí),也進(jìn)入 ESTABLISHED 狀態(tài),TCP 握手結(jié)束。

Socket工作流程是怎樣的?

Socket 又稱網(wǎng)絡(luò)套接字,是一種操作系統(tǒng)提供的進(jìn)程間通信機(jī)制。

工作流程:

  1. 服務(wù)端先用 socket 函數(shù)來建立一個(gè)套接字,并調(diào)用 listen 函數(shù),使服務(wù)端的這個(gè)端口和 IP 處于監(jiān)聽狀態(tài),等待客戶端的連接

  2. 客戶端用 socket 函數(shù)建立一個(gè)套接字,設(shè)定遠(yuǎn)程 IP 和端口,并調(diào)用 connect 函數(shù)

  3. 服務(wù)端用 accept 函數(shù)來接受遠(yuǎn)程計(jì)算機(jī)的連接,建立起與客戶端之間的通信

  4. 完成通信以后,最后使用 close 函數(shù)關(guān)閉 socket 連接。

HTTP1.1 與 WebSocket 的區(qū)別?

HTTP 是一個(gè)單鏈接,只能做單向通訊,而 WebSocket 是一個(gè)持久鏈接,可用作雙向通訊

WebSocket 是基于 HTTP 來建立連接的,但在建立連接之后,真正的數(shù)據(jù)傳輸階段是不需要 HTTP 協(xié)議參與的

WebSocket 的請(qǐng)求的頭部和 HTTP 請(qǐng)求頭部不同

WebSocket 傳輸?shù)臄?shù)據(jù)是二進(jìn)制流,是以幀為單位,HTTP 是明文字符串傳輸

OAuth2.0 協(xié)議運(yùn)行流程是怎樣的?

OAuth(Open Authorization) 協(xié)議為用戶資源的授權(quán)提供了一個(gè)安全的、開放而又簡(jiǎn)易的標(biāo)準(zhǔn),第三方無需使用用戶的用戶名與密碼,就可以申請(qǐng)獲得該用戶資源的授權(quán)。

運(yùn)行流程:

  • 用戶打開客戶端以后,客戶端要求用戶給予授權(quán)。

  • 用戶同意給予客戶端授權(quán)

  • 客戶端使用上一步獲得的授權(quán),向認(rèn)證服務(wù)器申請(qǐng)令牌。

  • 認(rèn)證服務(wù)器對(duì)客戶端進(jìn)行認(rèn)證以后,確認(rèn)無誤,同意發(fā)放令牌。

  • 客戶端使用令牌,向資源服務(wù)器申請(qǐng)獲取資源。

  • 資源服務(wù)器確認(rèn)令牌無誤,同意向客戶端開放資源

OAuth 2.0 定義了四種授權(quán)方式,授權(quán)碼模式、簡(jiǎn)化模式、密碼模式、客戶端模式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容