日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

五分鐘幫您理解Linux網絡核心知識點——Socket和Epoll

來源: 責編: 時間:2023-08-09 23:03:23 345觀看
導讀關于linux網絡相關的基礎知識點,最熱的兩個就是socket和epoll,接下來我就用最簡單的方式把他倆說清楚便于大家理解!SocketSocket 是一種進程間通信的方法,它允許位于同一主機(計算機)或使用網絡連接起來的不同主機上的應用

關于linux網絡相關的基礎知識點,最熱的兩個就是socket和epoll,接下來我就用最簡單的方式把他倆說清楚便于大家理解!MOP28資訊網——每日最新資訊28at.com

Socket

Socket 是一種進程間通信的方法,它允許位于同一主機(計算機)或使用網絡連接起來的不同主機上的應用程序之間交換數據。MOP28資訊網——每日最新資訊28at.com

Socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆文件”,都可以用“打開open> 讀寫write/read > 關閉close”模式來操作。Socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)MOP28資訊網——每日最新資訊28at.com

Socket實現細節

當有客戶端連接服務端時,服務端 Socket 文件中會寫入這個客戶端 Socket 的文件描述符。進程可以通過 accept() 方法,從服務端 Socket 文件中讀出客戶端的 Socket 文件描述符,從而拿到客戶端的 Socket 文件。MOP28資訊網——每日最新資訊28at.com

程序猿實現一個網絡服務器的時候,會先手動去創建一個服務端 Socket 文件。服務端的 Socket 文件依然會存在操作系統內核之中,并且會綁定到某個 IP 地址和端口上。以后凡是發送到這臺機器、目標 IP 地址和端口號的連接請求,在形成了客戶端 Socket 文件之后,文件的文件描述符都會被寫入到服務端的 Socket 文件中。MOP28資訊網——每日最新資訊28at.com

應用只要調用 accept 方法,就可以拿到這些客戶端的 Socket 文件描述符,這樣服務端的應用就可以方便地知道有哪些客戶端連接了進來。而每個客戶端對這個應用而言,都是一個文件描述符。如果需要讀取某個客戶端的數據,就讀取這個客戶端對應的 Socket 文件。如果要向某個特定的客戶端發送數據,就寫入這個客戶端的 Socket 文件。MOP28資訊網——每日最新資訊28at.com


MOP28資訊網——每日最新資訊28at.com

MOP28資訊網——每日最新資訊28at.com


MOP28資訊網——每日最新資訊28at.com

epoll

與 socket 的交互,最核心的場景就是網絡 IO 的處理, epoll 會協助我們高效完成。我們新建立一個網絡 socket 的時候,交給 epoll 就可以了,當網絡 IO 有數據到來時它會通知我們,當我們要往網絡 IO 寫數據時,epoll 也會自動幫我們發送,本質上epoll實現了IO 多路復用MOP28資訊網——每日最新資訊28at.com

MOP28資訊網——每日最新資訊28at.com

Epoll數據結構如下:MOP28資訊網——每日最新資訊28at.com

· rbr:被 epoll 所管理的所有 socket 都存儲在紅黑樹中。MOP28資訊網——每日最新資訊28at.com

· rdllist:存儲著所有就緒的 socket(所謂"就緒",意思指有網絡數據到來,或者有數據要發送出去。)MOP28資訊網——每日最新資訊28at.com

MOP28資訊網——每日最新資訊28at.com

就緒列表是 epoll 能夠高效的核心,對于每一個就緒的 socket,會直接放入 rdllist 中,epoll_wait 獲取到就緒的 socket 時,直接從 rdllist 中進行獲取就可以了,無需再進行查找。epoll 是基于事件回調機制地,當 epoll 所管理地 socket 有數據到來時,會觸發事件回調函數,將就緒的 socket 放置在 rdllist 中,并且通知 epoll_wait 所在的進程來處理數據。epoll的優點如下:MOP28資訊網——每日最新資訊28at.com

  • 支持海量并發連接。
  • 使用時間復雜度為 O(logn)的紅黑樹管理所有的 socket。
  • 提高 CPU 的使用率,高效地使用 CPU 時間片處理所管理的 socket 連接。
  • 基于事件回調機制處理消息,而不是主動輪詢機制。

除了epoll,內核還提供了select和poll,但是二者效率較差,這里就不再進行介紹了。MOP28資訊網——每日最新資訊28at.com

最后的總結

不同的客戶端與服務端通信通過Socket實現,而epoll使得通信變更加高效!MOP28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5179-0.html五分鐘幫您理解Linux網絡核心知識點——Socket和Epoll

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: CSS 漸變中的顏色空間和色相插值

下一篇: SpringBoot3基礎用法

標簽:
  • 熱門焦點
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 《英雄聯盟》夏季賽總決賽今日開打!JDG對陣LNG首發名單來了 Knight:準備三連冠

    8月5日消息,今日17:00,《英雄聯盟》2023LPL夏季賽總決賽將正式開打,由JDG對陣LNG。對兩支隊伍來說,這場比賽不僅要爭奪夏季賽冠軍,更要決定誰才是LPL賽區一
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
Top 主站蜘蛛池模板: 青田县| 江陵县| 徐汇区| 大宁县| 东阿县| 建水县| 云阳县| 钦州市| 德化县| 拜城县| 湄潭县| 铅山县| 麻栗坡县| 绥阳县| 四平市| 新邵县| 旅游| 绥芬河市| 团风县| 甘肃省| 富锦市| 东明县| 余江县| 高唐县| 汶上县| 娄底市| 德化县| 宁城县| 博野县| 综艺| 翁牛特旗| 临猗县| 延边| 哈巴河县| 甘德县| 平阴县| 大竹县| 北宁市| 枞阳县| 措美县| 历史|