tcp/udp的socket特點

tcp :
綁定一個 socket 只是用來監聽,accept 對每個客戶端生成一個 socket 用來維護滑動窗口等。每個客戶端用一個 socket 用來維護滑動窗口等。
4 次揮手對應兩次 close 的 fin 和返回的 ack。
而三次揮手在 connect 里阻塞完成。

?udp :
雙方各建一個 socket,收到對方信息時,也收到對方 ip,后面用自己的 socket 往 ip 發送就行。

通用:read write 系統io讀寫,可以讀寫任何文件fd #include<unistd.h>
tcp:recv send #include<sys/socket.h>
udp:recvfrom sendto #include<sys/socket.h>

udp的recvfrom接收到數據后要即使從緩沖區拿出數據,不然緩沖區滿了,會覆蓋之前的數據。
sendto發送時不存在發送部分字節,因為它時數據報形式,會把用戶的數據全部裝入一個udp數據報一起發送,要么成功要么失敗。無論每次發送多少,每個 sendto 調用會嘗試將整個數據報作為一個不可分割的單元發送,具有原子性,所以只有成功和失敗。若無法發送(如緩沖區不足、報文過大,沒有網絡等),sendto 返回 -1。因此加上包頭盡量不超過1個MTU大小,大部分以太網MTU為1500字節。
tcp的發送是流式的它有滑動窗口,它的send每次調用只負責將數據拷貝到內核。它的返回是拷貝到內核的字節大小。因此如果一次沒有發送完成,需要用戶手動調整待發送緩沖區的指針位置,直到發送完畢。(多次send拷貝到內核后,可能只對應著一次網絡發送,因此控制發送大小的是滑動窗口。)
tcp的接收,因為tcp是流式的,它有滑動窗口限制,當緩沖區快滿時,會通知阻止發送方的發送行為,因此不會出現覆蓋數據,介個就叫可靠傳輸阿。

無論時udp還是tcp,他們的接收默認都是阻塞的,但可設置非阻塞。
?

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

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

相關文章

Linux命令top

top一、 命令二、 如何查看top輸出的結果一、 命令 top命令是Linux中的一個實時進程監控工具&#xff0c;類似于windows中的任務管理器。 基本命令 top二、 如何查看top輸出的結果 我們需要分析top輸出的結果 top輸出的結果分為上下兩部分&#xff0c;先看上半部分 第一行是…

Perl 數據庫連接

Perl 數據庫連接 概述 Perl是一種強大的編程語言&#xff0c;廣泛應用于文本處理、系統管理、網絡編程等領域。隨著數據庫技術的快速發展&#xff0c;Perl與數據庫的結合也日益緊密。本文將詳細介紹Perl數據庫連接的相關知識&#xff0c;包括常用的數據庫類型、連接方法以及一些…

jenkins從入門到精通-P1—九五小龐

1. jenkins的兩個核心為CI持續集成 CD持續部署2.jenkins在企業工作中的流程3. 學習的內容包括

第九節 Redis 事務、Redis 腳本

Redis 事務可以一次執行多個命令&#xff0c; 并且帶有以下兩個重要的保證&#xff1a; 事務是一個單獨的隔離操作&#xff1a;事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中&#xff0c;不會被其他客戶端發送來的命令請求所打斷。事務是一個原子操作&#x…

托福閱讀37-2

托福閱讀37-2 1.reinforcement from reintroduction定位到倒數第二句&#xff0c;這里我沒看懂former和term&#xff0c;直接懵掉了&#xff0c;然后往后看。這句話其實省略了&#xff0c;補充完應該是The former is termed reintroduction and the latter is termed reinforce…

docker-compose一鍵部署Springboot+Vue前后端分離項目

1. 背景說明 后端使用JDK8&#xff0c;前端為普通Vue項目前端訪問后端接口&#xff0c;統一帶了前綴/api 2. 項目配置 2.1 后端 yml文件里配置統一訪問前綴/api2.2 前端 API路徑配置為相對路徑&#xff1a;說明&#xff1a;我這邊前后端應用都是部署在同一臺服務器上&#xff0…

Unity_數據持久化_XML基礎

Unity數據持久化 三、XML數據持久化 3.1 XML基礎概念 3.1.1 什么是XML XML&#xff08;eXtensible Markup Language&#xff09;**是一種可擴展的標記語言&#xff0c;用于存儲和傳輸數據。它具有以下特點&#xff1a; 結構化&#xff1a;數據以層次結構組織可讀性&#xff1a;…

大語言模型的解碼策略:貪婪解碼與波束搜索

在自然語言生成任務&#xff08;如機器翻譯、文本摘要、圖像描述等&#xff09;中&#xff0c;語言模型通常會輸出一個詞的概率分布&#xff0c;但模型本身并不會自動告訴你應該選哪些詞作為最終的輸出句子。因此&#xff0c;我們需要設計一個“解碼策略”來從這些概率中生成可…

智慧園區:中小企業的 “減壓閥” 與數字化招商革命

在當前的經濟環境下&#xff0c;中小企業的生存發展面臨著諸多挑戰&#xff0c;其中選址成本儼然成為了創業路上的 “第一道坎”。傳統招商模式中&#xff0c;信息不對稱的問題尤為突出&#xff0c;初創企業常常因此陷入選址失誤的困境。有的企業選在交通不便的地方&#xff0c…

從零開始配置pytorch環境

總結了一下幾篇熱門文章和自己的經驗&#xff0c;方便以后換設備配置環境 一、安裝Anaconda 這一步是為了不污染全局環境&#xff0c;很有必要。 直接清華源鏡像下載&#xff1a;Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 根據自…

離線錄像文件視頻AI分析解決方案

前言 在安防領域&#xff0c;視頻的價值不言而喻&#xff0c;尤其是錄像文件的價值顯得更是尤為重要。在一個安防項目上視頻錄像一般存儲1個月、3個月甚至更長時間&#xff0c;這就形成了海量的離線錄像文件數據。傳統安防項目對錄像文件的處理還有一定的局限性&#xff1a; 事…

人工智能與金融:金融服務的重塑

1. AI 驅動金融變革&#xff1a;從 “標準化” 到 “智能化”1.1 傳統金融的痛點與 AI 的破局傳統金融行業長期面臨三大瓶頸&#xff1a;服務效率低下&#xff1a;銀行柜臺辦理一筆貸款需 3-5 個工作日&#xff0c;人工審核流程繁瑣&#xff0c;客戶等待時間長&#xff1b;風險…

Qwen大模型關鍵參數解析:緩存與滑動窗口

QwenLLM "use_cache": true Qwen "use_sliding_window": false 在大語言模型(如Qwen系列)的生成配置中,"use_cache": true 和 "use_sliding_window": false 是兩個與模型推理效率和長文本處理相關的重要參數,具體含義如下: 1. …

Flask 框架全面詳解

Flask 是一個輕量級的 Python Web 框架&#xff0c;以其簡潔、靈活和易擴展的特性廣受歡迎。接下來我將從多個維度詳細介紹 Flask 框架。 1. Flask 核心特性 微框架設計 輕量級&#xff1a;核心功能精簡&#xff0c;只包含基本組件可擴展&#xff1a;通過擴展添加所需功能無…

概率 多維隨機變量與分布

一、二維1、二維隨機變量及其分布假設E是隨機試驗&#xff0c;Ω是樣本空間&#xff0c;X、Y是Ω的兩個變量&#xff1b;(X,Y)就叫做二維隨機變量或二維隨機向量。X、Y來自同一個樣本空間。聯合分布函數 F(x,y)P(X≤x,Y≤y)&#xff0c;即F(x,y)表示求(x,y)左下方的面積。 F(x,…

Spring AI MCP:解鎖大模型應用開發新姿勢

一、AI 浪潮下的新利器 ——Spring AI MCP 登場在當今數字化時代&#xff0c;人工智能&#xff08;AI&#xff09;無疑是最耀眼的技術明星&#xff0c;正以前所未有的速度滲透到各個領域&#xff0c;深刻改變著我們的生活和工作方式。從智能語音助手到圖像識別技術&#xff0c;…

ThinkPHP5x,struts2等框架靶場復現

ThinkphpThinkphp5x遠程命令執行及getshell首先我們先找一個環境&#xff0c;或者自己搭建一個環境fofa&#xff1a;body"ThinkPHP V5"搭建&#xff1a;vulhub/thinkphp/5-rcedocker-compose up -d然后去訪問我們的環境遠程命令執行/?sindex/think\app/invokefuncti…

Hyperliquid:揭秘高性能區塊鏈共識引擎HyperBFT

大家好&#xff0c;今天我們一起探討Hyperliquid這個高性能區塊鏈項目以及它背后的共識引擎。Hyperliquid能在擁擠的去中心化交易賽道&#xff08;DEX&#xff09;中脫穎而出&#xff0c;很大程度上要歸功于其高效的共識機制——HyperBFT。 為了徹底搞懂HyperBFT&#xff0c;我…

大模型開發框架LangChain之構建知識庫

1.前言 為了避免 llm正確的廢話和幻覺&#xff0c;知識庫可以說是現在開發 agent的必備了。同時&#xff0c;作為 rag中的 r&#xff0c;知識庫召回的成功率會極大的影響 llm的最終回復效果。一般&#xff0c;會把知識庫召回的內容作為背景知識給到 llm&#xff0c;并在 prompt…

NPM打包時,報reason: getaddrinfo ENOTFOUND registry.nlark.com

先說解決方法&#xff1a;將 package-lock.json 文件中的 registry.nlark.com 改為 registry.npmmirror.com現象&#xff1a;npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.nlark.com/url-too…