[雜學筆記] TCP和UDP的區別,對http接口解釋 , Cookie和Session的區別 ,http和https的區別 , 智能指針 ,斷點續傳

文章目錄

      • 1. TCP和UDP的區別
      • 2. 對http接口解釋
      • 3. Cookie和Session的區別
      • 4. http和https的區別
      • 5. 智能指針
      • 6.斷點續傳

1. TCP和UDP的區別

  • tcp的特點: 面向連接,可靠性高,全雙工,面向字節流
  • udp特點:無連接,不可靠(但是對實時性要求高),頭部開銷少,

主要區別:連接性與可靠性 : tcp是面向連接的協議,提供可靠的數據傳輸服務; 而udp是無連接的,不可靠
頭部開銷與傳輸效率 : tcp的頭部開銷大,包含更多控制信息,傳輸效率低 ; udp的頭部開銷少,傳輸效率高
應用場景 : tcp適用于可靠性的場景,文件傳輸,電子郵件等; udp適用于實時傳輸,視頻流,Voip(VoIP(互聯網電話協議)是一種電話技術,允許您使用互聯網而不是傳統電話線撥打和接聽電話。)等

視頻音頻適用于UDP協議

  • 實時性,對數據丟失不敏感,避免TCP的擁塞控制對實時性的影響。
  • 視頻音頻對于實時性的要求很高,UDP的報頭只有8個字節,比TCP少了12個字節,這使得UDP在傳輸數據時的開銷小,效率高,還不用建立連接。 如果因為建立連接,重傳等操作導致延遲過大,會影響用戶體驗
  • 視頻中的一幀畫面的畫面丟失,音頻的短暫雜音,影響體驗很小,TCP擁有擁塞控制機制,當網絡擁塞的時候,會降低發送報文的頻率,這樣會影響實時性。讓TCP去參與網絡疏導

2. 對http接口解釋

HTTP工作原理

  • HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議采用了請求/響應模型。
  • 客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。

以下是 HTTP 請求/響應的步驟:

  1. 客戶端連接到Web服務器
    一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。
    例如,http://www.baidu.com。

  2. 發送HTTP請求
    通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。

  3. 服務器接受請求并返回HTTP響應
    Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。

  4. 釋放連接TCP連接
    若connection 模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求;

  5. 客戶端瀏覽器解析HTML內容
    客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼。然后解析每一個響應頭,響應頭告知以下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,并在瀏覽器窗口中顯示。

例如:在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:

  1. 域名解析得到目標服務器的ip地址,ip地址底層基于tcp,要先三次握手建立連接,在套接字就是connect,獲取成功后在應用層由瀏覽器構建request,http請求構建http請求行,請求報頭,空行,必要時有正文,
  2. 然后把http請求通過系統調用接口發送給對方,對方收到了http請求后,會對http請求進行 比如面向字節流以及粘包問題,把報文解出來,然后做序列化得到http相關字段以及請求url,然后讀取url所對應的資源,都有就構建響應報頭,狀態行,正文,然后把整個信息構建成一個response, response通過系統調用發送給客戶端,
  3. 客戶端在對response解決粘包問題把報文和報文之間分開,通過反序列化提取正文,正文可以是網頁或者圖片,由網頁或圖片被瀏覽器解釋渲染

更細一點就是 : 在雙方操作系統中,發數據并不是把數據發送給對方,也不是發送到網絡,而是拷貝到操作系統底層的tcp發送緩沖區,所以tcp傳輸控制的時候就可以根據流量控制,擁塞控制,捎帶應答,快重傳,各種可靠性策略,效率策略把數據發送給對方,再往下談,滑動窗口,每一次對應的數據段也不直接發送給對方,而是交給了ip報文,在這里也添加了自己的ip報頭,這里也有分片和組裝的問題…

HTTP請求方法

在這里插入圖片描述

HTTP狀態碼

在這里插入圖片描述

3. Cookie和Session的區別

  1. cookie常存儲在瀏覽器或者本地,session只能在服務器
  2. cookie只能存儲string對象,session可以存儲任意的jave對象
  3. session更安全,但是session過多的話,會造成服務器壓力問題
  4. 單個Cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個Cookie,Session是沒有大小限制和服務器的內存大小有關。
  5. 更詳細看這篇文章徹底了解Cookie和Session的區別(面試)

4. http和https的區別

  • http的post和get都是沒有加密的,都可以被抓包軟件抓到
  • https就是在應用層和傳輸層進行加密(SSL&TLS,SSL/TLS是用于在計算機網絡上進行安全通信的協議。)

1、HTTPS 協議需要到 CA (Certificate Authority,證書頒發機構)申請證書,一般免費證書較少,因而需要一定費用。(以前的網易官網是http,而網易郵箱是 https 。)

2、HTTP 是超文本傳輸協議,信息是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協議。

3、HTTP 和 HTTPS 使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

4、HTTP 的連接很簡單,是無狀態的。HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網絡協議,比 HTTP 協議安全。(無狀態的意思是其數據包的發送、傳輸和接收都是相互獨立的。無連接的意思是指通信雙方都不長久的維持對方的任何信息。)

TLS握手過程 : 1. 客戶端和服務器商定通信所使用的TLS版本(雙發互發信息,密碼組合,證書) 2. 確定雙方要使用的密碼組合 3.客戶端通過服務器的公鑰和證書驗證服務器身份 4. 生成會話密鑰用于結束后的對稱加密(雙方互發加密的finished信號)

5. 智能指針

原理:

  1. 在對象構造時獲取資源,在對象析構的時候釋放資源,利用對象的生命周期來控制程序資源,即RALL特性
  2. *和 ->進行重載,使得該對象具有像指針一樣的行為
  3. 智能指針的拷貝問題 , 為什么要解決 : SmartPtr sp1(new int); SmartPtr sp2(sp1); //拷貝構造 對內置類型淺拷貝,構造sp2后會讓兩者管理同一片空間,析構會導致空間被釋放兩次(賦值構造也是如此)
  • auto_ptr : 最早的智能指針,他只會允許統一時間只有一個智能指針指向同一個對象,當發生賦值或者拷貝的話,所有權就會轉移,就相當于該指針不在管理對象了。
    所有權轉移的實現是在析構和賦值構造中釋放自己管理的對象,然后將管理權賦值給接管自己的對象

  • unique_ptr(防拷貝 = delete) : 和auto_ptr一樣,但是他不允許賦值和拷貝操作。會將拷貝構造函數和賦值重載函數禁用。

  • shared_ptr : 是共享所有權的一個指針,他允許多個智能指針指向同一個對象,他內部使用引用計數來記錄個數,當引用計數為0的時候,才會去釋放指向的對象資源。

    增加一個內部成員變量int* _pcount;,表明引用計數個數 ,不能被定義為int類型是因為不能讓每個shared_ptr對象有一個自己的count的成員變量, 不能為靜態,不能讓所有對象擁有同一個count成員變量
    

注意 :

  1. 存在線程安全問題:多個線程可能會對同一個引用進行自增或自減操作,而自增或自減操作都不是原子操作,需要加鎖進行保護。
  2. 存在循環引用問題 : 有兩個結點 :node1->_next = node2; node2->_prev = node1; node1的釋放取決于node2中的prev成員,node2的釋放取決于node1的next成員。
    解決方法 : 將ListNode中的成員變量std::shared_ptr _next; 變為 std::weak_ptr _next;
  • weak_ptr : 大多數是用來配合shared_ptr進行使用的,解決了shared_ptr的循環引用的問題,他沒有對象的管理權,不參與引用計數的增減。

6.斷點續傳

什么是斷點續傳

斷點續傳技術(Resumable Downloads 或 Resume Downloads)是一種在網絡文件傳輸中常用的技術,它允許在文件傳輸過程中,如果因為某種原因(如網絡中斷、設備故障、用戶暫停等)導致傳輸中斷,之后可以從上次中斷的地方繼續傳輸文件,而不是從頭開始重新傳輸整個文件。這種技術可以顯著提高文件傳輸的效率和用戶體驗,特別是在傳輸大文件或在網絡條件不穩定的環境中。

斷點續傳技術的實現通常依賴于客戶端和服務器之間的協議支持,如HTTP/1.1中的Range和Content-Range頭部字段。客戶端會記錄已經成功傳輸的文件部分(通常是字節范圍),并在中斷后重新發送帶有Range頭部的請求,指定從上次中斷的點開始傳輸。服務器則根據這個請求返回文件剩余部分的數據,并在響應中包含Content-Range頭部以告知客戶端實際返回的數據范圍。

應用場景及原理

大文件下載; 視頻播放;在線更新;遠程備份;.文件上傳

綜上所述,斷點續傳技術廣泛應用于需要高效、可靠文件傳輸的各種場景,特別是在網絡條件不穩定或文件大小較大的情況下。通過斷點續傳技術,用戶可以更好地利用網絡資源,提高文件傳輸的效率和用戶體驗。

  1. 關于 Range頭部字段:
  • 作用:Range頭部字段用于HTTP請求中,指定服務器應該返回文件的哪一部分。這使得客戶端能夠請求文件的特定片段,而不是整個文件。
  • 格式:Range: bytes=start-end,其中start是請求的第一個字節的偏移量(從0開始),end是請求的最后一個字節的偏移量。如果end被省略,則表示請求從start開始到文件末尾的所有字節。
  • 使用場景:當客戶端希望繼續之前中斷的下載時,它會發送一個帶有Range頭部的請求,指定從上次中斷的點開始請求數據。
  1. Content-Range頭部字段
  • 作用:Content-Range頭部字段用于HTTP響應中,告知客戶端實際返回的字節范圍以及整個實體的總長度。
  • 格式:Content-Range: bytes start-end/total,其中start是返回的第一個字節的偏移量,end是返回的最后一個字節的偏移量,total是整個實體的總長度(字節數)。
  • 使用場景:服務器在響應帶有Range頭部的請求時,會使用Content-Range頭部來告知客戶端返回的數據范圍以及整個文件的大小。

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

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

相關文章

JAVASE(五)

目錄 一、成員變量和局部變量 1.定義 2.區別 (1)相同 (2)不同 二、方法和構造方法 1.定義 2.構造方法細節 3.方法重載 一、成員變量和局部變量 1.定義 (1)成員變量是…

Matlab中快速查找元素索引號

1、背景介紹 在算法設計過程中,有時候需要從一維/二維數組中,快速查找是否某個元素,以及該元素所在的位置。如一維矩陣[1 2 3 4 5 6 6 7 8]所示,元素6所在的位置為6 7。 2、函數測試 matlab中函數find()可以快速查找到指定元素所…

【DuodooTEKr 】多度科技 以開源之力,驅動企業數字化轉型

多度科技 背景 / Background 在全球產業鏈重構與國內經濟雙循環的浪潮下,中國制造業與貿易企業正面臨數字化升級的迫切需求。開源技術作為數字化轉型的基石,不僅能打破技術壁壘、降低企業成本,更能通過協作創新加速產業智能化進程。 多度科技…

【HarmonyOS Next】鴻蒙應用故障處理思路詳解

【HarmonyOS Next】鴻蒙應用崩潰處理思路詳解 一、崩潰問題發現后定位 1. 崩潰現象: 常見的崩潰問題表現為,應用操作后白屏閃退,或者應用顯示無響應卡死。 2.定位問題: 發現崩潰后,我們首先需要了解復現步驟&#x…

linunx ubuntu24.04.02裝libfuse2導致無法開機進不了桌面解決辦法

osu.appimage運行需要libfuse2 然后我就下了fuse,打了兩把第二天無法開機 這樣是不能開機的 這樣是可以開機的 解決辦法一:玩星火商店的osu,好了問題解決 解決辦法二: 在這個頁面 ctrl alt f2進入tty6 sudo apt install ubuntu-desktop 進…

Maven 的常用指令

一、核心構建指令 mvn clean 作用:刪除 target 目錄(清理編譯/打包生成的文件)。 場景:確保從頭開始構建,避免殘留文件干擾。 mvn compile 作用:編譯項目源代碼。 場景:快速檢查代碼是否能編…

llvm數據流分析

llvm數據流分析 1.數據流分析2.LLVM實現2.1.常量傳播2.2.活躍性分析 相關參考文檔:DataFlowAnalysisIntro、ustc編譯原理課程、南大程序分析課程1、南大程序分析課程2。 1.數據流分析 數據流分析在編譯優化等程序分析任務上都有重要應用。通常數據流分析可被抽象為…

C++ MySQL 常用接口(基于 MySQL Connector/C++)

C MySQL 常用接口(基于 MySQL Connector/C) 1. 數據庫連接 接口: sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用: 用于創建 MySQL 連接對象。 示例: driver sql::mysql::get_mysql_driver_insta…

C++藍橋杯基礎篇(十一)

片頭 嗨~小伙伴們,大家好!今天我們來學習C藍橋杯基礎篇(十一),學習類,結構體,指針相關知識,準備好了嗎?咱們開始咯~ 一、類與結構體 類的定義:在C中&#x…

css中實現border距離視圖左右兩側有距離

首先看效果圖 再看css是如何實現 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.main {background-color: aqua;display: block;width: 300px;padding: 0px 32px;box-sizing: border-box;}/…

Ubuntu 22.04 無法進入圖形界面的解決方法

Ubuntu 22.04 無法進入圖形界面&#xff0c;只能進入 tty&#xff0c;可能是由于圖形界面相關的配置或驅動程序出現了問題。以下是一些常見的解決方法&#xff1a; 1. 檢查圖形界面服務狀態 首先&#xff0c;檢查圖形界面服務&#xff08;通常是 gdm 或 lightdm&#xff09;的…

Tweak Power:全方位電腦系統優化的高效工具

在日常使用電腦時&#xff0c;系統性能的下降、垃圾文件的堆積以及硬盤的老化等問題常常困擾著用戶。為了提升電腦性能、優化系統運行&#xff0c;許多人會選擇系統優化工具。然而&#xff0c;國內一些系統優化軟件常常因為廣告過多或功能冗雜而讓人望而卻步。此時&#xff0c;…

深入淺出Bearer Token:解析工作原理及其在Vue、Uni-app與Java中的實現Demo

目錄 前言1. 基本知識2. Demo3. 實戰 前言 &#x1f91f; 找工作&#xff0c;來萬碼優才&#xff1a;&#x1f449; #小程序://萬碼優才/r6rqmzDaXpYkJZF 1. 基本知識 Bearer Token是一種基于Token的認證機制&#xff0c;用于在HTTP請求中傳遞用戶的身份信息 應用于RESTful A…

kubernetes——part3-5 核心概念 Service

一、 service作用 使用kubernetes集群運行工作負載時&#xff0c;由于Pod經常處于用后即焚狀態&#xff0c;Pod經常被重新生成&#xff0c;因此Pod對應的IP地址也會經常變化&#xff0c;導致無法直接訪問Pod提供的服務&#xff0c;Kubernetes中使用了Service來解決這一問題&am…

從零開始 | C語言基礎刷題DAY1

?個人主頁&#xff1a;折枝寄北的博客 DAY1[2025.3.11] 1. 求兩個數的較大值2.從鍵盤輸入的兩個數的大小關系3.一個整數的奇偶性&#xff0c;請判斷4. 考試分數是否通過5.考試成績是否完美&#xff0c;請判斷 1. 求兩個數的較大值 題目&#xff1a; 寫一個函數求兩個整數的較…

開源模型時代的 AI 開發革命:Dify 技術深度解析

開源模型時代的AI開發革命&#xff1a;Dify技術深度解析 引言&#xff1a;AI開發的開源新紀元 在生成式AI技術突飛猛進的2025年&#xff0c;開源模型正成為推動行業創新的核心力量。據統計&#xff0c;全球超過80%的AI開發者正在使用開源模型構建應用&#xff0c;這一趨勢不僅…

Dify Web 前端獨立部署指南(與后端分離,獨立部署)

背景:單獨拆分前端出來部署,二開前后端 本文檔專注于 Dify Web 前端的部署流程和配置,適用于需要將項目部署到各種環境的運維人員和開發者。 1. 環境準備 1.1 部署環境要求 Node.js >= 18.17.0Nginx 或其他Web服務器(生產環境推薦)Docker(可選,用于容器化部署)1.…

《蒼穹外賣》SpringBoot后端開發項目核心知識點整理(DAY1 to DAY3)

目錄 一、在本地部署并啟動Nginx服務1. 解壓Nginx壓縮包2. 啟動Nginx服務3. 驗證Nginx是否啟動成功&#xff1a; 二、導入接口文檔1. 黑馬程序員提供的YApi平臺2. YApi Pro平臺3. 推薦工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api與ApiModel1.2 ApiModelProperty與Ap…

大數據hadoop課程筆記

1.課程導入 柯潔 Alpha Go是人工智能領域的里程碑。 深度學習 大模型deepseek chatgpt 大模型 和 大數據 之間有著非常緊密的關系。可以說&#xff0c;大數據是大模型發展的基石&#xff0c;而大模型是大數據價值挖掘的重要工具。 https://youtu.be/nN-VacxHUH8?sifj7Ltk…

架構學習第八周--Kubernetes博客搭建

目錄 一、整體架構 二、部署MySQL主從 三、部署Redis哨兵 四、部署WordPress 五、注意事項 一、整體架構 本項目為在一主三從的Kubernetes集群上部署WordPress博客。因為WordPress部分容器版本自行集成Apache和PHP服務&#xff0c;因此在Kubernetes上部署WordPress只需提供…