網絡原理04

可靠傳輸,是TCP最核心的特性

可靠傳輸不是說數據100%傳輸給接收方了

1)發送方發出數據后,能過知道接收方是否收到數據

2)一旦發現對方沒收到,可以通過一定的方法”補救”

1. 確認應答

發送方,把數據已發給接收方后,接收方收到數據就會給發送方返回一個 應答報文(acknowlrdge,ack)

發送方,如果接收到這個應答報文,就知道自己的數據是否發送成功了

發送數據的時候可能會出現“后發先至”的情況——>

一個數據包在進行傳輸的過程中,走的路徑非常復雜,不同的數據包,可能走不通的路線

TCP 此事要完成兩個工作:

1. 確保應答報文和發出去的數據,不要出現歧義?

2. 確保在出現先發后至的情況下,能夠讓應用程序這邊仍然按照正確的順序來理解數據

序號就是一個整數,大小關系描述了數據的先后順序

序號是按照字節編號的——>TCP是面向字節流的

TCP報頭記錄的序號,是這一次傳輸的載荷數據中第一個字節的序號,剩下的序號,都需要一次推出

如圖可知,第一次序號為1,第二次為1001,

相當于是1001之前的數據都被接收到了,接下來對端開始索要1001開始的數據

此處通過特殊的ack數據包,里面攜帶的“確認序號”告訴對方,那些數據已經被確認了

此時發送方,就知道了自己發送的數據到沒到

可靠傳輸——>達成的最核心機制是? 確認應答

區分一個數據包是普通的數據,還是ack應答數據報

? 第二位? ACK

為1,當前數據包是一個應答報文,里面的“確認序號字段”生效

為0,當前數據寶是一個普通報文,里面的“確認序號字段”不生效

2. 超時重傳

如果數據包太多了,就會阻塞在一些交換機/路由器上,其中大部分的數據包就被直接丟棄了

確認應答是一個理想的情況,如果網絡傳輸過程中,出現丟包,發送方就無法收到ack

——>使用超時重傳,針對確認應答,進行補充

由于丟包是一個隨機事件,于是就有兩種情況:

? ? ? ? ? ? 1. 傳輸的數據丟了? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2. 返回的ack丟了

站在傳輸方的角度,無法區分這兩種情況

無論出現上述那種情況,發送方都會進行“重新傳輸”

此時,發送方何時重傳——>

發送方,在發出數據之后,會先等一段時間,如果這個時間之內,ack來了,就是為數據到達,反之,就會觸發重傳

1. 初始的等待時間,是可配置的,不同系統上的不一定一樣,可以通過修改內核參數來改變

2. 等待是時間,也會動態變化,每多經歷一次超時,等待時間就會變長

等待也不是無限拉長的,重傳若干次,就會放棄TCP連接(觸發TCP重置連接)

等待時間變長,意味著對能正確傳輸數據是悲觀的

如果數據丟了,不會觸發ack;如果ack丟了,返回的是ack發送數據的第一個字節(滑動窗口)

? ? ?

返回的ack丟失時,B會收到兩條一樣的數據——>

TCP會有一個“接收緩沖區”(內存空間),保存當前已經接收到的數據,以及數據的序號

如果接收方發現,當前發送方發來的數據,已經在接收緩沖區中存在(收到重復的數據),接收方就會直接把這個后來的數據丟棄掉,確保應用程序進行read的時候,讀到的是只有一條數據

3. 連接管理

建立連接(三次握手)+斷開連接(四次揮手)? ? ? ? handshake

handshake相當于是打個招呼,沒有實際意義,比較簡短,是為了引起對方注意

TCP的“握手”,也就是給對方傳輸一個簡短的,沒有業務數據的數據包

通過這個數據包,喚起對方注意,從而觸發后續的操作

同步報文段——特殊的TCP數據包,沒有載荷(不攜帶業務數據)——>應用層數據包

? ? ? ? 第五位

為1,表示這個報文是一個同步報文段

為0,則不是

TCP 的三次握手

TCP 在建立連接的過程,需要通信雙方一共“打三次招呼”才能建立連接

? ? ? ? ? syn? 同步報文段? ? ? ack? 應答數據報

此時,A和B記錄了對方的信息(構成“邏輯”上的連接)

通信過程中,通信雙方都要給對方發起syn,也要反饋ack

一共進行四次握手,中間兩次可以合并成一次

TCP是為了實現可靠傳輸

進行確認應答和超時重傳有個前提,當前網絡環境時基本可用的,通暢的

三次握手的作用:

1)確認當前網絡是否暢通

2)要讓發送方和接收方都能確認自己的發送能力和接受能力均正常

3)讓通信雙方在握手過程中,針對一些重要參數進行協商

TCP通信過程中的序號從幾開始,就是雙方協商出來的(一般不是從1開始)

每次建立連接的時候,都會協商出一個比較大的,和上次不一樣得值

有時候網絡不太好,客戶端和服務器可能

在新的連接建立好后,舊的數據又傳輸過來斷開重連,此時應該直接丟棄——>

如果發現收到的數據序號和當前數據序號差異較大,就可以直接丟棄

此處僅對連接管理機制進行初步介紹,下節將詳細介紹連接管理和其他機制?

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

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

相關文章

微信小程序5-圖片實現點擊動作和動態加載同類數據

搜索 微信小程序 “動物覓蹤” 觀看效果 感謝閱讀,初學小白,有錯指正。 一、功能描述 a. 原本想通過按鈕加載背景圖片,來實現一個可以點擊的搜索button,但是遇到兩個難點,一是按鈕大小調整不方便(網上搜索…

Java里局部變量和成員變量的隱式初始化

注:本文是對另一篇文檔( https://blog.csdn.net/duke_ding2/article/details/142365872 )的補充。 文章目錄 環境初始化局部變量(棧)成員變量(堆)其它數組 分析安全性性能成員變量 VS. 局部變量…

孚盟云 MailAjax.ashx SQL注入漏洞復現

0x01 產品簡介 上海孚盟軟件有限公司是一家外貿SaaS服務提供商,也是專業的外貿行業解決方案專業提供商。 全新的孚盟云產品,讓用戶可以用云模式實現信息化管理,讓用戶的異地辦公更加流暢,大大降低中小企業在信息化上成本,用最小的投入享受大型企業級別的信息化服務,主要…

“切片賦值”創建列表批量操作“新”方法(Python)

[start:end]切片賦值,擴展了list批量增減元素的操作能力。 (筆記模板由python腳本于2024年12月06日 15:07:56創建,本篇筆記適合研python基礎的coder翻閱) 【學習的細節是歡悅的歷程】 Python 官網:https://www.python.org/ Free:…

LabVIEW實現GPS通信

目錄 1、GPS通信原理 2、硬件環境部署 3、程序架構 4、前面板設計 5、程序框圖設計 6、測試驗證 本專欄以LabVIEW為開發平臺,講解物聯網通信組網原理與開發方法,覆蓋RS232、TCP、MQTT、藍牙、Wi-Fi、NB-IoT等協議。 結合實際案例,展示如何利用LabVIEW和常用模塊實現物聯網系…

Java簡介:打開通往變成世界的大門

Java是什么?為什么它是全球開發者廣泛使用的語言?本篇文章介紹Java的特點、應用場景以及“寫一次,隨處運行”的核心特性,讓零基礎的你建立對Java語言的初步認知。 注:此文章可以僅作了解,不影響之后的學習。…

Unraid實現相冊同步與展示的方案探討

背景:Unraid作為一個NAS系統,能夠實現基本的NAS文件管理功能,但是不提供額外的功能如影音、同步、辦公、和內網穿透等,這些在其他的NAS產品如群暉、綠聯、威聯通等都是提供支持的。然而unraid也有其他方案,即通過特別方…

常見的網絡攻擊手段

IP 欺騙 IP 是什么? 在網絡中,所有的設備都會分配一個地址。這個地址就仿佛小藍的家地址「多少號多少室」,這個號就是分配給整個子網的,「室」對應的號碼即分配給子網中計算機的,這就是網絡中的地址。「號」對應的號碼為網絡號…

積分形式的輻射傳輸方程

The Equation of Transfer in Integral Form Let L L L be the streaming-collision operator, and S S S is scattering operator, we have L I Ω ? ? I ( r , Ω ) σ ( r , Ω ) I ( r , Ω ) LI\Omega\cdot\nabla I(r,\Omega)\sigma(r,\Omega)I(r,\Omega) LIΩ??…

JS中reduce方法

JavaScript 中的 reduce 方法是一個非常強大的數組方法,它允許你對數組中的所有元素執行一個“reducer”函數,從而將數組“減少”到一個單一的值。以下是 reduce 方法的詳細介紹: 語法 array.reduce(function(accumulator, currentValue, c…

印閃網絡:阿里云數據庫MongoDB版助力金融科技出海企業降本增效

客戶背景 上海印閃網絡科技有限公司,于2017年1月成立,投資方包括紅杉資本等多家國際知名風投公司。公司業務聚焦東南亞普惠金融,常年穩居行業頭部。創始團隊來自騰訊,中國團隊主要由運營、風控及產研人員組成,核心成員…

【后端面試總結】HTTPS工作原理詳解

引言 在現代網絡通信中,數據的安全性至關重要。HTTP(Hypertext Transfer Protocol)作為互聯網上傳輸數據的協議,雖然應用廣泛,但其數據以明文形式傳輸,存在被竊取和篡改的風險。為此,HTTPS&…

51c嵌入式~單片機~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的電平信號的MCU怎么通信? 下面這個“電平轉換”電路,理解后令人心情愉快。電路設計其實也可以很有趣。 先說一說這個電路的用途:當兩個MCU在不同的工作電壓下工作&a…

Java 基礎知識——part 1

1.目前Java平臺有三種版本: Java SE:用于開發桌面應用程序 Java EE:用于編寫企業級應用程序 Java ME:用于開發設備應用程序 2.Applet可嵌入Web文檔的一種小型程序,因網絡傳輸速度關系都很短小 3.Appilication&…

【云計算】虛擬化技術

目錄 1. 虛擬化技術在云計算中的那些地方發揮了關鍵作用? 2. 比較VMare,Xen等虛擬化產品的關鍵技術,以及對云計算技術提供的支持? 3. 服務器虛擬化,存儲虛擬化和網絡虛擬化都有哪些實現方式? 4. 討論桌面…

力扣題目 - 2931.購買物品的最大開銷

題目 還需要你前往力扣官網查看詳細的題目要求 地址 思路 這邊需要你去力扣官網詳細查看題目看了題目提供的示例 已經有了解法, 先把values轉成1維數組,排序之后進行累加即可 代碼 var maxSpending function (values) {let list values.flat();list.sort((a, b) > a - …

嵌入式驅動開發詳解6(RTC)

文章目錄 前言RTC簡介RTC驅動分析RTC驅動框架RTC驅動實現 RTC應用后續 前言 實時時鐘是很常用的一個外設,通過實時時鐘我們就可以知道年、月、日和時間等信息。 因此在需要記錄時間的場合就需要實時時鐘,可以使用專用的實時時鐘芯片來完成此功能&#x…

單片機:實現跑馬燈(附帶源碼)

單片機實現跑馬燈 跑馬燈(也稱作流水燈)是一種常見的電子效果,通過依次點亮和熄滅多個LED燈,模擬出一個燈光流動的效果。跑馬燈常見于裝飾性電子產品中,也是一種展示單片機控制多路輸出的基礎應用。 在本項目中&…

力扣題目 - 935. 騎士撥號器

題目 還需要你前往力扣官網查看詳細的題目要求 地址 1.象棋騎士有一個獨特的移動方式,它可以垂直移動兩個方格,水平移動一個方格,或者水平移動兩個方格,垂直移動一個方格(兩者都形成一個 L 的形狀)。2.象棋騎士可能的移動方式如下…

傳輸層7——TCP擁塞控制(重點!!!)

目錄 一、認識擁塞控制 1、什么叫做擁塞? 2、擁塞的特點 3、流量控制 VS 擁塞控制 二、TCP如何防止擁塞? 1、慢開始 2、擁塞避免 3、3重復確認 和 快重傳算法 4、快恢復算法 5、總結 三、主動隊列管理AQM 1、技術背景 2、AQM思 想和實現策略…