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