6. 傳輸層協議 UDP

傳輸層

負責數據能夠從發送端傳輸接收端.

1. 再談端口號

端口號(Port)標識了一個主機上進行通信的不同的應用程序
在 TCP/IP 協議中, 用 "源 IP", "源端口號", "目的 IP", "目的端口號", "協議號" 這樣一個
五元組來標識一個通信(可以通過 netstat -n 查看)

1.0?源 IP

  • 定義:發送數據的設備(如計算機、手機、服務器等)在網絡中的唯一標識,用于定位數據的 “出發點”。
  • 作用:就像現實中的 “寄件人地址”,接收方可以通過源 IP 知道數據來自哪里,以便后續回復或追蹤。

1.2?源端口號

  • 定義:發送設備上負責發送數據的應用程序或進程的標識。
  • 作用:同一臺設備可能同時運行多個網絡應用(如瀏覽器、微信、游戲等),源端口號用于區分這些應用,確保數據能準確交付給發送端的對應程序。 ? ? ? ?

1.3?目的 IP

  • 定義:接收數據的設備在網絡中的唯一標識,用于定位數據的 “終點”。
  • 作用:類似現實中的 “收件人地址”,網絡設備(如路由器)通過目的 IP 確定數據的傳輸路徑,確保數據最終到達目標設備。

1.4?目的端口號

  • 定義:接收設備上負責接收數據的應用程序或進程的標識。
  • 作用:與源端口號對應,用于將數據準確交付給接收端的特定應用(如服務器的 80 端口對應網頁服務,21 端口對應 FTP 文件傳輸服務)。

1.5?協議號

  • 定義:標識數據所使用的傳輸層協議(如 TCP、UDP 等),用于告知接收端如何處理數據。
  • 作用:不同協議的處理方式不同(如 TCP 提供可靠傳輸,UDP 提供快速傳輸),協議號確保接收端用正確的協議解析數據。

1.1 端口號范圍劃分

? 0 - 1023: 知名端口號, HTTP, FTP, SSH 等這些廣為使用的應用層協議, 他們的
端口號都是固定的.? 1024 - 65535: 操作系統動態分配的端口號. 客戶端程序的端口號, 就是由操作
系統從這個范圍分配的

1.2 認識知名端口號(Well-Know Port Number)

有些服務器是非常常用的, 為了使用方便, 人們約定一些常用的服務器, 都是用以下這些
固定的端口號:
? ssh 服務器, 使用 22 端口
? ftp 服務器, 使用 21 端口
? telnet 服務器, 使用 23 端口
? http 服務器, 使用 80 端口
? https 服務器, 使用 443

1.3 兩個問題

1.?一個進程是否可以 bind 多個端口號?--- 可以,進程可以創建多個套接字(Socket),每個套接字綁定不同的端口,獨立監聽或發送數據。

2.?一個端口號是否可以被多個進程 bind? ---?通常不可以,但存在特殊情況,一個端口在同一時間只能被一個進程綁定

2.UDP協議

2.1 UDP協議端模式

? 16 位 UDP 長度, 表示整個數據報(UDP 首部+UDP 數據)的最大長度;(有明顯邊界)

? 如果校驗和出錯, 就會直接丟棄
?
報文就是結構體被組織起來
?

2.2 UDP特點

1. 無連接: 知道對端的 IP 和端口號就直接進行傳輸, 不需要建立連接(如 TCP 的三次握手);
2. 不可靠: 沒有確認機制, 沒有重傳機制; 如果因為網絡故障該段無法發到對方,UDP 協議層也不會給應用層返回任何錯誤信息;
3. 面向數據報: 不能夠靈活的控制讀寫數據的次數和數量;

2.3 面向數據報

應用層交給 UDP 多長的報文, UDP 原樣發送, 既不會拆分, 也不會合并;用 UDP 傳輸 100 個字節的數據:
? 如果發送端調用一次 sendto, 發送 100 個字節, 那么接收端也必須調用對應的 一次 recvfrom, 接收 100 個字節; 而不能循環調用 10 次 recvfrom, 每次接收 10 個字節;
適用場景:
  1. 對實時性要求高(如視頻通話、語音聊天)
  2. 允許少量數據丟失(如 DNS 查詢、游戲數據)

面向數據報的通信以 “快速、靈活” 為核心,犧牲了可靠性以換取效率,適用于對實時性要求高于完整性的場景。

2.4 UDP的緩沖區

???UDP 沒有真正意義上的 發送緩沖區. 調用 sendto 會直接交給內核, 由內核將數據傳給網絡層協議進行后續的傳輸動作;
? ?UDP 具有接收緩沖區. 但是這個接收緩沖區不能保證收到的 UDP 報的順序和發送 UDP 報的順序一致; 如果緩沖區滿了, 再到達的 UDP 數據就會被丟棄
?
工作機制
應用程序調用?sendto()?或?sendmsg()?等函數發送 UDP 數據時,數據會先被復制到發送緩沖區。操作系統內核會盡快將緩沖區中的數據封裝為數據報并通過網絡發送,發送完成后緩沖區中的數據會被立即釋放(不會像 TCP 那樣保留數據用于重傳)
?
?
UDP 的 socket 既能讀, 也能寫, 這個概念叫做 全雙工 ---?指通信雙方可以同時進行雙向數據傳輸的方式,即發送方和接收方能夠在同一時間既發送數據又接收數據,兩者互不干擾。這種模式類似于現實生活中 “打電話”—— 雙方可以同時說話和傾聽,無需等待對方結束。

2.5 UDP使用注意事項

我們注意到, UDP 協議首部中有一個 16 位的最大長度. 也就是說一個 UDP 能傳輸的數據最大長度是 64K(包含 UDP 首部).然而 64K 在當今的互聯網環境下, 是一個非常小的數字.如果我們需要傳輸的數據超過 64K, 就需要在應用層手動的分包, 多次發送, 并在接收端手動拼裝;

2.6 基于UDP的應用層協議

? ?NFS: 網絡文件系統
? ?TFTP: 簡單文件傳輸協議
? ?DHCP: 動態主機配置協議
? ?BOOTP: 啟動協議(用于無盤設備啟動)
? ?DNS: 域名解析協議

?

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

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

相關文章

vue 開發總結:從安裝到第一個交互頁面-與數據庫API

vue 總結 1、安裝vue: WinR 輸入:cnpm install -g vue/cli 驗證是否安裝成功:vue --version 2、新建Vue工程 在對應文件夾下右擊打開集成終端 輸入 vue create query_system(新建項目名字)名稱不能存在大寫&#x…

運維筆記:HTTP 性能優化

一、HTTP 協議特性與性能瓶頸1.1 HTTP 協議發展歷程HTTP 協議的演進直接影響著 Web 性能,各版本關鍵特性對比:協議版本發布時間核心特性性能優勢局限性HTTP/1.01996 年無狀態、短連接簡單易實現每次請求需建立 TCP 連接HTTP/1.11999 年長連接、管道化減少…

ubuntu:運行gcfsd-admin守護進程需要認證,解決方法

這里有個鎖子,每次進入都要輸入密碼,怎么解決? 重新掛載 /data 磁盤 sudo umount /data sudo ntfsfix /dev/sda1 sudo mount -o rw /dev/sda1 /data

1.DRF 環境安裝與配置

文章目錄一. Django Rest_Framework二、環境安裝與配置2.1 安裝 DRF2.2 創建Django項目2.3 添加 rest_framework 應用三、啟動項目一. Django Rest_Framework 核心思想:大量縮減編寫 api 接口的代碼 Django REST framework 是一個建立在 Django 基礎之上的 Web 應…

設計模式(十九)行為型:備忘錄模式詳解

設計模式(十九)行為型:備忘錄模式詳解備忘錄模式(Memento Pattern)是 GoF 23 種設計模式中的行為型模式之一,其核心價值在于在不破壞封裝性的前提下,捕獲并外部化一個對象的內部狀態&#xff0c…

Qt/C++開發監控GB28181系統/錄像回放/切換播放進度立即跳轉/支持8倍速播放/倍速和跳轉進度無縫切換

一、前言說明 在國標監控系統中,錄像回放過程中,需要切換播放進度,對比過很過國標系統,絕大部分尤其是網頁版的監控系統,在切換進度過程中都會黑屏,這個體驗就很不友好了,明明gb28181協議中就有…

【11】大恒相機SDK C++開發 ——原圖像數據IFrameData內存中上下顛倒,怎么裁剪ROI 實時顯示在pictureBox中

文章目錄3 當內存中的 圖像數據是垂直翻轉的時候怎么截取ROI 并顯示3.1 對ROI在原圖中的位置做轉換3.2 將ROI的最后一行當做開始位置,從底部向上復制數據3.3 完整代碼3.4 圖像數據在內存中上下顛倒的情況3.5 調用驗證4 unsafe代碼 解釋及注意事項 看我另一篇文章5 C…

小架構step系列29:校驗注解的組合

1 概述如果遇到某些屬性需要多種校驗,比如需要非空、符合某正則表達式、長度不能超過某值等,如果這種屬性只有有限幾個,那么手工把對應的校驗注解都加上即可。但如果這種屬性比較多,那么重復加這些校驗注解,也是一種代…

網絡基礎19:OSPF多區域實驗

一、拓撲結構1. 網絡拓撲:骨干區域(Area 0):連接核心設備(AR1、AR2、AR3、AR4、AR5、AR6)。非骨干區域:Area 1:AR5 ? AR9Area 2:AR5 ? AR10Area 3:AR6 ? A…

goland編寫go語言導入自定義包出現: package xxx is not in GOROOT (/xxx/xxx) 的解決方案

問題 寫了個自定義的包 calc.go,在路徑 $GOPATH/go_project/src/demo_51_package/com/目錄下,其中main.go 是main方法的入口代碼 main.go 代碼如下 package main import "demo_51_package/com" func main() {add : calc.Add(1, 2)println(add)…

HLS視頻切片音頻中斷問題分析與解決方案

HLS視頻切片音頻中斷問題分析與解決方案 問題背景 在使用FFmpeg進行HLS視頻切片并通過hls.js前端播放時,開發者經常遇到一個典型問題:第一個視頻切片播放正常且有聲音,但后續切片卻突然失去音頻。這種現象在直播和點播場景中均有出現&#xf…

【Linux網絡編程】網絡層協議 - IP

目錄 背景補充 協議頭格式 IP報文的分片與組裝 網段劃分 網段劃分是什么?為什么要進行網段劃分? 怎么進行網段劃分? 路由 路由表生成算法 背景補充 假設現在主機B要給主機C發送消息。在我們前面的學習中,一直都是將數據拷…

從“救火”到“先知”:潤建曲尺運維大模型如何重構網絡運維價值鏈

“7月18號,北京,晴,最高溫度38攝氏度。”天氣預報緩緩播報,商場、地鐵、辦公樓無不歌頌著威利斯開利的貢獻,但這份涼爽的背后,離不開 “電” 的無聲托舉。5G毫秒級下載、絲滑的移動支付、智能電表、智能家居…

Element表格單元格類名動態設置

在 Element UI 的 el-table 組件中,cell-class-name 屬性用于動態自定義表格單元格的 CSS 類名,通常用于根據數據條件設置樣式。1. 基本用法在 el-table 上綁定 :cell-class-name 屬性,值為一個函數。該函數接收一個對象參數,返回…

利用容器適配器實現stack和queue外加deque的介紹(STL)

文章目錄前言什么是容器適配器?觀察庫中的源碼那么該如何使用容器適配器呢?deque的簡單介紹(了解)deque的原理介紹deque的優缺為什么選擇deque作為stack和queue的底層默認容器?(重點)利用容器適配器實現我們自己的棧和…

【因子動物園巡禮】第12章:機器學習在因子投資中的應用(中文翻譯)

【因子動物園巡禮】第12章:機器學習在因子投資中的應用(中文翻譯)第12章 因子投資中的機器學習12.1 量化金融中的人工智能12.2 量化因子投資的AI化組件:解剖學視角12.2.1 數據源拓展與預處理12.2.2 因子研究12.2.3 因子模型12.2.4…

【Golang】用官方rate包構造簡單IP限流器

文章目錄使用 Go 實現基于 IP 地址的限流機制什么是 IP 限流?基于 rate.Limiter 實現 IP 限流1. 設計思路2. 代碼實現3. 限流中間件4. 在 Gin 中使用中間件代碼解釋使用 Go 實現基于 IP 地址的限流機制 在高流量的服務中,限流是一個至關重要的環節。它不…

力扣 Pandas 挑戰(6)---數據合并

本文圍繞力扣的Pandas簡單題集,解析如何用Pandas完成基礎數據處理任務,適合Pandas初學者學習。題目1:1050. 合作過至少三次的演員和導演題目描述:ActorDirector 表:---------------------- | Column Name | Type | …

隨筆之TDengine基準測試示例

文章目錄一、基本信息二、基準測試策略三、基準測試過程1. 模擬高并發寫入場景2. 模擬并發查詢場景四、基準測試結論一、基本信息 TDengine 版本:3.3.6.13(目前最新版本)服務器配置:16核CPU,32GB內存,高IO…

【IQA技術專題】DISTS代碼講解

本文是對DISTS圖像質量評價指標的代碼解讀,原文解讀請看DISTS文章講解。 本文的代碼來源于IQA-Pytorch工程。 1、原文概要 以前的一些IQA方法對于捕捉紋理上的感知一致性有所欠缺,魯棒性不足。基于此,作者開發了一個能夠在圖像結構和圖像紋…