<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          中斷還是輪詢?取個數(shù)據(jù)包真麻煩!

          共 2616字,需瀏覽 6分鐘

           ·

          2020-07-07 12:38

          網(wǎng)絡(luò)部新員工

          我叫Robert,是Linux帝國一個普通的公民。

          今天是我第一天上班的日子,我下了好大功夫才考上了帝國的公務(wù)員,根據(jù)我的成績,我被分到了帝國網(wǎng)絡(luò)部。

          一進(jìn)入帝國的辦公園區(qū),我就被眼前的景象驚呆了,一座座高樓大廈,富麗堂皇,鱗次櫛比,我忍不住駐足多看了幾眼。

          1b2b09c60c2e23ee9ede8eb4c4888ad0.webp

          這些大樓上面都有招牌,最高的那一座是帝國的進(jìn)程&線程管理部門的辦公大廈,旁邊還有內(nèi)存管理部門、文件管理等部門辦公大廈。

          網(wǎng)卡驅(qū)動部門

          我只顧東張西望,不小心跟旁邊小路跑出來的一位小哥撞了一個滿懷,他手里抱的一堆數(shù)據(jù)散落的滿地都是。

          318f053ebf6a0b2580120287ad25ac50.webp

          我一邊道歉,一邊幫他撿起數(shù)據(jù)。

          “這位小哥行色匆匆,不知要去哪里啊”,我好奇的問到。

          “哦,你好,我是網(wǎng)卡驅(qū)動部門的,這是從網(wǎng)卡那里剛剛拿到的數(shù)據(jù)包,我得趕緊交給協(xié)議棧處理”,說完整理了下數(shù)據(jù),就匆忙離開了。

          尋著他出來的地方看去,不遠(yuǎn)處就是他說的網(wǎng)卡驅(qū)動部門,難道我辦公的地方就在這里?我沿著這條小路走了過去。

          一進(jìn)入網(wǎng)卡驅(qū)動部門,出現(xiàn)在眼前的就是一副熱火朝天的景象,收包的,解包的,發(fā)包的,一群人忙的不亦樂乎。

          9060d278d038a119f36aa9c991c68e63.webp

          “這么早就這么忙碌了啊”,我問門口的保安大叔。

          “是啊,這平時這個點也沒什么網(wǎng)絡(luò)訪問,不知道今天怎么回事,一大早的數(shù)據(jù)就傳輸個不?!?,保安說到。

          我指著里面一個員工問保安:“大叔,那人在干嘛呢?一直在轉(zhuǎn)來轉(zhuǎn)去的”

          “你說他啊,他在從網(wǎng)卡輪詢讀取數(shù)據(jù)包呢!”

          輪詢?網(wǎng)絡(luò)數(shù)據(jù)包不是網(wǎng)卡發(fā)中斷通知嗎,干嘛要去輪詢呢?”,我不解的問到。

          “以前是這樣的,不過后來CPU那邊有個叫阿Q的家伙不干了,說網(wǎng)卡數(shù)據(jù)太頻繁,老是打斷他們正常的工作。不僅如此,中斷響應(yīng)的時候還得把中斷給關(guān)了,避免出現(xiàn)錯誤,時間久了,鍵盤、鼠標(biāo)等單位就得不到響應(yīng)紛紛鬧事了”,保安說完點了一支香煙。

          我若有所思的點了點頭,“那現(xiàn)在就改成輪詢了?不過這樣好浪費時間哦”

          78a58da207f3d918709d65894e25507e.webp

          保安吐了一個煙圈,繼續(xù)說到:“倒也不是全都是輪詢,現(xiàn)在把處理過程分成了兩段,最開始的第一部分還是靠中斷來通知的,這個時候需要關(guān)一下中斷,不過通知后不會真正處理數(shù)據(jù)包,而是開啟了一個軟中斷,所以關(guān)不了太久時間。第二部分在軟中斷中去輪詢處理的,這個時候就不用關(guān)中斷了。把硬中斷和輪詢結(jié)合了一下,就不用每個數(shù)據(jù)包來都中斷一次了,也不用關(guān)中斷太長時間,還給這技術(shù)取了個名字叫NAPI

          “保安大叔,你怎么什么都知道???”

          “我以前就在里面工作啊,現(xiàn)在年紀(jì)稍微大了些,比不上年輕人,就讓我來當(dāng)保安了,唉~”,大叔說完又猛抽了一口香煙,整理了下自己日益稀疏的頭發(fā)。

          “唉,對了,你是誰啊,怎么沒見過你?”

          “我是帝國網(wǎng)絡(luò)部新來的員工,今天來報道的。我把手中的錄取通知書遞給了保安”

          保安大叔看了看說到:“你走錯了,不是這里,你該去網(wǎng)絡(luò)協(xié)議棧大廈”。

          協(xié)議棧大廈

          離開網(wǎng)卡驅(qū)動部門,我繼續(xù)前行終于找到了網(wǎng)絡(luò)協(xié)議棧大廈,這便是我今后工作的地方了。

          走近一看,這座網(wǎng)絡(luò)大廈并不如前面看到的高大,只有三層高,每一層的墻上都掛著一個巨大的招牌,上面寫著這一層的名字,從上向下分別是:

          • 應(yīng)用層
          • 傳輸層
          • 網(wǎng)絡(luò)層
          9aaab59ccd8c565b027cc3f4dbde6b16.webp

          大廈的門口還有一個收發(fā)室,門牌上寫著netif_receive_skb,收發(fā)室坐著一位大爺。

          正在這時,先前碰到的小哥又來了,將手里的數(shù)據(jù)放到了收發(fā)室就離開了,看來這里就是網(wǎng)絡(luò)協(xié)議棧的入口了。

          大爺拆開這個數(shù)據(jù)包看了看,隨即按了下按鈕,數(shù)據(jù)包就順著管道傳到了背后協(xié)議棧大廈一樓的一個辦公室,我抬頭一看,上面寫著IPv4。再向旁邊看去,還有好幾間辦公室,分別寫了IPv6、ICMP、IGMP、ARP···

          我來到這個IPv4的門口,里面也是忙的不亦樂乎,有分片的、組包的、計算校驗和的、有條不紊。

          辦公室正中央有一個圓柱形的管道,通向了二樓,一樓處理完畢就通過這管道把數(shù)據(jù)包送了上去。

          墻上還有另一個管道,上面寫著netfilter hook,不知道是通向了哪里。

          “你找誰?”,我正看得入神,里面一個負(fù)責(zé)人發(fā)現(xiàn)了我,我趕緊表明來意。

          他看過我手中的錄取通知書后說到,“你是在傳輸層啊,出門右拐上二樓就是了。我們這一樓都是網(wǎng)絡(luò)層協(xié)議的辦公室?!?/p>

          我又看了下手里的錄用通知書,這才發(fā)現(xiàn)被分配在了傳輸層工作。

          傳輸層工作

          來到二樓,總算見到了我的主管。

          “Robert,歡迎加入網(wǎng)絡(luò)部,工作崗位在傳輸層的TCP小組,大家歡迎!”

          “謝謝主管!謝謝大家!”

          “這是Cerf,你剛來,就讓他先帶帶你,有什么不懂的就向他請教吧。”

          我點頭感謝,和一旁這個叫Cerf的握了握手。

          接下來,主管向我介紹了咱們傳輸層的幾個小組的情況:TCP、UDP、SCTP、UDP-lite······我這才知道,原來傳輸層不是只有TCP和UDP。

          d7e769fcfd9a6913f4f201c7df0a53e4.webp

          Cerf帶我來到了工位,不愧是國有單位,無比寬敞,桌上還有一堆奇怪的設(shè)備。

          “這是一堆什么東西啊”,我問Cerf。

          “這些都是定時器,后面你工作處理TCP連接會用到的”

          我點了點頭,環(huán)顧四周,工位旁邊的墻壁上還貼滿了什么東西,我湊近了一看,才發(fā)現(xiàn)滿滿的都是RFC幾千條的規(guī)定。

          30fcc3b561c2b3469e7b2b2ec4deb43c.webp

          “好好看,以后的工作可是要天天用到這些東西呢”,Cerf略開玩笑的說著。

          “這些我基本都背的下來了,要不然我也考不到這里來”,我笑著說,略帶一些得意。

          Cerf也笑了笑,“別大意,之前也有人也說過這話,后來還不是走了”

          我有些尷尬,不知道說些什么,這時辦公室中央的管道里冒出了一個數(shù)據(jù)包。

          “Robert,你剛來,這個新的連接數(shù)據(jù)包就交給你來處理下,熟悉下工作流程”,主管說到。

          我剛剛放松的心情一下緊張了起來,畢竟以前都是紙上談兵,還從沒有真正處理過數(shù)據(jù)包呢。

          我小心翼翼的接過這個數(shù)據(jù)包,定位到TCP的頭部,瞧了一眼標(biāo)志位,發(fā)現(xiàn)SYN位是1,看來是有新的連接到來了,接下來不就是三次握手嗎,我再熟悉不過了。

          37c481ae910fed0dcfde44aa9c738ea0.webp

          我準(zhǔn)備了一個響應(yīng)包,將SYN標(biāo)記和ACK標(biāo)記都點亮后,接下來就犯了難了。這個確認(rèn)號ACK我倒是知道是對方的序列號+1,不過我回復(fù)的序列號該是多少呢?一時之間,不知道如何是好。

          你們知道嗎?在線等,挺急的。

          未完待續(xù)······

          彩蛋

          CPU一號車間的阿Q又鬧脾氣了。

          “我們花了大量時間把網(wǎng)卡數(shù)據(jù)搬運到內(nèi)存,重復(fù)又沒有技術(shù)含量,我受夠了!”

          預(yù)知后事如何,請關(guān)注后續(xù)精彩······

          往期TOP5文章

          CPU明明8個核,網(wǎng)卡為啥拼命折騰一號核?

          因為一個跨域請求,我差點丟了飯碗

          完了!CPU一味求快出事兒了!

          哈希表哪家強(qiáng)?幾大編程語言吵起來了!

          一個HTTP數(shù)據(jù)包的奇幻之旅

          1335becff4f8830708c5e2e8bd86a995.webp
          瀏覽 29
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人摸摸人人 | 我要看国产一级黄片 | 97在线免费视频观看 | 老女人日逼视频 | 肏综合网|