計算機網絡——鍵入網址到網頁顯示,期間發生了什么?

  • 瀏覽器做的第一步工作是解析 URL,分清協議是http還是https,主機名,路徑名,然后生成http消息,之后委托操作系統將消息發送給 Web 服務器。
  • 在發送之前,還需要先去查詢dns,首先是查詢緩存瀏覽器緩存、電腦緩存、路由器緩存、運營商緩存、請求dns服務器的緩存;然后udp協議查詢本地dns服務器,本地dns服務器沒有再去迭代查詢頂級-次級等一系列服務器,最終返回給電腦,并緩存。
  • 知道了地址,下一步就是把 HTTP 的傳輸工作交給操作系統中的協議棧,協議棧的內部分為幾個部分,分別承擔不同的工作。上下關系是有一定的規則的,上面的部分會向下面的部分委托工作,下面的部分收到委托的工作并執行。
    在這里插入圖片描述
  • 接下來 數據包去找tcp協議棧打包成tcp數據包 源端口一般是瀏覽器監聽的端口(通常是隨機生成的),而目的端口如果http一般80 https一般443
  • 然后 tcp先通過三次握手的方式 經由ip協議、數據鏈路等建立連接
  • 之后數據包下一步 打包成ip格式報文 添加ip報文頭
  • 由網卡發出,通過路由表,確定下一跳的位置(一般是路由器)
  • 然后通過arp協議,由ip地址找到路由器的mac地址,添加mac頭部等,轉化為電信號發送給路由器的交換機模塊
  • 交換機接收到數據包后,根據mac表,確定發到哪個端口,由于我們是向外,所以是發到路由器模塊
  • 經歷路由器等等一系列路由器 經過網線傳輸,可能還要經歷NAT流程,最終達到目標地址和端口
  • 對方洋蔥皮解碼,然后服務器做出響應,將對于的html文本發回給瀏覽器
  • 釋放tcp連接(不一定)
  • 瀏覽器將該 html 文本并顯示內容;

https版本需要增加

用戶在瀏覽器里輸入一個https網址,然后連接到server的443端口。
服務器必須要有一套數字證書,可以自己制作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過。這套證書其實就是一對公鑰和私鑰。
服務器將自己的數字證書(含有公鑰)發送給客戶端。
客戶端收到服務器端的數字證書之后,會對其進行檢查,如果不通過,則彈出警告框。如果證書沒問題,則生成一個密鑰(對稱加密),用證書的公鑰對它加密。
客戶端會發起HTTPS中的第二個HTTP請求,將加密之后的客戶端密鑰發送給服務器。
服務器接收到客戶端發來的密文之后,會用自己的私鑰對其進行非對稱解密,解密之后得到客戶端密鑰,然后用客戶端密鑰對返回數據進行對稱加密,這樣數據就變成了密文。
服務器將加密后的密文返回給客戶端。
客戶端收到服務器發返回的密文,用自己的密鑰(客戶端密鑰)對其進行對稱解密,得到服務器返回的數據。

在這里插入圖片描述

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

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

相關文章

Qwen3本地化部署,準備工作:SGLang

文章目錄 SGLang安裝deepseek運行Qwen3-30B-A3B官網:https://github.com/sgl-project/sglang SGLang SGLang 是一個面向大語言模型和視覺語言模型的高效服務框架。它通過協同設計后端運行時和前端編程語言,使模型交互更快速且具備更高可控性。核心特性包括: 1. 快速后端運…

全面接入!Qwen3現已上線千帆

百度智能云千帆正式上線通義千問團隊開源的最新一代Qwen3系列模型,包括旗艦級MoE模型Qwen3-235B-A22B、輕量級MoE模型Qwen3-30B-A3B。千帆大模型平臺開源模型進一步擴充,以多維開放的模型服務、全棧模型開發、應用開發工具鏈、多模態數據治理及安全的能力…

藍橋杯Python(B)省賽回憶

Q:為什么我要寫這篇博客? A:在藍橋杯軟件類競賽(Python B組)的備賽過程中我在網上搜索關于藍橋杯的資料,感謝你們提供的參賽經歷,對我的備賽起到了整體調整的幫助,讓我知道如何以更…

數據轉儲(go)

? 隨著時間推移,數據庫中的數據量不斷累積,可能導致查詢性能下降、存儲壓力增加等問題。數據轉儲作為一種有效的數據管理策略,能夠將歷史數據從生產數據庫中轉移到其他存儲介質,從而減輕數據庫負擔,提高系統性能&…

Git Stash 詳解

Git Stash 詳解 在使用 Git 進行版本控制時,經常會遇到需要臨時保存當前工作狀態的情況。git stash 命令就是為此設計的,它允許你將未提交的更改暫存起來,在處理其他任務或分支后,再恢復這些更改。 目錄 基本概念常用命令示例和…

Windows下Dify安裝及使用

Dify安裝及使用 Dify 是開源的 LLM 應用開發平臺。提供從 Agent 構建到 AI workflow 編排、RAG 檢索、模型管理等能力,輕松構建和運營生成式 AI 原生應用。比 LangChain 更易用。 前置條件 windows下安裝了docker環境-Windows11安裝Docker-CSDN博客 下載 Git下載…

Clang-Tidy協助C++編譯期檢查

文章目錄 在Visual Studio中啟用clang-tidyClang-tidy 常用的檢查項readability-inconsistent-declaration-parameter-namemisc-static-assert 例子 C/C語言是一門編譯型語言,比起python,javascript 這些,有很多BUG可以在編譯期被排除掉,當然…

智能工廠規劃學習——深入解讀數字化工廠規劃與建設方案

項目總體思路聚焦于通過智能制造和數字化工廠建設,來優化企業戰略并提升信息化水平。首先,企業需學習先進國家已經驗證的先進經驗,并緊跟其正在變革的方向,以確保自身發展的前瞻性和競爭力。 在企業戰略層面,企業正從以產品為中心的業務模式,逐步轉變為以服務中心…

Go RPC 服務方法簽名的要求

在 Go 中,RPC 方法的簽名有嚴格的要求,主要是為了保證方法的調用能夠通過網絡正確地傳輸和解析。具體要求如下: 1. 方法必須是導出的 RPC 服務的方法必須是導出的(即首字母大寫)。這是因為 Go 的反射機制要求服務方法…

上位機 日志根據類型顯示成不同顏色

前言 在上位機軟件開發中日志是一個很重要的信息。一方面顯示系統的運行情況,另一方面主要用于排查軟件BUG和設備問題的重要參考。為了方面識別日志類型最好的方式是使用不同的顏色進行區分。這樣就一目了然了。 效果 實現代碼 1.根據 ListBox 控件 進行擴展了一個自定義控件…

CMake解析參數用法示例

cmake_parse_arguments 是 CMake 中用于解析函數或宏參數的工具,特別適合處理帶有選項(OPTIONS)、單值參數(SINGLE_ARGS)和多值參數(MULTI_ARGS)的復雜參數列表。以下是用法說明和一個示例&…

自定義JackSon配置

避免前端&#xff08;JavaScript&#xff09;處理大數&#xff08;如 Long、BigInteger&#xff09;時發生精度丟失問題&#xff0c;所以引入了自定義 Jackson 配置。 先看代碼&#xff1a; /** 根據id修改員工信息*/PutMappingpublic R<String> update(HttpServletRequ…

Qt入門——什么是Qt?

Qt背景介紹 什么是Qt? Qt 是?個 跨平臺的 C 圖形用戶界面應用程序框架 。它為應用程序開發者提供了建立藝術級圖形界面所需的所有功能。它是 完全面向對象 的&#xff0c;很容易擴展。Qt 為開發者提供了 ?種基于組件的開發模式 &#xff0c;開發者可以通過簡單的拖拽和組合…

Linux CentOS 安裝Python 3.8.0

在 CentOS 上升級 Python 3.6.8 到 3.8.0&#xff0c;可以按照以下步驟操作&#xff1a; 1. 安裝依賴 sudo yum groupinstall -y "Development Tools" sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel wget 如果遇到報錯“File "/bin…

Python爬蟲(11)Python數據存儲實戰:深入解析NoSQL數據庫的核心應用與實戰

目錄 引言一、背景&#xff1a;為什么選擇NoSQL存儲爬蟲數據&#xff1f;1.1 爬蟲數據的核心挑戰1.2 NoSQL數據庫的核心優勢 二、NoSQL數據庫在爬蟲中的核心應用2.1 MongoDB&#xff1a;文檔型數據庫的王者2.2 Redis&#xff1a;內存數據庫的極致性能 三、NoSQL選型與性能優化策…

PCB設計工藝規范(一)概述

PCB設計工藝規范&#xff08;一&#xff09; 1.概述2.關鍵詞及引用標準3.PCB板材要求3.1 確定PCB使用板材以及TG值3.2 確定 PCB 的表面處理鍍層 4.熱設計要求5.器件庫選項要求 資料來自網絡&#xff0c;僅供學習使用。 1.概述 規范產品的 PCB 工藝設計&#xff0c;規定 PCB 工…

proxychains4系統代理for linux(加速國內github下載速度,pip安裝)

1.proxychains4代理安裝&#xff1a; sudo apt-get install proxychains42.找到配置文件/etc/proxychains4.conf在[ProxyList]后面添加以下內容&#xff1a; socks5 127.0.0.1 10808 配置如下&#xff1a; 3.使用proxychains4(git clone)&#xff1a; proxychains4 git c…

Seata客戶端@GlobalTransactional核心源碼解析

文章目錄 前言一、GlobalTransactional1.1、wrapIfNecessary1.2、handleGlobalTransaction1.3、invoke 二、總結 前言 Seata是阿里開源的分布式事務解決方案。在Spring傳統的事務中&#xff0c;開啟事務&#xff0c;執行事務&#xff0c;回滾/提交事務&#xff0c;統一由Spring…

pytorch搭建并訓練神經網絡

#從小白開始學習人工智能# #學習筆記# 工具&#xff1a;pytorch 一、基礎概念 1.神經網絡是什么&#xff1f; 神經網絡是人類受到生物神經細胞結構啟發而研究出的算法體系。又稱為人工神經網絡&#xff08;Artificial neural network&#xff09; 最簡版神經網絡結構圖&a…

JavaEE-多線程實戰01

Java 多線程入門&#xff1a;第一個多線程程序 在 Java 中&#xff0c;多線程編程是非常重要的一部分。本篇文章將通過示例&#xff0c;帶你快速了解如何創建第一個多線程程序&#xff0c;并深入分析其運行機制。 1. 創建一個線程類并繼承 Thread 在 Java 中&#xff0c;我們…