計算機網絡:2、TCP和UDP

2、TCP和UDP

簡介

  • TCP(transmission Control Protocol):是一種通信標準,它使應用程序和計算設備能夠在網絡上交換消息。它的設計目的是在互聯網上發送數據包,并確保數據和信息在網絡上的成功傳遞。
  • UDP(the User Datagram Protocol):是一種跨Internet的通信協議,特別用于時間敏感的傳輸,如視頻播放或DNS查找。它通過在數據傳輸之前不正式建立連接來加快通信速度。

TCP

  1. TCP是面向連接(虛連接)的傳輸層協議。
  2. 每一條TCP連接只能有兩個端點,每一條TCP連接只能是點對點的。
  3. TCP提供可靠交付的服務,無差錯、不丟失、不重復、按需到達。
  4. TCP提供全雙工通信(發送緩存,接收緩存)。
  5. TCP面向字節流,TCP把應用程序交下來的數據看成僅僅是一連串的無結構字節流

報文段首部格式:

  • 源端口(2B)
  • 目的端口(2B)
  • 序號(4B):在一個TCP連接中傳送的字節流中的每一個字節都按順序編號,本字段表示本表文段所發送的第一個字節的序號
  • 確認號(4B):期望收到對方下一個報文段的第一個數據字節的序號。若確認號為N,則證明到序號N-1位置的所有數據都已正確收到。
  • 數據偏移(4bit):首部長度,TCP報文段的數據起始處距離TCP報文段的起始處有多遠,以4B為單位,即一個數值是4B。
  • 控制位(6bit)
    • 緊急位URG:URG=1時,表明此報文段中有緊急數據,是高優先級的數據,應盡快傳送,不用再緩存里排隊,配合緊急指針字段使用。
    • 確認位ACK:ACK=1時確認號有效,在連接建立后所有傳送的報文段都必須把ACK置為1。
    • 推送位PSH:PSH=1時,接收方盡快交付應用進程,不用再等到緩存存滿再向上交付。
    • 復位RST:RST=1時,表明TCP連接中出現嚴重差錯,必須釋放連接,然后再重新建立傳輸鏈接。
    • 同步位SYN:SYN=1時,表明是一個連接請求/連接接受報文。
    • 終止位:FIN=1時,表明此報文段發送發數據已發完,要求釋放鏈接。
  • 窗口(2B):指的是發送本報文段的一方的接收窗口,即現在允許對方發送的數據量。
  • 檢驗和(2B):檢驗首部+數據,檢驗時要加上12B偽首部,第四個字段為6(TCP為6,UDP為17)。
  • 緊急指針(2B):URG=1時才有意義,指出本報文段中緊急數據的字節數。
  • 選項(可變長度):最大報文段長度MSS、窗口擴大、時間戳、選擇確認……
  • 填充(保證4B的整數倍)

連接建立

TCP連接管理

TCP連接傳輸三個階段:連接建立—>數據傳送—>連接釋放

TCP連接的建立采用客戶服務器方式,主動發起連接建立的應用進程叫做客戶,而被動等待連接建立的應用進程叫服務器。

建立連接過程(三次握手)

  1. 客戶端發送連接請求報文段,無應用層數據。SYN=1, seq=x(隨機)
  2. 服務器端為該TCP連接分配緩存和變量,并向客戶端返回確認報文段,允許連接,無應用層數據。SYN=1, ACK=1, seq=y(隨機), ack=x+1
  3. 客戶端為該TCP連接分配緩存和變量,并向服務器端返回確認的確認,可以攜帶數據。SYN=0, ACK=1, seq=x+1, ack=y+1

連接釋放過程(四次揮手)

  1. 客戶端發送連接釋放報文段,停止發送數據,主動關閉TCP連接。FIN=1,seq=u
  2. 服務器端回送一個確認報文段,客戶到服務器這個方向的連接釋放了。ACK=1, seq=v, ack=u+1
  3. 服務器端發完數據,就發出連接釋放報文段,主動關閉TCP連接。FIN=1, ACK=1, seq=w, ack=u+1
  4. 客戶端回送一個確認報文段,在等到實踐等待計時器設置的2MSL(最長報文段壽命)后,連接徹底關閉。ACK=1, seq=u+1, ack=w+1

可靠傳輸

TCP可靠傳輸的機制:校驗;序號;確認;重傳。

  • 超時重傳:TCP咋發送方在規定時間內沒收到確認就要重傳已發送的報文段。TCP采用自適應算法,動態改變重傳時間RTTs(加權平均往返時間)。
  • 每當比期望序號大的失序報文段到達時,發送一個冗余ACK,指明下一個期待字節的序號。連續收到3個對于某序號小的報文段的確認,則認為其丟失,重傳報文段(快速重傳)。

流量控制

流量控制:讓發送方慢點,要讓接收方來得及接收。

TCP利用滑動窗口機制實現流量控制。

在通信過程中,接收方根據自己接收緩存的大小,動態的調整發送方的發送窗口大小,即接收窗口rwnd,發送方的發送窗口的大小=min(接收窗口rwnd, 擁塞窗口cwnd)

TCP為每一個連接設有一個持續計時器,只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個零窗口探測報文段。接收方收到探測報文段時給出現在的窗口值。

擁塞控制

出現擁塞的條件:對資源需求的綜合>可用資源。

四種算法:慢開始、擁塞避免、快重傳、快恢復。

假定:

  1. 數據單方向傳遞,而另一個方向只傳送確認
  2. 接收方總是有足夠大的緩存空間,因而發送窗口大小取決于擁塞程度,發送窗口 = Min{接收窗口rwnd, 擁塞窗口cwnd}

在這里插入圖片描述

UDP

UDP只在IP數據報服務之上增加了很少功能,即復用分用和差錯檢測功能。

UDP的主要特點:

  1. UDP是無連接的,減少開銷和發送數據之前的時延。
  2. UDP使用最大努力交付,即不保證可靠交付
  3. UDP是面向報文的,適合一次性傳輸是少量數據的網絡應用。
  4. UDP無擁塞控制,適合很多實時應用。
  5. UDP首部開銷小,為8B(16位源端口號,16位目的端口號,16位UDP長度,16位UDP校驗和),TCP為20B。
    請添加圖片描述

參考

【王道計算機考研 計算機網絡】 https://www.bilibili.com/video/BV19E411D78Q/?p=140&share_source=copy_web&vd_source=a2b60e3364b59c2f5872cb3058666cae

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

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

相關文章

WEB安全篇:瀏覽器攻擊原理及防護

1、XSS:跨站腳本攻擊就是攻擊者想盡一切辦法將可以執行的代碼注入到網頁中。攻擊者在web頁面惡意插入HTML或script標簽,當用戶瀏覽該頁面時,惡意代碼就會被執行,從而達到攻擊的目的。XSS利用的是用戶對指定網站的信任。比如&#…

匯編語言學習2---GNU Debugger (GDB)

學習記錄,在匯編語言 ,我們面對的是機器碼(以匯編指令形式展現),所以斷點要設置在機器碼被加載到內存中的位置。 GEF插件使用 安裝插件wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/pyecho source ~/.gdbinit-g…

談談架構的內容

一、架構的定義架構是一個界定不清的東西,我們很難講清楚哪些東西是架構,哪些東西不是架構。但軟件行業里其實人人都在搞架構,軟件設計就是架構本身。架構這個詞出現得很早,有些人認為是 NASA(也可能是NATO&#xff09…

C#文件(夾)讀取相關(完善中。。。)

前言閱讀項目編輯器的代碼時,發現好多與文件(夾)路徑相關代碼。本來自己之前對路徑相關的東西就模模糊糊,希望通過這篇筆記能讓自己模糊的地方明朗一下。" / " 與 " \ "你是否有過這樣的疑惑:Wind…

FPGA DP1.4 With DSC解決方案

引言:迎接高清高刷時代的顯示挑戰隨著8K分辨率、高刷新率、HDR和更廣色域內容的普及,傳統視頻接口的帶寬正面臨極限。DisplayPort 1.4標準雖提供了高達32.4 Gbps的帶寬(HBR3速率),但要無壓縮地傳輸8K60Hz 10bpp HDR視頻…

新手向:Python開發簡易網絡服務器

Python網絡服務器開發指南:從零開始的完整實現網絡服務器基礎概念網絡服務器是互聯網基礎設施的核心組件,它本質上是一個持續運行的程序,負責監聽特定端口(如HTTP服務的80端口或HTTPS的443端口),處理來自客…

819 機器學習-決策樹2

一、決策樹的算法信息增益:某個屬性帶來的熵增1、決策樹三大經典算法? ID3 → 信息增益 信息增益:某個屬性帶來的熵增? C4.5 → 信息增益率 信息增益率:信息增益自身熵? CART → 基尼指數(分類);平方誤…

Objective-C 版本的 LiveEventBus 效果

想要 Objective-C 版本的 LiveEventBus 效果(跨頁面/跨模塊通信,支持粘性和非粘性事件)。在 iOS 里對應的就是 NSNotificationCenter,但是它 默認不支持粘性事件,所以如果你想要“粘性”,需要自己封裝一層。…

WindowsAPI|每天了解幾個winAPI接口之網絡配置相關文檔Iphlpapi.h詳細分析七

上一篇:WindowsAPI|每天了解幾個winAPI接口之網絡配置相關文檔Iphlpapi.h詳細分析六 如果有錯誤歡迎指正批評,在此只作為科普和參考。 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\iphlpapi.h 文章目錄CreateIpNetEntry&#xff1…

STM32F407VGT6從零建立一個標準庫工程模板+VSCode或Keil5

一、前言 下載平臺:STM32F407ZGT6 代碼使用平臺:VSCode 編譯器:arm-none-aebi-gcc ---- 默認你已經安裝 程序下載工具:STlink ---- 默認你擁有 批處理工具:make ---- 默認你已經安裝 使用此方法可以不借助其它插件,例如:STM32EIDE。這個方法已經經過驗證可以在STM3…

佩京VR黨建工作站-黨建VR系統-VR黨建展廳

VR黨建工作站是一種依托VR虛擬現實技術的數字化黨建文化學習工具。它通過將豐富的學習內容植入到智慧黨建科技產品中,構建出沉浸式的學習場景,從而創新了體驗式學習模式,促進了黨員的自主學習。VR黨建工作站核心功能:1、了解實時新…

Kotlin 協程之Channel的概念和基本使用

前言 在 專欄 之前的文章中,我們已經知道了協程的啟動、掛起、取消、異常以及常用的協程作用域等基礎應用。 這些基礎應用適合的場景是一次性任務,執行完就結束了的場景。 launch / async 適合的場景 網絡請求數據庫查詢文件讀寫并行計算任務等等 而…

安裝使用Conda

文章目錄Linux安裝 Conda(Miniconda 或 Anaconda)?Miniconda (輕量版)激活配置Windows安裝配置 Conda?添加清華鏡像源加速創建并激活 Conda 環境驗證步驟?安裝項目依賴運行項目Linux安裝 Conda(Miniconda 或 Anaconda)? Mini…

面向智能空戰的深度強化學習技術綜述

CSDN大禮包《大模型課程》 CSDN大禮包《深度強化學習課程》 CSDN大禮包《人工智能平臺設計開發課程》

DeepSeek-V3.1 Claude Code: 革命性的AI編碼助手詳解與應用指南

DeepSeek-V3.1 & Claude Code: 革命性的AI編碼助手詳解與應用指南 今天 DeepSeek模型已支持接入 Claude Code,我們來深入探討Claude Code ——Anthropic 推出的一個強大工具。它不僅僅是一個簡單的代碼補全助手,而是一個嵌入終端的智能代理&#xf…

智能求職推薦系統

智能求職推薦系統 基于知識圖譜和大語言模型的智能求職推薦系統,為求職者提供個性化崗位推薦和AI驅動的匹配分析。 🚀 系統特性 智能推薦: 基于知識圖譜的多維度職位匹配AI分析: 集成DeepSeek大模型提供深度分析和建議可視化展示: 使用ECharts展示推薦結…

瑞芯微:AIoT芯片領航者的全棧突圍與生態崛起

一、業績高速增長的底層邏輯??瑞芯微的持續爆發式增長源于三大關鍵支柱:技術縱深??:深耕“大音頻、大視頻、大感知、大軟件”四大核心技術矩陣,自研NPU/ISP/編解碼等核心IP持續迭代;精準定位??:瞄準邊緣側與端側…

【報錯】Please do not run this script with sudo bash

目錄 報錯 分析 解決方法 擴展 報錯分析 安裝conda 報錯 Please do not run this script with sudo bash: showHelp: command not found 分析 腳本有以下要求: 不能以root身份運行(當前是root用戶)

多線程—飛機大戰排行榜功能(2.0版本)

(一)實現功能: 1.基礎的成績排序 2.相同成績隨機排名 3.用戶名注冊重復 (二)效果視頻: (三)代碼實現: 3.1 && 3.2 在FileRead類中新增方法如下:具體的代碼實現&a…

React + Antd+TS 動態表單容器組件技術解析與實現

概述在現代前端應用中,表單是用戶交互的核心部分。本文將深入分析一個基于 React 和 Ant Design 的高級動態表單容器組件,它提供了強大的可配置性、靈活的布局選項和豐富的功能擴展能力。組件核心特性1. 高度可配置的表單結構interface FormContainerPro…