摘要:地址每次面試多多少少都會被問到等等之類協(xié)議,協(xié)議相關(guān)的問題也可以說是面試必備,所以我把這些知識多帶帶收集成了一篇文章。即標(biāo)志位和標(biāo)志位均為。發(fā)送完畢后,服務(wù)器端進入狀態(tài)。認(rèn)證服務(wù)器對客戶端進行認(rèn)證以后,確認(rèn)無誤,同意發(fā)放令牌。
Git 地址:https://github.com/todayqq/PH...
每次面試多多少少都會被問到 HTTP、HTTPS、TCP、Socket、 OAuth 等等之類協(xié)議,協(xié)議相關(guān)的問題也可以說是面試必備,所以我把這些知識多帶帶收集成了一篇文章。
網(wǎng)絡(luò)協(xié)議有哪些?
應(yīng)用層:HTTP、FTP、SSH、SMTP
表示層
會話層
傳輸層:TCP、UDP
網(wǎng)絡(luò)層:IP
數(shù)據(jù)鏈路層
物理層
簡述 HTTP 協(xié)議的工作流程
地址解析;
在瀏覽器中輸入 URL,瀏覽器會從中分解出協(xié)議名、主機名、端口、對象路徑等部分
封裝 HTTP 請求數(shù)據(jù)包
瀏覽器獲取主機 IP 地址,建立 TCP 鏈接(TCP 的三次握手)
TCP 鏈接建立后發(fā)送 HTTP 請求
請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是 MIME 信息包括請求修飾符、客戶機信息和可內(nèi)容。
服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息
其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是 MIME 信息包括服務(wù)器信息、實體信息和可能的內(nèi)容
服務(wù)器斷開 TCP 連接
什么是 HTTPS?實現(xiàn)過程是什么?
HTTPS(超文本傳輸安全協(xié)議)是一種通過計算機網(wǎng)絡(luò)進行安全通信的傳輸協(xié)議,提供對網(wǎng)站服務(wù)器的身份認(rèn)證,保護數(shù)據(jù)傳輸?shù)耐暾?、安全性?/p>
實現(xiàn)過程:
客戶端發(fā)起一個 https 的請求
服務(wù)端接收客戶端請求,返回數(shù)字證書相關(guān)信息
客戶端收到服務(wù)端響應(yīng)
驗證證書的合法性
如果證書受信任,生成隨機數(shù)的密碼
使用約定好的 HASH 算法計算握手消息,并使用生成的隨機數(shù)對消息進行加密,然后發(fā)送給服務(wù)端
網(wǎng)站接收瀏覽器發(fā)來的密文后
使用私鑰來解密握手消息取出隨機數(shù)密碼,再用隨機數(shù)密碼解密,握手消息與 HASH 值,并與傳過來的HASH值做對比確認(rèn)是否一致
使用密碼加密一段握手消息,發(fā)送給瀏覽器
瀏覽器解密并計算握手消息的 HASH,如果與服務(wù)端發(fā)來的 HASH 一致,此時握手過程結(jié)束,之后所有的通信數(shù)據(jù),將由之前瀏覽器生成的隨機密碼,并利用對稱加密算法進行加密。
數(shù)字證書都包含那些信息?
證書的版本信息;
證書的序列號,每個證書都有一個唯一的證書序列號;
證書所使用的簽名算法;
證書的發(fā)行機構(gòu)名稱;
證書的有效期;
證書所有人的名稱、公開密鑰;
證書發(fā)行者對證書的簽名
TCP 三次握手的流程
客戶端發(fā)送一個 SYN 標(biāo)志位置 1 的包,指明客戶端要連接服務(wù)器端的接口,發(fā)送完畢后,客戶端進入 SYN_SEND 狀態(tài)
服務(wù)器發(fā)回確認(rèn)包 (ACK) 應(yīng)答。即 SYN 標(biāo)志位和 ACK 標(biāo)志位均為1。服務(wù)器端選擇自己 ISN 序列號,放到 Seq 域里,同時將確認(rèn)序號(Acknowledgement Number)設(shè)置為客戶的 ISN 加1,即X+1。 發(fā)送完畢后,服務(wù)器端進入 SYN_RCVD 狀態(tài)。
客戶端再次發(fā)送確認(rèn)包(ACK),SYN 標(biāo)志位為0,ACK 標(biāo)志位為1,并且把服務(wù)器發(fā)來 ACK 的序號字段+1,放在確定字段中發(fā)送給對方,并且在數(shù)據(jù)段放寫ISN的+1
發(fā)送完畢后,客戶端進入 ESTABLISHED 狀態(tài),當(dāng)服務(wù)器端接收到這個包時,也進入 ESTABLISHED 狀態(tài),TCP 握手結(jié)束。
什么是 Socket?工作流程是怎樣的?
Socket 又稱網(wǎng)絡(luò)套接字,是一種操作系統(tǒng)提供的進程間通信機制。
工作流程:
服務(wù)端先用 socket 函數(shù)來建立一個套接字,并調(diào)用 listen 函數(shù),使服務(wù)端的這個端口和 IP 處于監(jiān)聽狀態(tài),等待客戶端的連接
客戶端用 socket 函數(shù)建立一個套接字,設(shè)定遠(yuǎn)程 IP 和端口,并調(diào)用 connect 函數(shù)
服務(wù)端用 accept 函數(shù)來接受遠(yuǎn)程計算機的連接,建立起與客戶端之間的通信
完成通信以后,最后使用 close 函數(shù)關(guān)閉 socket 連接。
HTTP1.1 與 WebSocket 的區(qū)別?
HTTP 是一個單鏈接,只能做單向通訊,而 WebSocket 是一個持久鏈接,可用作雙向通訊。
WebSocket 是基于 HTTP 來建立連接的,但在建立連接之后,真正的數(shù)據(jù)傳輸階段是不需要 HTTP 協(xié)議參與的
WebSocket 的請求的頭部和 HTTP 請求頭部不同
WebSocket 傳輸?shù)臄?shù)據(jù)是二進制流,是以幀為單位,HTTP 是明文字符串傳輸
什么是 OAuth2.0 協(xié)議?運行流程是怎樣的?
OAuth(Open Authorization) 協(xié)議為用戶資源的授權(quán)提供了一個安全的、開放而又簡易的標(biāo)準(zhǔn),第三方無需使用用戶的用戶名與密碼,就可以申請獲得該用戶資源的授權(quán)。
運行流程:
用戶打開客戶端以后,客戶端要求用戶給予授權(quán)。
用戶同意給予客戶端授權(quán)
客戶端使用上一步獲得的授權(quán),向認(rèn)證服務(wù)器申請令牌。
認(rèn)證服務(wù)器對客戶端進行認(rèn)證以后,確認(rèn)無誤,同意發(fā)放令牌。
客戶端使用令牌,向資源服務(wù)器申請獲取資源。
資源服務(wù)器確認(rèn)令牌無誤,同意向客戶端開放資源
OAuth 2.0 定義了四種授權(quán)方式,授權(quán)碼模式、簡化模式、密碼模式、客戶端模式,具體的授權(quán)流程,請看阮一峰老師的文章理解OAuth 2.0。
擴展閱讀https 原理
HTTPS 原理解析
HTTPS 的工作原理
socket
HTTP與WebSocket的區(qū)別
理解OAuth 2.0
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28429.html
摘要:擴展閱讀收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊協(xié)議工作原理協(xié)議運行機制的概述 本書的 GitHub 地址:https://github.com/todayqq/PH... 對于大公司,很少會有全棧工程師這個崗位,全棧是個花哨的詞,對于現(xiàn)在比較熱門的技術(shù),不論是 Vue 還是 Laravel,只要智商不差,看著文檔,都能寫出一個 CURD 來,...
摘要:前端篇收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊協(xié)議工作原理協(xié)議運行機制的概述協(xié)議篇原理原理解析的工作原理與的區(qū)別理解后端篇年的面試總結(jié)垃圾回收機制面向?qū)ο笤O(shè)計淺談?wù)f清楚是什么和的區(qū)別索引原理及慢查 前端篇 收集的前端面試題和答案 前端開發(fā)面試題 史上最全的web前端面試題匯總及答案 前端工程師手冊 HTTP協(xié)議:工作原理 SSL/TLS協(xié)議運行...
摘要:本書的地址篇收集了一些常見的基礎(chǔ)進階面試題,基礎(chǔ)的面試題不再作答。如何實現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫狀態(tài)。相當(dāng)于備份數(shù)據(jù)庫接收到的命令,所有被寫入的命令都是以的協(xié)議格式來保存的。 本書的 GitHub 地址:https://github.com/todayqq/PH... PHP 篇收集了一些常見的基礎(chǔ)、進階面試題,基礎(chǔ)的面試題不再作答。 基礎(chǔ)篇 ...
摘要:先說一下面試時的心態(tài),剛?cè)腴T的程序員,技術(shù)實力不高,又大多不善言談,面試一旦遇到難題,很容易心態(tài)失衡驚慌失措語無倫次,最終丟掉了。其實大可不必,心態(tài)坦然,是面試必備的一點。 本書的 GitHub 地址:https://github.com/todayqq/PH... 作為一位程序員,面試過多次,也面試過很多人,最近又在找工作,總結(jié)一下面試經(jīng)驗和面試題,希望可以幫到正在找工作的小伙伴們...
摘要:快速排序快速排序是對冒泡排序的一種改進。獲取中間數(shù)兩值相等,返回元素比目標(biāo)大,查找左部元素比目標(biāo)小,查找右部查找失敗擴展閱讀冒泡排序?qū)崿F(xiàn)快速排序?qū)崿F(xiàn)各種經(jīng)典算法常見算法面試篇實現(xiàn)二分查找法 本書的 GitHub 地址:https://github.com/todayqq/PH... 算法可以說是大廠的必考題,對于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一組數(shù)據(jù),...
閱讀 2894·2021-11-25 09:43
閱讀 2555·2021-10-09 09:44
閱讀 2839·2021-09-22 15:49
閱讀 2632·2021-09-01 11:43
閱讀 2575·2019-08-30 14:16
閱讀 499·2019-08-29 17:24
閱讀 3056·2019-08-29 14:00
閱讀 1415·2019-08-29 13:05