TCP網絡協議

TCP粘包

1. TCP在接收數據時,多包數據粘在了一起

2. 原因:

? ? 1. TCP發送數據時,沒有及時發走,會根據緩沖區數據的情況進行重新組包;
? ? 2. TCP接收方,沒有及時讀走緩沖區數據,導致緩沖區大量數據緩存。

3. 如何解決TCP粘包:

? ? 1. ?發指定大小字節(結構體)
? ? ? ? ?struct ?data
? ? ? ? {
? ? ? ? ? ? ?int id;
? ? ? ? ? ? ?float tmp;
? ? ? ? ? ? ?xxx;
? ? ? ? };

? ? ? ?指定在相同平臺上使用,注意結構體對其齊問題。

? ??
? ? ?2. 發送具有指定分隔符的數據

? ? ? ? ?"hello world\n"
? ? ? ? ?"how are you\n"

? ? ?3. 封裝自定義數據幀
? ? ? ? ??
? ? ? ? ??
? ? ? ? ?AA 0d 01 ?00 00 00 14 00 00 00 15 ?xx xx xx xx sum BB
? ? ? ? ?

網絡抓包

網絡抓包:抓取通過設備網卡的數據

wireshark:網絡抓包工具:

1. 分析和追蹤網絡問題
2. 查看網絡協議棧

安裝:sudo apt-get install wireshark

1. sudo wireshark
2. 選擇通信設備的網卡---》any
3. 選擇抓取的過濾條件
4. 開始抓取
5. 進行一次通信

TCP報文頭

標志位:
?? ?
?? ?1. URG: 緊急指針標志, 為1時表示緊急指針有效, 該報文應該優先傳送。
?? ?2. ACK: 確認應答標志
?? ?3. PSH: ?表示發送數據,提示接收端從TCP接收緩沖區中讀走數據,為接收后續數據騰出空間
?? ?4. RST: 重置連接標志
?? ?5. SYN: 表示請求建立一個連接
?? ?6. FIN: finish標志, 表示釋放連接

TCP機制

? ? ?1. 應答機制:為每個數據增加序列發,發送數據時,第一個數據的序號作為報文中的序號。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?接收方收到相關數據,會回應ACK報文,報文中的確認號是接收方下次希望接收到的數據的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?起始序號。

? ? ?2. 超時重傳機制:TCP發送數據后會在一定的時間內等待ACK,假設在指定時間ACK未收到,則視這包數據已經
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 丟失,會重新傳輸這包數據。

? ? ?3. 流量控制機制:根據接收方接收數據的能力,調整窗口大小,通知發送發進行流量控制

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

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

相關文章

ES6回顧:閉包->(優點:實現工廠函數、記憶化和異步實現)、(應用場景:Promise的then與catch的回調、async/await、柯里化函數)

閉包講解 ES6回顧:閉包->(優點:實現工廠函數、記憶化和異步實現)、(應用場景:Promise的then與catch的回調、async/await、柯里化函數) 以下是與 JavaScript 閉包相關的常見考點整理,結合 Pro…

OpenMCU(三):STM32F103 FreeRTOS移植

概述 本文主要描述了STM32F103移植FreeRTOS的簡要步驟。移植描述過程中,忽略了Keil軟件的部分使用技巧。默認讀者熟練使用Keil軟件。本文的描述是基于OpenMCU_RTOS這個工程,該工程已經下載放好了移植STM32F103 FreeRTOS的所有文件 OpenMCU_RTOS工程的愿景…

生成對抗網絡(GAN)原理與應用

目錄 一、引言 二、GAN的基本原理 (一)生成器(Generator)的工作機制 (二)判別器(Discriminator)的工作機制 (三)對抗訓練的過程 三、GAN在AIGC生圖中的應…

STM32 內置的通訊協議

數據是以幀為單位發的 USART和UART的區別就是有沒有同步功能 同步是兩端設備有時鐘連接,異步是沒時鐘連接,靠約定號的頻率(波特率)接收發送數據 RTS和CTS是用來給外界發送已“可接收”或“可發送”信號的,一般用不到…

ES 使用geo point 查詢離目標地址最近的數據

需求描述:項目中需要通過經緯度坐標查詢目標地所在的行政區。 解決思路大致有種,使用es和mysql分別查詢。 1、使用es進行查詢 將帶有經緯度坐標的省市區數據存入es中,mappings字段使用geo point類型,索引及查詢dsl如下。 geo p…

Appium等待機制--強制等待、隱式等待、顯式等待

書接上回,Appium高級操作--其他操作-CSDN博客文章瀏覽閱讀182次,點贊6次,收藏7次。書接上回Appium高級操作--從源碼角度解析--模擬復雜手勢操作-CSDN博客。https://blog.csdn.net/fantasy_4/article/details/146162851主要講解了Appium的一些…

【架構藝術】Go語言微服務monorepo的代碼架構設計

近期因為項目架構升級原因,筆者著手調研一些go項目monorepo的代碼架構設計,目標是長期把既有微服務項目重要的部分都轉移到monorepo上面,讓代碼更容易維護,協作開發更加方便。雖然經驗不多,但既然有了初步的調研&#…

深入解析 JVM —— 從基礎概念到實戰調優的全鏈路學習指南

文章目錄 一、為什么要學習 JVM?1. 面試必備與技能提升2. 性能優化與問題診斷3. 編寫高質量代碼 二、JVM 基礎概念與體系結構1. JVM 簡介2. JDK、JRE 與 JVM 三、JVM 內存模型1. 線程私有區2. 線程共享區 四、類加載機制與雙親委派1. 類加載過程2. 雙親委派模型3. 動…

前端及后端實現csv文件下載功能

方法一、 前端內容: const url window.URL.createObjectURL(new Blob([res.data])); const link document.createElement(a); link.href url; const fileNameDateTime getFormattedDateTime(); const filename "用戶提現列表"fileNameDateTime.csv…

QT中委托QStyledItemDelegate的使用

目錄 一、子類化委托 二、委托方法實現 1)createEditor 2)setEditorData 3)setModelData 4)updateEditorGeometry 三、委托使用 四、總結 Qt的數據容器控件采用模型/視圖(model/view)架構設計。模型用于存放控件的數據,視圖則用于顯示編輯數據,而委托則是…

OpenCV實現視頻背景提取

在計算機視覺領域,背景減除(Background Subtraction)是一種常用的技術,用于從視頻序列中提取前景對象。 背景減除的核心思想是通過建模背景,然后將當前幀與背景模型進行比較,從而分離出前景對象。 OpenCV…

NFS實驗配置筆記

NFS NFS服務 nfs,最早是Sun這家公司所發展出來的,它最大的功能就是可以透過網絡,讓不同的機器,不同的操作系統,進行實現文檔的共享。所以你可以簡單的將他看做是文件服務器。 實驗準備 ①先準備一個服務器端的操作…

C語言【數據結構】:理解什么是數據結構和算法(啟航)

引言 啟航篇,理解什么是數據結構和算法 在 C 語言編程領域,數據結構和算法是兩個核心且緊密相關的概念 一、數據結構 定義 數據結構是指相互之間存在一種或多種特定關系的數據元素的集合(比如數組),它是組織和存儲數…

Vue.js 3 的設計思路:從聲明式UI到高效渲染機制

目錄 一、聲明式UI與虛擬DOM的靈活性 二、渲染器:虛擬DOM到真實DOM的橋梁 三、組件的本質與實現 四、編譯與運行時的協同優化 五、性能與可維護性的權衡 總結 Vue.js 3 作為新一代前端框架,其設計理念在聲明式UI描述、虛擬DOM優化、組件化架構…

深度學習|MAE技術全景圖:自監督學習的“掩碼魔法“如何重塑AI基礎

一、引言:深度學習的困境與自監督的曙光 深度學習(Deep Learning)無疑是當今人工智能領域基礎中的基礎。從圖像識別到自然語言處理(NLP),它在無數任務中展現了卓越性能。例如,在安防監控中&…

深度學習正則化技術之權重衰減法、暫退法(通俗易懂版)

一、影響模型泛性的因素有?什么是正則化技術?有什么用? 通常,影響模型泛化能力的因素有: 可調節參數的個數:可調節的參數過少,會造成模型過于簡單,欠擬合;過多&#xf…

爬蟲逆向:Unicorn 詳細使用指南

文章目錄 1. Unicorn 介紹1.1 Unicorn 的特點1.2 Unicorn功能2. 安裝 Unicorn2.1 安裝 Python 綁定2.2 安裝 Unicorn 核心庫3. Unicorn 的基本使用3.1 初始化模擬器3.2 映射內存3.3 寫入代碼3.4 設置寄存器3.5 執行代碼3.6 讀取寄存器4. Unicorn 的高級功能4.1 鉤子函數4.2 異常…

【SpringBoot】實現登錄功能

在上一篇博客中,我們講解了注冊頁面的實現。在此基礎上會跳轉到登錄頁面,今天給大家帶來的是使用 SpringBoot,MyBatis,Html,CSS,JavaScript,前后端交互實現一個登錄功能。 目錄 一、效果 二、…

【小白向】Ubuntu|VMware 新建虛擬機后打開 SSH 服務、在主機上安裝vscode并連接、配置 git 的 ssh

常常有人問VMware-Tools裝了也復制粘貼不了怎么辦,這個東西影響因素太多了,具體解決辦法你們可以參考一下:【經驗】VMware|虛擬機只能使用鼠標無法使用鍵盤、裝不了或裝了VMware-Tools無法復制粘貼的可能解決辦法_增強型鍵盤驅動程…

mingw工具源碼編譯

ming-w64 mingw編譯生成的庫,需要mingw的lib文件支持。 https://github.com/mingw-w64/mingw-w64 使用msys2的bash git checkout v8.0.3 ./configure --disable-dependency-tracking --targetx86_64-w64-mingw32 mingw32-make.exe -j4 修改makefile中的make 改成mi…