91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析Linux TCP/IP協議棧

發布時間:2022-01-20 17:37:11 來源:億速云 閱讀:185 作者:kk 欄目:開發技術

這期內容當中小編將會給大家帶來有關如何分析Linux TCP/IP協議棧,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

TCP/IP是指能夠在多個不同網絡間實現信息傳輸的協議簇。TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議,下面為大家詳細講解一下TCP/IP協議棧。

TCP特點

我們都非常清楚TCP協議設計的初衷,就是保證數據傳輸的快速,有序,無誤。所以特點總結如下:

1、面向連接,可以用五元組來表示一條連接(遠程ip,遠程端口,本地ip,本地端口,傳輸層協議)。 

2、數據是全雙工的 

3、數據是有序的,也就是接受的數據一定是按照發送時的順序的。 

4、流量控制,發送方可以通過接收方滑動窗口大小來動態調整發送數據的大小。 

5、擁塞控制,發送方通過ACK的狀態結合擁塞算法綜合計算給出窗口大小。

了解完TCP特點字后,我們就來真正的看看數據發送到底是怎樣的過程?

數據發送

我們首先來看張圖:如何分析Linux TCP/IP協議棧上圖展示的是數據流動的在硬件中的過程,下圖展示的是數據在協議棧的過程:如何分析Linux TCP/IP協議棧

整個過程分為三個大區域:用戶區,內核區,設備。這里所說的設備就是網卡。流程如下:

1、用戶應用程序調用write系統調用 2、確認文件描述符 3、拷貝數據到socket buffer中 4、創建tcp片段,計算checksum 5、添加IP頭,執行ip路由,計算checksum 6、添加以太網協議頭部,執行ARP 7、告訴網卡芯片要發送數據了 8、網卡從內存中獲取數據發送,發送完成中斷告訴CPU

數據接收

直接看硬件數據流圖:如何分析Linux TCP/IP協議棧首先網卡把接收到的數據包寫入到它的內存之中。然后對其進行校驗,通過后發送到主機的主存之中。主存中的buffer是驅動分配好的,驅動會把分配好的buffer描述告訴網卡,如果沒有足夠的buffer接受網卡的數據包,網卡會將數據包丟棄。一旦數據包拷貝到主存完成,網卡會通過中斷告知主機OS。

之后驅動會檢查它是否能處理這個新的包。如果能處理,驅動會把數據包包裝成OS認識的結構(linux sk_buffer)并推送到上層。 鏈路層接收到幀后檢查通過的話會按照協議解幀并推送至IP層。

IP層會在解包之后根據包中包含的IP信息決定推送至上層還是轉發到其他IP。如果判斷需要推送至上層,則會解掉IP包頭并推送至TCP層。

TCP在解報之后會根據其四元組找到對應的TCB,之后通過TCP協議處理這個報文。在接收到報文后,會把報文加到接受報文,之后根據TCP的狀態發送一個ACK給對端。

當然上述過程會受到NAT等等Netfilter的作用,這里不談了,也沒深研究過。當然為了性能,大牛們方方面面也做了很多努力,比如大到RDMA、DPDK等大的軟硬件技術,小到zero-copy、checksum offload等;

什么是Linux系統

Linux是一種免費使用和自由傳播的類UNIX操作系統,是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統,使用Linux能運行主要的Unix工具軟件、應用程序和網絡協議。

上述就是小編為大家分享的如何分析Linux TCP/IP協議棧了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘西| 广河县| 宝鸡市| 文山县| 东乌珠穆沁旗| 额济纳旗| 陈巴尔虎旗| 托克托县| 论坛| 柳州市| 台南县| 淳安县| 合水县| 内江市| 肇州县| 虞城县| 玛多县| 奉化市| 东宁县| 望城县| 汝南县| 普宁市| 蒲城县| 营山县| 白玉县| 申扎县| 深水埗区| 马龙县| 论坛| 宕昌县| 简阳市| 开封县| 海林市| 清涧县| 荣成市| 星座| 汕头市| 寻乌县| 昌黎县| 临高县| 祁东县|