計算機網絡(網頁顯示過程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)

前言

最近一直在后端開發的面經🙌,里面涉及到了好多計算機網絡的知識😁,在這里以問題的形式寫一個學習筆記(其中參考了: JavaGuide 和 小林coding 這兩個很好的學習網站😘)

1.當鍵入網址后,到網頁顯示,其間發生了什么?

(1)首先瀏覽器會解析URL。(如確定協議像Http或Https)
(2)然后通過DNS服務器把域名解析為IP地址。(找到服務器啦)
(3)接著TCP協議三次握手和服務器建立連接。(客戶端與服務器之間建立起連接了)
(4)成功建立連接后,瀏覽器向服務器發送一個 HTTP 請求報文。(發送數據了)
(5)服務器收到 HTTP 請求報文后,處理請求,并返回 HTTP 響應報文給瀏覽器。
(6)最后,瀏覽器把這些內容解析并展示出來。

2.TCP 傳輸數據之前,要先三次握手建立連接,過程是什么?

我們都知道在 HTTP 傳輸數據之前,首先需要 TCP 建立連接,Http數據的傳輸是要基于TCP 連接的。

(1).首先,客戶端發一個SYN包給服務器(這就像打招呼說:你好!我想連你了😘)
(2.)服務器收到后,發送一個SYN+ACK包回去(我收到啦,同意連接)
(3).客戶端收到后,再發一個ACK包給服務器,確認連接。

在這里插入圖片描述

3.HTTP1.0,1.1,2.0,3.0區別?

這個吧,它這個很多,我也沒咋學全面,我感覺吧,因為Http數據的傳輸是要基于TCP 連接的,這個技術基于傳輸層,就是不斷提升不斷升級就是是運輸的效率更高?稍微總結一下:

(1)HTTP/1.0 每次請求響應都要建立新連接,效率低。
(2)HTTP/1.1 支持持久連接,能減少連接開銷,但還是按順序來處理請求。
(3)HTTP/2.0 能同時處理多個請求,多路復用,傳輸更快。
(4)HTTP/3.0 用UDP協議替代了TCP,減少了TCP握手延遲,改進了擁塞控制,在高丟包網絡環境下性能更好。

4.HTTP 是不保存狀態的協議, 如何保存用戶狀態?

這個在后端開發登陸界面的時候有很大用處

方法一:Session (會話) 配合 Cookie (主流方式)

🙌先來了解一下Cookie和Session:
**cookie:**是主要在客戶端,能存一些小數據,,就像身份證,負責在客戶端和服務器見傳遞標志;
**Session:**主要在服務端,就像檔案庫,在服務器端存客戶端的狀態信息

基本流程是這樣的:

(1)用戶向服務器發送用戶名、密碼、驗證碼用于登陸系統。
(2)服務器驗證通過后,會為這個用戶創建一個專屬的 Session 對象
(3)服務器通過 HTTP 響應頭中的 Set-Cookie 指令,把這個 Session發送給用戶的瀏覽器。
(4)瀏覽器接收到 SessionID 后,會將其以 Cookie 的形式保存在本地。
(5)當用戶保持登錄狀態時,每次向該服務器發請求,瀏覽器都會自動帶上這個存有 Session 的 Cookie。
(6)服務器收到請求后,從 Cookie 中拿出 Session,就能找到之前保存的那個 Session 對象

注🤯:然而這種方法不支持跨域請求,所以一般使用以下方法:

方法二:Token-based 認證 (如 JWT - JSON Web Tokens)

這個我在蒼穹外賣登錄界面的文章里寫過,里面還有實現代碼感興趣想進一步學習可以看看: 點我🙌

實現步驟如下:
(1)用戶向服務器發送用戶名、密碼以及驗證碼用于登陸系統;
(2)如果用戶用戶名、密碼以及驗證碼校驗正確的話,服務端會返回已經簽名的 Token,也就是 JWT;
(3)客戶端收到 Token 后自己保存起來(比如瀏覽器的 localStorage )用戶以后每次向服務端發請求都在 Header 中帶上這個 JWT (直接當發送信息儲存到HTTP傳輸數據中);
(4)服務端檢查 JWT 并從中獲取用戶相關信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87668.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 消息的發布和訂閱

Redis 消息的發布和訂閱 1、什么是發布和訂閱 Redis 發布訂閱 (pub/sub) 是一種消息通信模式:發送者 (pub) 發送消息,訂閱者 (sub) 接收消息。 Redis 客戶端可以訂閱任意數量的頻道。 2、Redis的發布和訂閱示意 1、客戶端可以訂閱頻道如下圖 2、當…

python優先隊列使用

heapq 是 Python 的一個內置模塊,提供了堆隊列算法的實現,也稱為優先隊列算法。以下是關于 heapq 模塊的詳細使用說明。 基本概念 堆:一種特殊的二叉樹結構,滿足父節點總是小于或等于其子節點(最小堆)特性…

在 Windows 機器上安裝和配置 RabbitMQ

RabbitMQ 它是一款基于 AMQP(高級消息隊列協議)的流行消息代理。RabbitMQ 適用于 Windows、Linux 和 macOS,易于安裝和使用,并提供一系列強大的消息隊列和路由功能。要在 Windows 計算機上使用 RabbitMQ,您必須先安裝 …

第十五節:第六部分:日志技術:logback的核心配置文件詳解、日志級別

核心配置文件logback.xml 什么是日志級別,為什么要學日志級別

從入門到精通:數據庫全攻略

目錄一、數據庫基礎概念1.1 數據庫定義1.2 數據庫與文件系統的區別1.3 數據庫系統組成部分1.4 關系型數據庫與非關系型數據庫二、數據庫安裝與配置2.1 下載 MySQL2.2 安裝 MySQL2.3 初始化數據庫服務器2.4 啟動和停止 MySQL 服務2.5 登錄 MySQL2.6 創建數據庫2.7 創建數據表三、…

【JAVA】消息隊列(MQ)是個好東西

一、前言再JAVA系統開發中,再高并發的場景經常需要使用到消息隊列,有時候是不得不使用到消息對了。特別是大數據量的并發處理。對數據實時性要求又沒那么高的情況下。用戶請求 → 接入層(Nginx) → 限流 → 消息隊列 → 訂單服務 → 庫存服務 → 支付服務…

【Golang面試題】Go結構體的特點,與其它語言的區別

Go 結構體深度解析:與 C/C、Java 的全面對比 一、核心概念對比特性Go 結構體 (struct)C/C 結構體 (struct)Java 類 (class)本質值類型復合數據類型值類型復合數據類型引用類型內存分配棧或堆 (編譯器決定)棧 (顯式控制)堆 (JVM管理)默認訪問權限首字母大寫導出publi…

CppCon 2018 學習:OOP is dead, long live Data-oriented design

探討了面向對象編程(OOP)的一些根本性問題深入理解: 標題:What is so wrong with OOP? 什么是面向對象的問題? 這不是說 OOP “絕對錯誤”,而是指出它在實踐中經常引發的問題,尤其是在性能敏…

科學的第五范式:人工智能如何重塑發現之疆

在人類探索未知的壯闊史詩中,科學方法的演進如同照亮迷霧的燈塔。從基于經驗的第一范式(描述自然現象),到以理論推演為核心的第二范式(牛頓定律、麥克斯韋方程),再到以計算機模擬為標志的第三范…

tmux 左下角會話名顯示不全的解決方法

在 tmux 中顯示完整的會話名 有時候我們要在服務器上長時間跑某個任務,但不可能時時刻刻保持終端模擬器開啟,這時候就需要用到 tmux ,可以在關閉會話的同時讓任務繼續在后臺跑,后續還可以連回來。但在 tmux 會話中,左…

【期末分布式】分布式的期末考試資料大題整理

🧸安清h:個人主頁 🎥個人專欄:【Spring篇】【計算機網絡】【Mybatis篇】 🎯大題 ?一.Nacos的服務注冊與發現 🚦1.怎么來進行服務的注冊與發現的這樣的一個流程,描述一下。 🎃描述…

Android手機無網離線使用FunASR識別麥克風語音內容

手機斷網離線使用FunASR識別麥克風語音內容 --本地AI電話機器人 上一篇:阿里FunASR本地斷網離線識別模型簡析 下一篇:手機無網離線使用FunASR識別手機歷史通話錄音 一、前言 繼上一篇《阿里FunASR本地斷網離線識別模型簡析》和前面幾篇ASR相關理論的…

Stable Diffusion 項目實戰落地:從0到1 掌握ControlNet 第五篇 線稿到高清修復:一步步教你用AI做出完美IP形象

大家好!上一篇,我們一起玩轉了字體風格變換 ,讓文字根據提示詞進行自如變換,個性十足又充滿創意! 如果你錯過了那篇文章,別擔心,趕緊點這里補課:Stable Diffusion 項目實戰落地:從0到1 掌握ControlNet 第四篇 風格化字體大揭秘:從線稿到涂鴉,ControlNet讓文字煥發新生…

Java網絡編程:TCP/UDP套接字通信詳解

TCP客戶端套接字創建與使用 Socket類基礎概念 Socket類的對象代表TCP客戶端套接字,用于與TCP服務器套接字進行通信。與服務器端通過accept()方法獲取Socket對象不同,客戶端需要主動執行三個關鍵步驟:創建套接字、綁定地址和建立連接。 客戶端…

VMware vSphere 9與ESXi 9正式發布:云原生與AI驅動的虛擬化平臺革新

2025年6月18日,VMware正式推出其旗艦虛擬化平臺vSphere 9及配套的ESXi 9操作系統,標志著企業級虛擬化技術邁入以云原生、人工智能(AI)和硬件加速為核心的新紀元。此次更新不僅在功能層面實現突破,更通過授權模式革新為…

汽車功能安全概念階段開發【相關項定義HARA】2

文章目錄 1 淺談概念階段開發2 功能安全概念階段開發2.1 相關項定義2.2 危害分析與風險評估(HARA-Hazard Analysis and Risk Assessment) 3 關鍵輸出與對后續階段的影響4 總結 1 淺談概念階段開發 概念階段開發是整個研發流程的起點和基石。它發生在任何…

WPF中依賴屬性和附加屬性

依賴屬性(DependencyProperty) 依賴屬性是WPF中的一種特殊屬性,它的實現依賴于DependencyObject類提供的基礎設施。與普通的.NET屬性不同,依賴屬性的值可以通過多種方式確定,包括繼承、樣式、數據綁定和動畫等。 主要特…

Docker 中如何實現鏡像的推送和拉取

在 Docker 中,鏡像的推送(push)和拉取(pull)是通過與**Docker 鏡像倉庫(Registry)**交互完成的。默認倉庫是 Docker Hub,但你也可以使用私有倉庫(Harbor、Nexus、AWS ECR…

[C#] WPF - 自定義樣式(Slider篇)

一、定義樣式 在App.xaml里面定義樣式&#xff1a; <Applicationx:Class"WpfApp.StudySlider.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local&q…

eBPF 實戰指南:精準定位 TCP 重傳,洞察網絡瓶頸真相

更多云服務器知識&#xff0c;盡在hostol.com 你有沒有遇到過這種情況&#xff1f;網站訪問卡頓&#xff0c;接口響應慢得像蝸牛爬。你 ping 服務器沒丟包&#xff0c;CPU 內存也沒打滿&#xff0c;日志也沒報錯&#xff0c;結果就是不知道哪兒出的問題。 你用抓包分析&#x…