1. 程式人生 > >netty學習(一)--linux下的網絡io模型簡單介紹

netty學習(一)--linux下的網絡io模型簡單介紹

網絡協議 過程 content 結構體 了解 簡單 文件路徑 技術 連接

linux的內核將全部的外部設備都看作一個文件來操作,對一個文件的讀寫操作會調用內核提供的系統命令

,返回一個file descriptor(fd。文件描寫敘述符)。而對一個socket的讀寫也會有對應的描寫敘述符。成為socketfd

(socket描寫敘述符),描寫敘述符就是一個數字,它指向內核中的一個結構體(文件路徑。數據區等一些屬性)。

依據unix編程對I/O模型的分類,unix提供了5種I/O模型。各自是:

(1)堵塞I/O模型:最常使用的就是堵塞I/O模型,在默認條件下全部的文件操作都是堵塞的。!

(2)非堵塞I/O模型

(3)I/O復用模型

(4)信號驅動I/O模型

(5)異步I/O模型


對於大多數程序猿來說。不須要了解網絡編程的底層細節。大家僅僅須要有個概念。知道對於操作系統而言。底層

是支持異步I/O通信的。java NIO的核心類庫多路復用器就是基於epoll的多路復用技術實現!


在I/O編程過程中,當須要處理多個client接入請求時,能夠利用多線程或者I/O多路復用技術進行處理。I/O

多路復用技術通過把多個I/O堵塞復用到同一個select的堵塞上,從而使得系統在單線程的情況下能夠處理多個

client請求。與傳統的多線程/多進程模型相比,I/O多路復用的最大優勢是系統開銷小,系統不須要創建

新的額外進程或者線程,也不須要維護這些線程和進程的執行,減少了系統的維護性工作量。節省了系統資源

,I/O多路復用的主要應用場景:

(1)server須要處理多個處於監聽狀態或者多個連接狀態的socket;

(2)server須要處理多種網絡協議的socket


linux眼下支持的I/O多路復用的系統調用有select、pselect、poll、epoll



netty學習(一)--linux下的網絡io模型簡單介紹