FPGA之tcp/udp

在調試以太網的過程中,考慮了vivado IP配置(管腳、reset等),SDK中PHY芯片的配置(芯片地址、自適應速率配置等),但是,唯獨忽略了tcp/udp協議,所以在ping通之后仍無法連接。

所以現在來學習一下tcp與udp的區別 ---- 為什么要用tcp而不是udp協議。

百度安全驗證icon-default.png?t=N7T8https://baijiahao.baidu.com/s?id=1748334531859727810&wfr=spider&for=pc

TCP與UDP(非常詳細)_tcp和udp-CSDN博客?

詳細介紹了tcp的數據格式、流量控制等:

計算機網絡-TCP/UDP詳解(最全)_tcp udp-CSDN博客?

tcp與udp的概念

tcp:

是一種面向有連接的傳輸層協議。適用于要求可靠傳輸的應用。

udp:

是一種面向無連接的傳輸層協議。適用于實時應用(速度快,但可能產生丟包)。

tcp

tcp通信

三次握手、傳輸確認、四次揮手。

三次握手

客戶端 --> 服務端:客戶端想服務端發起連接,會先發一包連接請求數據(SYN包),詢問能否建立連接

服務端 --> 客戶端:服務端收到后,同意連接,就會回復一包SYN+ACK包

客戶端 --> 服務端:客戶端收到后,發送一包ACK包,連接建立

目的:為了防止已失效的請求報文? 突然傳到服務器,引起錯誤(服務端會認為客戶端再次請求連接,但是客戶端并沒有 -- 因為是之前發送的請求)

數據傳輸

一包數據可能會被拆成多包發送。可能會發生:丟包、數據包到達的先后順序不同。

tcp協議為每一個連接建立了發送緩沖區。從建立連接后的第一個字節序列號為0,后面的字節的序列號依次加1。發送數據時,從數據緩沖區取一部分數據組成發送報文,在tcp協議頭中會附帶序列號和長度,接收端在收到數據后需要回復確認報文,確認報文中的ACK等于接收序列號加長度,即下包數據發送的起始序列號。

四次揮手

客戶端/服務端發起關閉連接請求。

客戶端 --> 服務端:客戶端給服務端發起一包FIN包,表示要關閉連接,并且進入終止等待1狀態

服務端 --> 客戶端:服務端收到FIN包,發送一次ACK包,表示自己進入關閉等待狀態,此時客戶端進入終止等待2狀態

此時服務端還可以發送數據,客戶端還可以接收數據

服務端 --> 客戶端:待服務端發送完數據后,發送一包FIN包,進入確認狀態

客戶端 --> 服務端:客戶端收到FIN包后,回復ACK包,進入超時等待狀態,經過超時時間后關閉連接;服務端收到ACK包后,立即關閉連接

客戶端超時等待狀態的目的:確保發送的ACK包被服務端接收(如果服務端沒有收到,就會一直等待確認,然后會重新發送FIN包,客戶端收到FIN包后會重發ACK包,并刷新超時時間)

Socket

tcp把連接作為最基本的對象,每一條tcp連接都有兩個端點 -- 即套接字(socket),端口號拼接到IP地址即構成了套接字。

udp

udp是非連接的。

發送數據:把數據包封裝一下,從網卡發出。

數據包之間并沒有狀態上的聯系。

優點:速度快,性能損耗少,cpu內存資源占用小于tcp

缺點:可能產生丟包,傳輸穩定性不如tcp

區別

tcp面向連接,udp面向無連接;

tcp是可靠的,udp是不可靠的;

tcp只能一對一,udp支持一對一,也支持一對多,多對多多對一的方式(單播、多播、廣播);

tcp面向字節流,udp面向報文

tcp會產生粘包問題,udp會產生丟包問題;

...

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

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

相關文章

經典面試題:進程、線程、協程開銷問題,為什么進程切換的開銷比線程的大?

上下文切換的過程? 上下文切換是操作系統在將CPU從一個進程切換到另一個進程時所執行的過程。它涉及保存當前執行進程的狀態并加載下一個將要執行的進程的狀態。下面是上下文切換的詳細過程: 保存當前進程的上下文: 當操作系統決定切換到另…

浪潮信息IPF24:AI+時代,創新驅動未來,攜手共創智慧新紀元

如今,數字化時代的浪潮席卷全球,人工智能已經成為推動社會進步的重要引擎。浪潮信息IPF24作為行業領先的AI技術盛會,不僅為業界提供了交流合作的平臺,更在激發創新活力、拓展發展路徑、加速AI技術落地等方面發揮了重要作用。 升級…

OS復習筆記ch6-2

死鎖的解決 死鎖的預防(打疫苗)死鎖的避免(戴口罩)死鎖的檢測(做核酸) 死鎖的預防 前面我們提到了死鎖的四個必要條件 防止前三個必要條件,就是間接預防防止最后一個必要條件–循環等待&…

軟測刷題-錯題1

提高測試效率的方法: 1、不要做無效的測試 2.不要做重復的測試 3.不同測試版本的測試側重點 4.優化測試順序 LoadRunner是對服務器進行施壓。 在數據庫中存在的用戶數是指注冊用戶數。 input標簽可以直接使用send_keys實現上傳,而非input標簽是無法直…

Rust后臺管理系統Salvo-admin源碼編譯

1.克隆salvo-admin后臺管理系統源碼: https://github.com/lyqgit/salvo-admin.git 2.編譯 編譯成功 3.創建mysql數據庫與執行sql腳本 輸入名稱ry-vue 執行sql腳本 全部執行上面3個sql 修改數據庫用戶名與密碼: 清理及重新編譯 cargo clean cargo build 4.運行并測試 cargo…

Android內存碎片化調優

概念 內存碎片分為兩種,一種是內存頁中的碎片,被稱為內部碎片;另一種是空閑分散的內存頁,湊不齊一個組物理地址連續的空閑內存頁,就沒辦法分配了,這些散落的內存頁被稱為外部碎片。 在Android系統中,內存碎片化是指內存中存在很多小塊的空閑內存,這些內存塊之間不連續…

使用vue,mybatis,mysql,tomcat,axios實現簡單的登錄注冊功能

目錄 第一步環境搭建 后端: 前端: 第二步畫流程圖 web: service: dao層: 第三步前端代碼的實現 這是開始的頁面,接下來我們要到router路由下書寫#login的路徑 路由中的component在我們自己創建的views書寫vue文件…

單日收益1000+看了就會的項目,最新靈異短視頻項目,簡單好上手可放大操作

各位好友,佳哥在此與大伙兒聊聊一項神秘莫測的短視頻項目。你或許會想,“又是一個視頻創作項目?” 但別急,這個項目與眾不同,日入千元不再是夢,而且它的易用性讓人驚喜,無論你是初學者還是資深玩…

春秋云境CVE-2018-7422

簡介 WordPress Plugin Site Editor LFI 正文 1.進入靶場 2.漏洞利用 /wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path/../../../../../../flag看別人wp做的。不懂怎么弄的,有沒有大佬講一下的

沒有電商經驗的人去操作抖音小店,難度大不大?好操作嗎?

大家好,我是電商小V 很多新手小伙伴想去操作抖音小店項目,咨詢的最多的問題就是我沒有電商運營的經驗可以去操作嗎? 當然是可以操作的,抖音小店項目對于新手來說是一個非常友好的項目,很多小伙伴都是感覺沒有電商經驗去…

數據庫攻防之MySQL

MySQL 是最流行的關系型數據庫,與此同時也是 web 應用中最好的關系型數據庫管理應用軟件。我們在滲透過程中碰到的 PHP 站點大部分都會搭配 MySQL 數據庫,因此它是紅隊攻防中最常遇到的數據庫。 0x01 MySQL簡介 MySQL 是典型的關系型數據庫,…

YOLOv10 | 無NMS的YOLO | 實時端到端目標檢測的新突破

過去幾年里,YOLOs因在計算成本和檢測性能之間實現有效平衡而成為實時目標檢測領域的主流范式。研究人員針對YOLOs的結構設計、優化目標、數據增強策略等進行了深入探索,并取得了顯著進展。然而,對非極大值抑制(NMS)的后…

redis--消息隊列

分類 生產者消費模式 發布者訂閱模式 生產者消費模式 在生產者消費者(Producer/Consumer)模式下,上層應用接收到的外部請求后開始處理其當前步驟的操作,在執行完成后將已經完成的操作發送至指定的頻道(channel)當中,并由其下層的應用監聽…

【Chrono Engine學習總結】6-創建自定義場景-6.2-chrono中的光線設置

由于Chrono的官方教程在一些細節方面解釋的并不清楚,自己做了一些嘗試,做學習總結。 上一篇文章中,自己【用sketchup重建了三維場景】,但導入chrono中顏色很不正確,幾乎都是白色的,但也不是完全白色。經過…

IDE上傳本地倉庫到GitHub

IDE上傳本地倉庫到GitHub 1、選擇遠程倉庫平臺2、下載安裝Git3、IDE集成Git4、本地項目上傳GitHub 1、選擇遠程倉庫平臺 1.1、注冊遠程倉庫平臺 常見的遠程倉庫托管平臺有: 1)GitHub 域名:https://github.com 介紹:GitHub是全球最…

Java訂餐系統源碼 springboot點菜系統源碼

Java訂餐系統源碼 springboot點菜系統源碼 源碼下載地址:https://download.csdn.net/download/xiaohua1992/89341358 功能介紹: 前臺登錄:前臺登錄: ①首頁:菜品信息推薦、菜品信息展示、查看更多 ②菜品信息&…

Stanford斯坦福 CS 224R: 深度強化學習 (3)

基于模型的強化學習 強化學習(RL)旨在讓智能體通過與環境互動來學習最優策略,從而最大化累積獎勵。傳統的強化學習方法如Q-learning、策略梯度等,通過大量的試錯來學習值函數或策略,樣本效率較低。而基于模型的強化學習(MBRL)則利用對環境的預測模型來加速學習過程,大大提高了…

參數的本質:詳解 JavaScript 函數的參數

文章導讀:AI 輔助學習前端,包含入門、進階、高級部分前端系列內容,當前是 JavaScript 的部分,瑤琴會持續更新,適合零基礎的朋友,已有前端工作經驗的可以不看,也可以當作基礎知識回顧。 上篇文章…

地理信息系統(GIS)軟件開發

地理信息系統(GIS)軟件開發是一項復雜且系統性很強的工程,涉及空間數據的采集、管理、分析和展示。以下是一個典型的GIS軟件開發流程,包括各個步驟的詳細說明。北京木奇移動技術有限公司,專業的軟件外包開發公司&#…

面向對象------多態

1.多態的定義 通俗來說,當同一種行為或者事情發生在不同的對象上,這些行為或者事情最終得到的結果不同。 注意:多態要發生在繼承的基礎上。 例如:彩色打印機和黑白打印機。 彩色打印機和黑白打印機是不同的對象,但…