計算機網絡之運輸層

一、概述

物理層、數據鏈路層以及網絡層它們共同解決了將主機通過異構網絡互聯起來所面臨的的問題,實現了主機到主機的通信

但實際上在計算機網絡中進行通信的真正實體是位于通信兩端主機中的進程

如何為運行在不同主機上的應用進程提供直接的通信服務時運輸層的任務,運輸層協議又稱端到端協議

?

?1.1端口號

為了使運行不同操作系統的計算機的應用進程之間能進行網絡通信,必須使用統一的方法對TCP/IP體系的應用進程進行標識,即端口號

邏輯端口的概念(端口):一個整數值(16位);0-65535

?網絡上中進程工作方式:C/S 對應的端口號碼的分配也分為兩大類

服務類(靜態的預先指定的)

1-1013(默認系統熟知的服務)

1023-45191(需要申請注冊的服務? QQ4000,8000都是它所使用的端口)

客戶類(隨機的由本地操作系統自己管控)

端口:相當于進程在網絡中的地址

IP+PORT(端口號) 構成了網絡中唯一的通信端點:我們稱之為端到端的通信

(Socket) (Socket) Protocol

?1.2復用與分用

發送方的復用

  • 發送方的某些應用進程所發送的不同應用報文,在運輸層使用UDP協議進行封裝,這是UDP復用;若用TCP封裝則稱TCP復用
  • 運輸層使用端口號區分不同進程,不管使用何種協議封裝的報文,在網絡層都需要使用IP協議封裝成IP數據報,這是IP復用,數據報中協議字段的值用來表名封裝的是何種協議數據單元

接收方的分用

  • 根據協議字段的值,將IP數據報封裝的協議數據單元上交運輸層的過程叫IP分用
  • 同理,UDP根據端口號將數據交給應用進程叫做UDP分用;TCP根據端口號將數據交給應用進程叫做TCP分用

?1.3運輸層引入的協議

1,TCP協議(負責完成端到端的可靠傳輸)

2,UDP協議(負責完成端到端的數據傳輸)

用戶數據報協議UDP

  • UDP無連接的,隨時可向目的主機發送報文,支持單播、多播和廣播

  • UDP收到應用層報文后直接為報文添加UDP首部就進行發送,即面向應用報文

  • UDP數據報首部僅8字節

?傳輸控制協議TCP

  • TCP面向連接的。發送數據前需要"三報文握手"建立連接,數據傳輸結束后需要"四報文揮手"釋放連接

  • 僅支持單播

  • TCP是面向字節流的。其將應用進程交付下來的數據塊僅僅看作是一連串的字節流,TCP將這些字節流編號并存儲在緩沖中;接收方一邊接收數據,一邊將緩沖中的數據交給應用進程。

  • 接收方收到的字節流必須和發送方收到的字節流完全一致

  • 不會出現傳輸差錯(誤碼、丟失、亂序、重復)

  • TCP報文段首部最小20字節,最大60字節

?1.4TCP協議流量控制

1)滑動窗口? 發送窗口? 接收窗口

2)超時計時器

3)流量控制方法 :接收端控制發送端

2)超時計時器

3)流量控制方法:接收端控制發送端

4)流量控制的實現過程:0窗口

5)TCP協議效率管理:糊涂窗口

流量控制

一般來說,我們希望數據傳輸能快一些,但如果發送方把數據發送得過快,接收方就可能來不及接收,這會造成數據的丟失

流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收

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

  • 發送方和接收方窗口保持一致,發送方窗口隨著接收方窗口變化而變化(通過確認報文告知發送方)
  • 發送方發送完窗口內數據后需要等到確認報文才會滑動窗口并繼續發送,若窗口內的某個值很久沒有收到回答報文,則超時重傳報文

若接收方窗口調為0后,一段時間之后又調為200,此時向發送方傳遞確認報文,可此時報文丟失,則會造成發送方窗口始終為0,接收方以為發送方收到了確認報文而開始等待數據,造成死鎖,如何解決??

當發送方窗口大小為0時,其隔一段時間就會發送一個1字節大小的零窗口探測報文,看看此時接收窗口大小是否進行調整

零窗口探測報文也有超時重傳機制

1.5TCP的擁塞控制

1)擁塞控制的概念:擁塞就是擁堵了(網絡擁堵了),擁堵的原因?數據包太多了,導致網絡吞吐量下降,網絡時延增加;網絡時延增加又進而加劇了網絡數據包增多

?2)擁塞控制的手段方法

(1)核心方法:減少數據包數量

(2)具體實現:就根據不同情況,采用不同方法來減少數據包數量

(3)擁塞的主要表現就是時延的增加,為此,就圍繞時延增加來進行數據包數量的調整

(4)數據包投放數量是由各主機的發送窗口大小決定的

(5)TCP又引入一個擁塞窗口的概念;擁塞發生時應該控制發送窗口的數量

????????結論:發送窗口的大小:min(擁塞窗口,接收窗口)

(6)擁塞窗口:擁塞發生時,能夠發送數據包的個數

(7)擁塞控制算法:慢開始? 擁塞避免 快重傳? 快恢復

1)慢開始:設置門限值;門限值內,試探著向網絡投入數據包,避免擁塞

2)擁塞避免:擁塞發生時,能夠發送數據包的個數

3)快重傳:當數據包未按序到達,導致重復確認增多,則立即重傳該數據包,門限降為重復確認時擁塞窗口的一半,擁塞窗口同時調小

4)快恢復:發生超時時,立即急速的減少投入網絡的數據包

在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡性能就要變壞,這種情況叫做擁塞

若出現擁塞而不進行控制,整個網絡的吞吐量將隨輸入負荷的增大而下降

1.6超時重傳時間(RTO)選擇

正常情況下,超時重傳時間應該設為略大于往返時間。但是由于各區域的速率可能不一致,因此將超時重傳時間設置為一個固定值是行不通的?

?往返時間測量問題

針對出現超時重傳時無法測準往返時間RTT的問題,有以下解決方法

在計算加權平均往返時間RTTs時,只要報文段重傳了,就不采用其往返時間TT樣本。也就是出現重傳時,不重新計算RTTs,進而超時重傳時間RTO也不會重新計算。


此方法的漏洞如下:如果報文段時延突然增大很多,并且之后很長一段時間都會保持這種時延。因此在原來得出的重傳時間內,不會收到確認報文段,于是重傳,造成死鎖


修正方法:報文段每重傳一次,就把超時重傳時間RTO增大一些,典型的做法是將RTO的值取為舊RTO的2倍

1.7可靠傳輸

可靠性保障可以放在體系結構中的任何一層(數據鏈路層,網絡層)實現,但現代網絡系統面向的是主機(獨立自主的計算力)系統,可以將可靠性保障交由主機來完成,進而減輕通信子網的負擔,使得通信子網專注于數據包的高效傳輸

1.停止等待協議(ARQ自動請求重傳協議)

A給B發送數據,B需要給一個確認,

否認應答:A再發,

?2.后退N幀重傳(Go Back N ARQ)(接收窗口固定唯一,而TCP接收窗口不確定)

(1)發送窗口:沒有得到確認的情況下,發送端可以連續發送分組的個數

(2)接收窗口:接收數據的個數以及包含能接受數據的序號

(3)工作協議

(4)窗口大小與序號關系

3.選擇重傳協議

目的提高發送速率,不在采用發送一個數據幀就停下來等待確認的模式,而是可以連續發送多個數據幀后才停下來等待的模式

接收端:引入一個接收窗口的概念(即應當接收的數據幀及數據幀序號);這類協議接收窗口大小為1

其中:連續發送多少個數據幀的個數稱為? 發送窗口

(1)發送窗口

(2)接收窗口

(3)工作過程

(4)窗口大小與序號關系

1.8運輸連接管理

TCP的運輸連接管理就是使運輸連接的建立和釋放都能正常地進行

  • SYN1的報文段不能攜帶數據,但會消耗一個序列號seq
  • ACK=1代表這是普通確認報文段,ack=x+1表示這是對報文段序列號seq=x的確認

  • 客戶端發起關閉請求,一去一回后進入半關閉狀態【客戶端不再發送數據,服務端可能還會發】
  • 服務器將自己剩余的數據發送完后也發送一個關閉請求,接著客戶端給予回應后服務器關閉,客戶機則要等到一段時間后完全關閉(防止發給服務器的確認報文丟失)

1.9首部格式

  • 源端口:占16比特,寫入源端口號,用來標識發送該TCP報文段的應用進程

  • 目的端口:占16比特,寫入目的端口號,用來標識接收該TCP報文段的應用進程

  • 序號:占32比特,取值范圍[ 0 , 2^{32} ? 1 ] ,序號增加到最后一個后,下一個序號就又回到0。作用是指出本TCP報文段數據載荷的第一個字節的序號
  • 確認標志位ACK:取值為1時確認號字段才有效,為0時確認號字段無效

確認號:占32比特,取值范圍?[ 0 , 2^{32} ? 1 ],序號增加到最后一個后,下一個序號就又回到0。可理解為若確認號=n,則表明到序號n-1為止的所有數據都已正確接收,期望接收序號為n的數據

  • 數據偏移:占4比特,并以4字節為單位

????????用來指出TCP報文段的數據載荷部分的起始處距離TCP報文段的起始處。這個字段實際?上是指出TCP報文段的首部長度

首部固定長度為20字節,因此數據偏移字段的最小值(0101)_2

  • 保留字段:占6比特,保留為今后使用,但是目前應置為0

  • 窗口:占16比特,以字節為單位。指出發送本報文段一方的接收窗口

    窗口值作為接收方讓發送方設置其發送窗口的依據,這是以接收方的接收能力來控制發送方的發送能力,稱為流量控制

  • 檢驗和:占16比特,檢測范圍包括TCP報文段的首部和數據載荷兩部分

    在計算校驗和時,要在TCP報文段的前面加上12字節的偽首部

  • 同步標志位SYN:在TCP連接建立時用來同步序號

  • 終止標志位FIN:用來釋放TCP連接

  • 緊急標志位URG:取值為1緊急指針字段有效;取值為0時緊急指針字段無效。

  • 緊急指針:占16比特,以字節為單位,用來指明緊急數據的長度

選項:增加選項可以增加TCP的功能

  • 最大報文段長度MSS選項TCP報文段數據載荷部分的最大長度
  • 窗口擴大選項:為了擴大窗口(提高吞吐率)
  • 時間戳選項
    • 用來計算往返時間RTT
    • 用于處理序號超范圍的情況,又稱為防止序號繞回PAWS
  • 選擇確認選項:實現選擇確認功能
  • 填充:由于選項長度可變,因此使用填充來保證報文段首部能被4整除

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

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

相關文章

基于Boost.Asio實現端口映射器

Boost.Asio 是一個功能強大的 C 庫,用于異步編程和網絡編程,它提供了跨平臺的異步 I/O 操作。在這篇文章中,我們將深入分析一個使用 Boost.Asio 實現的簡單端口映射服務器,該服務器能夠將本地端口的數據包轉發到指定的遠程服務器上…

從設計上理解JDK動態代理

作者簡介:大家好,我是smart哥,前中興通訊、美團架構師,現某互聯網公司CTO 聯系qq:184480602,加我進群,大家一起學習,一起進步,一起對抗互聯網寒冬 照理說,動態…

上門預約小程序開發優勢

想要放松身心,享受按摩的舒適感?那就需要一個專業的按摩師來上門服務。我們開發的預約按摩小程序app系統,匯聚各類上門按摩服務,包括推拿SPA、小兒推拿、中醫等,為您提供高價值、高標準的養生健康體驗。24小時隨時提供…

GEE土地分類——使用隨機森林方法和多源遙感數據進行面向對象的土地分類NAIP數據為例

簡介: 數據: 國家農業圖像計劃 (NAIP) 在美國大陸的農業生長季節獲取航空圖像。 NAIP 項目每年根據可用資金和圖像獲取周期簽訂合同。從 2003 年開始,NAIP 以 5 年為一個周期。2008 年是過渡年,2009 年開始采用 3 年周期。 NAIP 圖像以一米的地面采樣距離 (GSD) 采集,水…

【前端】讓列表像Excel單元格一樣編輯

前言 領導說了一堆的話,最后總結一句就是客戶很懶,客戶的員工更加懶。 本著讓別人節省時間的原則,提倡出了讓列表和Excal的單元格一樣,不僅看數據還可以隨時更改數據。 查資料 根據 Jeecg-Vue3 源碼介紹,從而知道是基于 Vben Admin 開源項目進行改造的。 因此在 Vben…

Sulfo-CY3 NHS熒光染料的制備和表征

Sulfo-CY3 NHS(源自星戈瑞的花菁染料)熒光染料的制備和表征是確保染料質量和性能的關鍵步驟。制備Sulfo-CY3 NHS熒光染料: 原材料準備:準備所需的原材料,包括CY3 NHS ester(或等效的前體),用于制備Sulfo-C…

沉頭孔和埋頭孔的區別

埋頭空和沉頭孔的區別在于螺栓孔上部擴孔:沉頭孔是直筒結構;埋頭孔是四十五度結構,比沉頭孔較為平順。 螺栓孔上部擴孔能容納螺栓頭部,使螺頭部不高于周圍表面。埋頭空和沉頭孔只是兩種不同的叫法。 沉頭孔是 PCB 上的圓柱形凹槽…

RK3568 支持4x4矩陣鍵盤

在對應的設備樹添加: keypad {compatible = "gpio-matrix-keypad";pinctrl-names = "default";pinctrl-0 = <&GPIO3_A1_pin&GPIO1_D3_pin&GPIO1_D4_pin&GPIO1_C7_pin&GPIO1_D2_pin&GPIO1_D1_pin&GPIO1_D0_pin&GPIO3_A…

將form表單中的省市區的3個el-select下拉框的樣式調成統一的間隔距離和長度,vue3項目iot->供應商管理

省市區是用3個el-select組成的 在表單中用el-col&#xff0c;會導致3個下拉的距離不統一&#xff0c;市和區的前面也是不需要文字label的 如何解決:用vue3的:deep()進行樣式穿透&#xff0c;由于el-form-item標簽都是一樣的&#xff0c;為了能準確的找到市的el-form-item&…

解決:前端js下載文件流出現“未知文件格式”錯誤

第一中情況&#xff1a; 出現的問題&#xff0c;前端已經設置了responseType: blob,下載下來還是格式不對。 最后經過排查&#xff0c;后端缺少charsetutf-8&#xff0c;所以前端可以設置編碼&#xff1a; 第二中情況&#xff1a; 后端已經設置了charsetutf-8&#xff0c;前…

機器學習/sklearn 筆記:K-means,kmeans++,MiniBatchKMeans,二分Kmeans

1 K-means介紹 1.0 方法介紹 KMeans算法通過嘗試將樣本分成n個方差相等的組來聚類&#xff0c;該算法要求指定群集的數量。它適用于大量樣本&#xff0c;并已在許多不同領域的廣泛應用領域中使用。KMeans算法將一組樣本分成不相交的簇&#xff0c;每個簇由簇中樣本的平均值描…

JS實現數組去重

數組去重&#xff0c;一般都是在面試的時候才會碰到&#xff0c;一般是要求手寫數組去重方法的代碼。如果是被提問到&#xff0c;數組去重的方法有哪些&#xff1f;你能答出其中的 10 種&#xff0c;面試官很有可能對你刮目相看。 在真實的項目中碰到的數組去重&#xff0c;一般…

數據結構-樹

參考&#xff1a;https://www.hello-algo.com/chapter_tree/binary_tree/#711 1. 介紹 樹存儲不同于數組和鏈表的地方在于既可以保證數據檢索的速度&#xff0c;又可以保證數據插入刪除修改的速度&#xff0c;二者兼顧。 二叉樹是一種很重要的數據結構&#xff0c;是非線性的…

【學習篇】Linux中grep、sed、awk

Linux 文本處理三劍客 – awk, sed, grep grep過濾文本 https://zhuanlan.zhihu.com/p/561445240 grep 是 Linux/Unix 系統中的一個命令行工具&#xff0c;用于從文件中搜索文本或字符串。grep 代表全局正則表達式打印。當我們使用指定字符串運行 grep 命令時&#xff0c;如…

Mysql并發時常見的死鎖及解決方法

使用數據庫時&#xff0c;有時會出現死鎖。對于實際應用來說&#xff0c;就是出現系統卡頓。 死鎖是指兩個或兩個以上的事務在執行過程中&#xff0c;因爭奪資源而造成的一種互相等待的現象。就是所謂的鎖資源請求產生了回路現象&#xff0c;即死循環&#xff0c;此時稱系統處于…

星河創新,開拓新紀!2023“星河產業應用創新獎”報名全面開啟!

科技的浪潮洶涌而至&#xff0c;人工智能正悄無聲息地滲透進我們生活的每一個角落&#xff0c;成為推動社會奔騰向前的強大引擎。 隨著大模型時代到來&#xff0c;更多的創新者涌現出來&#xff0c;他們正積極探索AI與實體的深度融合&#xff0c;解決行業難題&#xff0c;開拓…

算法的奧秘:種類、特性及應用詳解(算法導論筆記1)

算法&#xff0c;是計算機科學領域的靈魂&#xff0c;是解決問題的重要工具。在算法的世界里&#xff0c;有著各種各樣的種類和特性。今天&#xff0c;我將帶各位踏上一段探索算法種類的旅程&#xff0c;分享一些常見的算法種類&#xff0c;并給出相應的實踐和案例分析。希望通…

c# 微信小程序支付,訂單錄入發貨

微信改動&#xff0c;大家一起改&#xff0c;來吧 private string GetAccessToken(string openid){string AppID "";string AppSecret "";string url "https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid"AppI…

華納云:Linux每天自動備份mysql數據庫怎么實現

在 Linux 系統中&#xff0c;你可以使用 cron 任務來定期執行 MySQL 數據庫備份。以下是一個簡單的步驟&#xff0c;演示如何設置每天自動備份 MySQL 數據庫&#xff1a; 創建備份腳本&#xff1a; 創建一個 Shell 腳本&#xff0c;其中包含備份 MySQL 數據庫的命令。假設腳本名…

【目標檢測】保姆級別教程從零開始實現基于Yolov8的一次性筷子計數

前言 一&#xff0c;環境配置 一&#xff0c;虛擬環境創建 二&#xff0c;安裝資源包 前言 最近事情比較少&#xff0c;無意間刷到群聊里分享的基于百度飛漿平臺的一次性筷子檢測&#xff0c;感覺很有意思&#xff0c;恰巧自己最近在學習Yolov8&#xff0c;于是看看能不能復…