JavaEE初階-網絡原理1

文章目錄

  • 前言
  • 一、UDP報頭
  • 二、UDP校驗和
    • 2.1 CRC
    • 2.2 md5


前言

學習一個網絡協議,最主要就是學習的報文格式,對于UDP來說,應用層數據到達UDP之后,會給應用層數據報前面加上UDP報頭。
UDP數據報=UDP包頭+載荷


一、UDP報頭

在這里插入圖片描述
如上圖UDP的報頭主要就分為四個部分,分別占據兩字節的空間。
前兩個源端口號和目的端口號很好理解就是客戶端以及服務器的端口號,用來表示主機上的程序的。第三個UDP長度,因為只占了兩個字節的空間,所以UDP數據包的長度加上包頭最多只能達到64kb的長度,這是很局限的。不禁會想,為什么不把UDP的長度設置的高一點呢?實際上UDP出現的時代很早,那時64kb已經完全滿足通信需求了,只是隨著我們現在網絡的發展才越來越不夠用了。那為什么現在不能夠改一下UDP提高它的長度呢?對于這件事也沒想象中的簡單,單個主機的修改或升級是沒有意義的,需要對端也升級,也就是說要升級全世界得一起升級,這個成本難以想象。并且如果單獨你升級了,和別人通信不了,站在別人的角度就是你那邊除了bug。

二、UDP校驗和

數據在網絡傳輸的過程中是很容易出錯的,我們需要有辦法去對傳輸的數據進行校驗,校驗分為兩層,第一層就是發現是否出錯,第二層就是找到錯誤在哪并且糾錯,這兩層本質上都是要引入額外的冗余信息,但是第二層的代價比較大,在UDP數據報中實現到了第一層,發現是否有錯。
校驗和就是拿著數據進行一系列計算得到結果,如果數據部分發生改變此時得到的結果也就不一樣。在通信過程中就是接收方拿到UDP數據包后計算數據包的校驗和然后和UDP首部的校驗和比較,相同則代表未發生意外,相異則說明數據出了問題。

2.1 CRC

UDP中使用CRC算法(循環冗余校驗)計算校驗和,這種算法首先設定兩個字節的變量,然后把數據報中的每個字節取出來往這個變量上累加,如果結果超出兩個字節,溢出部分就舍棄。
這個方法主要是為了讓數據的每個字節都參與到運算中去都能夠影響結果,最終算的是啥不關鍵,關鍵在于接收方算出的校驗和和發送方算的是否相同。
假設使用一個很大的變量來保存最終總結果,能夠得到精確值,但是也是用來完成相同/不同的比較,具體多少也不關鍵,所以為了節省空間,高位就可以不要了,就留最低兩個字節即可。

2.2 md5

除了CRC之外,還有一個很常用的方法md5,可以作為字符串hash算法。
md5的三個特點:
(1)定長:無論你的輸入是什么,md5的輸出都是定長的字符串。
(2)不可逆:通過原輸入計算md5成本很低,將md5字符串還原成原輸入成本非常高,僅僅理論上可行。
(3)分散:輸入的內容哪怕改變一點點,差異都很大。

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

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

相關文章

Kubernetes(K8s) kubectl 常用命令

文章目錄 一、常用命令1.1 kubectl describe 命令 二、kubectl 命令中的簡寫三、Helm3.1 常用命令:3.2 遇到的問題3.2.1 cannot re-use a name that is still in use 四、Containerd 一、常用命令 檢查 k8s 各節點狀態,確保k8s集群各節點狀態正常&#x…

概率基礎——矩陣正態分布matrix normal distribution

矩陣正態分布-matrix normal distribution 定義性質應用 最近碰到了這個概念,記錄一下 矩陣正態分布是一種推廣的正態分布,它應用于矩陣形式的數據。矩陣正態分布在多維數據分析、貝葉斯統計和機器學習中有廣泛的應用。其定義和性質如下: 定…

Emacs之解決:java-mode占用C-c C-c問題(一百四十六)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】🚀 優質專欄:多媒…

【django項目使用easycython編譯】Cannot convert Unicode string to ‘str‘ implicitly.

django項目編譯遇到的問題 報錯條件 需要編譯的python源碼里面的函數寫了type hint,尤其是return的type hint, 當type hint是str時,但是變量確實f-string格式化后得到的,編譯時會報錯 報錯原因 easycython會檢查變量類型&…

軟件開發中的原型開發與需求文檔開發:哪個更優?

1. 引言 在軟件開發過程中,選擇合適的開發方法對于項目的成功至關重要。基于原型開發和基于需求文檔開發是兩種常見的開發方法,各自有其優點和缺點。在項目復雜性、客戶需求和資源限制等因素的影響下,開發團隊需要慎重選擇適合的開發方法。 …

C++語言相關的常見面試題目(二)

1.vector底層實現原理 以下是 std::vector 的一般底層實現原理: 內存分配:當創建一個 std::vector 對象時,會分配一塊初始大小的連續內存空間來存儲元素。這個大小通常會隨著 push_back() 操作而動態增加。 容量和大小:std::vec…

element-plus 的form表單組件之el-radio(單選按鈕組件)

單選按鈕組件適用于同一組類型的選項只能互斥選擇的場景,就是支持單選。單選組件包含以下3個組件 組件名作用el-radio-group單選組組件,子元素可以是el-radio或el-radio-button,v-mode綁定單選組的響應式屬性el-radio單選組件,la…

階段三:項目開發---搭建項目前后端系統基礎架構:任務9:導入空管基礎數據

任務描述 本階段任務是導入項目的基礎數據,包括空管基礎數據和離線的實時飛行數據(已經脫敏)。 任務指導 本階段任務需要導入兩種數據: 1、在MySQL中導入空管基礎數據 kongguan.sql空管基礎數據表說明: 1告警信息…

OpenCV直方圖計算函數calcHist的使用

操作系統:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code編程語言:C11 功能描述 圖像的直方圖是一種統計表示方法,用于展示圖像中不同像素強度(通常是灰度值或色彩強度)出現的頻率分布。具體來說…

對MsgPack與JSON進行序列化的效率比較

序列化是將對象轉換為字節流的過程,以便在內存或磁盤上存儲。常見的序列化方法包括MsgPack和JSON。以下將詳細探討MsgPack和JSON在序列化效率方面的差異。 1. MsgPack的效率: 優點: 高壓縮率: MsgPack采用高效的二進制編碼格式&…

Embedding理解

一、概念 Embedding 可以理解為一種將概念、物體或信息轉換為數字序列的數值表示方法。它是溝通兩個不同世界或領域的橋梁,能夠把各種類型的數據(如文本、圖像、視頻等)映射到一個向量空間中。 在這個向量空間里,相似的項目(例如語義上相近的單詞、相似的圖像或相關的視…

cs231n作業1——SVM

參考文章:cs231n assignment1——SVM SVM 訓練階段,我們的目的是為了得到合適的 𝑊 和 𝑏 ,為實現這一目的,我們需要引進損失函數,然后再通過梯度下降來訓練模型。 def svm_loss_naive(W, …

【Qt】Qt概述

目錄 一. 什么是Qt 二. Qt的優勢 三. Qt的應用場景 四. Qt行業發展方向 一. 什么是Qt Qt是一個跨平臺的C圖形用戶界面應用程序框架,為應用程序開發者提供了建立藝術級圖形界面所需的所有功能。 Qt是完全面向對象的,很容易擴展,同時Qt為開發…

從打印到監測:納米生物墨水助力3D生物打印與組織監測平臺?

從打印到監測:納米生物墨水助力3D生物打印與組織監測平臺? 在 3D 組織工程中,納米生物墨水是將納米材料與 ECM 水凝膠結合,以提高其打印性和功能性的重要策略。納米生物墨水可以增強水凝膠的機械性能、導電性、生物活性&#xff…

汽車報價資訊app小程序模板源碼

藍色實用的汽車報價,汽車新聞資訊,最新上市汽車資訊類小程序前端模板。包含:選車、資訊列表、榜單、我的主頁、報價詳情、資訊詳情、詢底價、登錄、注冊、車貸,油耗、意見反饋、關于我們等等。這是一款非常全的汽車報價小程序模板…

MNIST 數據集 ubyte 格式介紹

train-images-idx1-ubyte 文件是用于存儲 MNIST 數據集中手寫數字圖像數據的文件。與標簽文件類似,這個文件使用的是一種簡單而緊湊的二進制格式。具體的文件格式如下: 文件頭(Header): 文件頭部分包含了一些描述文件內…

Ubuntu 20版本安裝Redis教程,以及登陸

第一步 切換到root用戶,使用su命令,進行切換。 輸入: su - 第二步 使用apt命令來搜索redis的軟件包,輸入命令:apt search redis 第三步 選擇需要的redis版本進行安裝,本次選擇默認版本,redis5.…

Emacs 的優點及與 DE 的比較

一、引言 在編程領域,對于工具的選擇一直是開發者們熱議的話題。今天,我們來探討一下 Emacs 及其所具有的優點,并思考使用 Emacs 寫程序是否真的比使用集成開發環境(IDE)更方便。 二、Emacs 的優點 高度可定制性 可以…

mac如何安裝nvm

? vue項目開發,熱更新,webpack,前輩造的輪子:各類的工具,庫,像axios,qs,cookie等輪子在npm上可以拿來直接用,需要node作為環境支撐。 開發時同時有好幾個項目,每個項目的需求不同…

Tornado:高性能異步Web框架詳解

文章目錄 引言官網鏈接Tornado 原理1. 非阻塞I/O2. 異步編程3. 事件循環4. 輕量級 使用方法安裝Tornado創建一個簡單的Web服務器 優缺點優點缺點 結論 引言 在Web開發的廣闊領域中,處理高并發和實時性需求一直是開發者們面臨的挑戰。Tornado,作為一個由…