計算機網絡——傳輸層(25王道最新版)

傳輸層

  • 傳輸層提供的服務
    • 進程 端口號 傳輸層協議之間的關系
      • socket套接字
    • 有鏈接 VS 無連接 | 可靠 VS 不可靠
  • UDP數據報及檢驗
    • 數據報格式
    • 檢驗方法
  • TCP
    • TCP協議的三大階段
    • TCP報文段格式(很重要)
      • 建立連接(三次握手)(超級超級重要)
      • 數據傳輸
      • 釋放連接(四次揮手)
      • TCP連接管理小節
    • TCP流量控制和可靠傳輸
      • 可靠傳輸-擁塞控制
        • TCP 擁塞控制和流量控制的關系
      • 慢開始 與擁塞控制算法
      • 結語

傳輸層提供的服務

  • 地位
    在這里插入圖片描述

  • 概述

在這里插入圖片描述

進程 端口號 傳輸層協議之間的關系

在這里插入圖片描述

socket套接字

  • 解決了每次傳輸 需要重復輸入協議(TCP/UDP)以及對方的IP地址和端口號的問題 它的本質是一種數據結構
  • 例如進程1與進程5之間需要傳輸數據 因為他們都是使用的TCP協議 所以就會創建一個TCP套接字
  • 在這個套接字里面需要指明對方的IP地址和端口號
  • 接下來如果兩個進程之間需要有多次的數據傳輸 就可以直接用套接字來說明傳輸方向

有鏈接 VS 無連接 | 可靠 VS 不可靠

  • 在下面兩張圖中 左邊指的是TCP 右邊指的是UDP
    在這里插入圖片描述

在這里插入圖片描述

UDP數據報及檢驗

  • UDP
    在這里插入圖片描述
  • TCP
    在這里插入圖片描述

數據報格式

在這里插入圖片描述

檢驗方法

  • 對于一組數據
    在這里插入圖片描述
  • 對于多組數據
    在這里插入圖片描述
  • 說明
    在這里插入圖片描述
  • 小節
    在這里插入圖片描述

TCP

TCP協議的三大階段

在這里插入圖片描述

  • 一次鏈接可以傳輸多個報文
    在這里插入圖片描述

  • 這里引入了換一個概念就是MSS 表示我們傳輸時報文段的最大長度

  • 這里重點說一下這句話“TCP是面向字節流的 UDP是面向報文的”

  • 怎么樣來理解呢

  • 對于TCP協議而言 它將應用層交給他的數據看作是一連串的字節流 不管關心數據到底是報文Y的還是報文Z的 只是根據MSS的限制將它拆分成合適的大小進行傳輸

  • 跟前面UDP不同的是 UDP數據報每次運輸的都是一個完整的報文

  • 這便是 面向字節流和面向報文的含義

在這里插入圖片描述

TCP報文段格式(很重要)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

建立連接(三次握手)(超級超級重要)

  • 因為我們的TCP協議是在建立連接的基礎之上的 所以我們在傳輸數據之前必須有一個建立連接的過程
  • 在前面的學習中我們知道當SYN=1的時候 表示這是一個連接請求或者接受報文 對應到下圖中顯然只有握手1是在請求連接 只有握手2是在同意請求連接
  • 則顯然只有握手1和握手2的SYN=1
  • seq表示傳輸的數據的起始位置 ack=667 說明的是我(接收方)希望你下一次給我發送的數據是從667開始的
  • 這里還需要提一下窗口值的概念
  • 例如A發送給B的時候設置window=200 ack=100意思是告訴B 你下一次給我發送數據的時候要從100這個位置開始 并且的接收能力是200 換句話說 從100開始 我(A)還允許你給我發200B的數據
    在這里插入圖片描述
  • 特別要注意的是 對于握手2 他雖然表示的同意連接 也就是他的TCP報文段只由首部構成 并沒有任何的數據部分 但是他仍然需要消耗一個序號 即他返回的ack需要在seq(起始位置)的基礎上+1
  • 為什么說需要特別注意呢 因為握手3可以選擇要不要攜帶數據 他在不帶數據的情況下跟握手2不同的是 他并不需要消耗一個序號
    在這里插入圖片描述
  • 三次握手的狀態變化

在這里插入圖片描述

數據傳輸

釋放連接(四次揮手)

  • 在前面我們學習了FIN=1表示發送方的數據已經全部發送完畢
  • 但是我們的TCP是提供全雙工通信的 也就是雙向的 這是一個傳輸層的協議
  • 不同于我們數據鏈路層實現流量控制與可靠傳輸時候學習的S-W,GBN,SR等協議 他們都是有明確的發送方和接受方的 也就說明他們是工作在半雙工條件下的協議
  • 在四次揮手中只有揮手1(表示客戶傳輸完畢)和揮手3(表示服務器傳輸完畢)表示數據傳輸完畢 也就是說他們是都可以作為發送方的
  • 揮手2和揮手4是我們各自作為接收方告訴對面數據已經被接收 而這恰恰又體現了TCP是一種可靠 有連接的傳輸服務
  • 特別需要說明的是揮手1和揮手3可以攜帶數據 但是他們一般不攜帶數據
  • 而揮手2是可以攜帶數據的 因為揮手1僅僅是進程A單方面結束了數據傳送
  • 揮手4是不可以攜帶數據的 因為揮手3之后已經代表數據傳送結束了
    在這里插入圖片描述#### 四次揮手的狀態變化
  • 對于TIME-WAIT這個狀態是用于我們防止我們的服務器沒有接收到揮手4 假如真的傳輸失敗了
  • 那么這個時間段的等待就是非常有必要的 因為對于我們的服務器而言 他長時間沒有收到我們A給他發送的揮手4
  • 他就會重新發送揮手3 這樣我們的進程A就會收到 然后重新發送揮手4
  • 如果這一段時間什么也沒有收到 那么我們的客戶進程就默認對面已經收到了我們發出的揮手4

在這里插入圖片描述

TCP連接管理小節

在這里插入圖片描述

TCP流量控制和可靠傳輸

  • 首先TCP是一個傳輸層概念 他實現流量控制和可靠傳輸的方式和我們數據鏈路層是非常類似的
  • 可靠傳輸方面 它跟我們數據鏈路層一樣 用到這個確認機制 不過來這里我們這個是對于報文段的一個確認 可以接受一個報文段就返回一個ACK
  • 在重傳機制方面 也是非常類似 就是只要在規定時間之內沒有收到接受方返回的ACK那么就需要重發
  • 舉個例子 對于四次揮手 我們的發送方是在最后需要CLOSE階段之前 也就是我們發送方收到揮手3之后設置一個TIME-WAIT階段
  • 這個階段的時長是2倍MSl 表示我們報文段在網絡中存在的最大壽命 設置的本質原因就是 我們的需要發送方他需要確保服務器收到了我們的請求關閉數據傳送的信息 也就是我們需要收到揮手4才能進入CLOSE階段
  • 假設我們服務器返回的這個ACK丟失了 那么在過了一段時間時候 客戶端進程就會重新發送 直到順利接收服務器返回的ACK
  • 在流量控制方面 也是類似 引入滑動窗口機制 這個時候接收方和發送方都會維持一個窗口 根據傳輸過程中發送的 rwnd的值來告訴對方 從某個序號開始 我最多還能接受多少數據
    在這里插入圖片描述

可靠傳輸-擁塞控制

TCP 擁塞控制和流量控制的關系
  • 之前學習的流量控制的對象是兩個進程各自的某個端口 也就是局部的控制
  • 擁塞控制實現的是控制整個網絡的數據發送量 是全局的
    在這里插入圖片描述

慢開始 與擁塞控制算法

  • 首先我們在建立TCP連接之后 就會默認使用慢開始算法 也就是說一開始的發送窗口的值為1 之后每隔一個RTT(往返時延)我們的發送窗口就會翻倍 也就是x2按指數級增長 直到達到閾值(ssthresh)
  • 這里唯一需要注意的一點是 如果在閾值前一個RTT 照理來說他是需要翻倍的 但是如果發送窗口此時翻倍之后 超過了這個閾值 那么取其中的較小值作為發送窗口的大小 也就是min{閾值 cwnd}
  • 之后的時間內 會自動轉為擁塞避免算法 就好比之前我們剛剛開始運動 每天的運動量都翻倍 但是隨著運動量越來越大 我們肯定需要降低他的增長速度 也就對應了這里的擁塞避免算法 使得增長速度降為線性
  • 通過之前的學習我們知道一旦出現了超時重傳 可能說明我們網絡當中某些路由器的負載太大了 以至于不能及時返回確認信息 所以此時認為嚴重擁塞 那么此時會干兩件事情
    1. 在這個RTT結束之后我們檢測到擁塞 立即將cwnd(擁塞窗口)設置為1
  • 2.閾值設置為原來的一半 本質上就是降低數據的發送量
  • 之后延續之前的流程 一開始還是使用慢開始 到達閾值之后使用擁塞避免算法
    在這里插入圖片描述
  • 例題
  • 對于在解決這道例題之前 我們需要明確的是 之前在擁塞控制那里玩嗎討論的前提是接收窗口足夠大 導致玩嗎每次調整發送窗口大小完全是依據擁塞窗口來調整的
  • 但實際情況是 發送窗口=min{rwnd,cwnd}
  • 此外還需要注意的是一般來說都會設置MSS=1KB這個條件 也就是說 我們閾值和發送/接收緩沖區的大小就是他們的值除以1KB
  • 好那知道這些之后我們再去看這道例題

在這里插入圖片描述

  • 首先 我們的閾值是32 乙的接收窗口rwnd大小是16 說了乙是將數據全部存入緩存 不被取走 也就說說暫時還不交付給應用層
  • 其次基本思路就是我們甲他的發送窗口不能大于乙的接收窗口rwnd 同時不能大于他的擁塞窗口
  • 0時刻 閾值S=32 r=16 c=1 發送窗口:1
  • 1時刻 S=32 r=15 c=2 發送窗口:2
  • 2時刻。 S=32 r=13 c=4 發送窗口:4
  • 3時刻。 S=32 r=9 c=8 發送窗口:8
  • 4時刻。 S=32. r=1 c=16 發送窗口:1

結語

今天翻草稿箱的時候 居然還有以前寫的文章沒發出去哈哈 還有好幾篇等我稍微完善一下再發出去
該說不說 現在感覺ipad寫還行啊 感覺CSDN優化了~
在這里插入圖片描述

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

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

相關文章

羽毛球地板:從專業運動場景到全民健身市場的技術躍遷與產業重構

在全球體育產業向“專業化大眾化”雙軌并行的趨勢下,羽毛球地板作為運動場景的核心基礎設施,正經歷從單一功能型產品向“性能優化場景適配智能管理”一體化解決方案的轉型。據QYResearch統計,2031年全球羽毛球地板市場規模將達15.95億元&…

R 語言查看類庫源碼的方法

你想查看 getGEO(來自 R 語言 GEOquery 包)的源碼,這能幫你更好理解其工作原理和數據處理細節。由于 getGEO 是 R 函數,查看方法與 Python 有所不同。下面為你提供幾種主要方法。 方法 適用場景 關鍵命令/操作 在 R 控制臺直接查看…

SQL,posexplode 用法示例

示例1 -- 創建測試數據 WITH test_data AS (SELECT array(apple, banana, cherry) as fruits ) SELECT pos, col FROM test_data LATERAL VIEW posexplode(fruits) t AS pos, col;結果 pos | col ----|------- 0 | apple 1 | banana 2 | cherry示例2 -- 假設有一個用戶表…

數據庫造神計劃第十天---數據庫約束(1)

🔥個人主頁:尋星探路 🎬作者簡介:Java研發方向學習者 📖個人專欄:《從青銅到王者,就差這講數據結構!!!》、 《JAVA(SE)----如此簡單&a…

知微傳感Dkam系列3D相機SDK例程篇:CSharp連接相機及保存數據

序言 寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有: 1、便利他人應用相機,本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋;2、促進行業發展及交流。 知微傳感Dkam系列3D相機可以應用于定位分揀、焊接焊縫提…

[筆記] 系統分析師 第十二章 軟件架構設計(分析師主要工作)

文章目錄前言12.1 軟件架構概述12.1.1 軟件架構的意義12.1.2 軟件架構的發展史12.2 軟件架構建模12.3 軟件架構風格12.3.1 軟件架構風格概述12.3.2 數據流體系結構風格1.批處理體系結構風格2.管道-過濾體系結構風格12.3.3 調用/返回體系結構風格1.主程序/子程序風格2.面向對象體…

C++---存儲周期,作用域,鏈接性

在C程序設計中,變量的行為不僅由其類型決定,還由存儲周期(變量在內存中存在的時間)、作用域(變量可被訪問的代碼范圍)和鏈接性(變量在多文件程序中的可見性)共同約束。 一、存儲周期…

基于Python的商品爬取與可視化系統

本系統是基于Python的商品數據爬取與價格分析可視化系統,集成了數據爬取、數據存儲、數據展示和可視化分析等功能。下面介紹一下系統主要功能和技術棧。一、主要功能:1、數據爬取功能 支持淘寶美妝商品數據爬取 可配置搜索關鍵詞和爬取頁數 實時顯示爬取…

聯邦學習過程中,了解清楚影響準確率的因素有哪些也很重要

影響模型準確率的因素有很多,下面是一些主要的因素,它們可以從數據、模型設計、訓練策略以及超參數等多個層面來考慮。1. 學習率作用:學習率直接影響模型的訓練速度、穩定性和最終表現。過高的學習率可能導致模型不收斂或收斂不穩定&#xff…

C# WPF中使用System.Management.Automation類調用Powershell報錯解決辦法

在WPF開發中,需要使用powershell進行自動化管理,以下為開發環境 1、.NET framework 4.7.2 2、VS2019 社區版 使用System.Management.Automation類 遇到的問題: 需要引用 System.Management.Automation類,但是在使用using指令時無法…

從 Pump.fun「直播」看熱點幣的生與死

在加密市場里,熱點就是流量,流量就是價值。最近,Solana 生態的 Pump.fun 推出了「直播」板塊,讓發幣這件事變得像看秀一樣:一個個新幣在鏈上實時登場,社區即時互動,玩家實時下注。這種形式不僅帶…

圖靈完備性:計算理論的基石與無限可能

本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術! 1 圖靈完備性的基本概念 圖靈完備性(Turing completeness…

HarmonyOS 5.0應用開發——V2裝飾器@once的使用

【高心星出品】 文章目錄V2裝飾器once的使用概念一、核心作用與規則二、適用場景案例V2裝飾器once的使用 概念 在鴻蒙ArkTS開發中,Once裝飾器用于實現子組件僅接受父組件傳遞的初始值,后續父組件數據變化不再同步至子組件。以下是其核心要點&#xff1…

跨域請求:解決方案

一、跨域核心概念:同源策略與跨域定義 跨域問題的根源是瀏覽器的 同源策略(Same-Origin Policy),這是瀏覽器為保護用戶數據安全而設置的核心安全限制。 1. 什么是 “同源”? “同源” 指的是兩個 URL 的 協議、域名…

前端形態與樣式風格:從古典到現代的視覺語言演進

目錄前端形態與樣式風格:從古典到現代的視覺語言演進概述1. 前端形態的演進:四種核心范式1.1 古典范式:語義化HTML與CSS1.2 組件化范式:模塊化與復用1.3 響應式范式:多端適配1.4 動態范式:狀態驅動視圖2. 樣…

用戶系統從0到1:登錄、權限、積分一網打盡

👤 用戶系統從0到1:登錄、權限、積分一網打盡 副標題:Flask-Login 多級權限 積分會員系統實戰 項目原型:https://madechango.com 難度等級:???☆☆ 預計閱讀時間:20分鐘 🎯 引子&#xff1…

Java 大視界 -- Java 大數據在智能安防視頻監控系統中的視頻內容理解與智能預警升級

Java 大視界 -- Java 大數據在智能安防視頻監控系統中的視頻內容理解與智能預警升級引言:正文:一、傳統安防監控的 “三重困局”:看不全、看不懂、反應慢1.1 人工盯屏 “力不從心”1.1.1 攝像頭密度與人力的矛盾1.1.2 錄像調閱 “馬后炮”1.2…

OpenHarmony包管理子系統核心源碼深度解讀:從BundleManager到AMS,徹底打通應用安裝、卸載與沙箱機制全鏈路

目錄 架構概覽 核心組件詳解 包安裝流程分析 包卸載流程分析 包更新流程分析 包信息存儲機制 Launcher界面管控 開機默認系統應用安裝機制<

簡單聊聊神經網絡中的反向傳播

參考文章&#xff1a; 一文弄懂神經網絡中的反向傳播法——BackPropagation - Charlotte77 - 博客園 反向傳播求偏導原理簡單理解_反向傳播偏導-CSDN博客 這篇文章是筆者在讀完上述兩篇參考文章后的整理或者說按照自己的理解進行的一些補充&#xff0c;強烈推薦先閱讀上述兩篇文…

JSP自駕游管理系統46u2v--(程序+源碼+數據庫+調試部署+開發環境)

本系統&#xff08;程序源碼數據庫調試部署開發環境&#xff09;帶論文文檔1萬字以上&#xff0c;文末可獲取&#xff0c;系統界面在最后面。系統程序文件列表開題報告內容一、研究背景與意義 近年來&#xff0c;自駕游因自由度高、個性化強成為國內旅游市場增長最快的領域&…