在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP相關(guān)的內(nèi)核參數(shù)總結(jié)

科技綠洲 ? 來源:Linux開發(fā)架構(gòu)之路 ? 作者:Linux開發(fā)架構(gòu)之路 ? 2023-11-10 15:17 ? 次閱讀

Linux上做網(wǎng)絡(luò)應(yīng)用的性能優(yōu)化時(shí),一般都會對TCP相關(guān)的內(nèi)核參數(shù)進(jìn)行調(diào)節(jié),特別是和緩沖、隊(duì)列有關(guān)的參數(shù)。很多文章會告訴你需要修改哪些參數(shù),但我們經(jīng)常是知其然而不知其所以然,每次照抄過來后,可能很快就忘記或混淆了它們的含義。

下面我以server端為視角,從 連接建立、 數(shù)據(jù)包接收 和 數(shù)據(jù)包發(fā)送 這3條路徑對參數(shù)進(jìn)行歸類梳理。

一、連接建立

圖片

簡單看下連接的建立過程,客戶端向server發(fā)送SYN包,server回復(fù)SYN+ACK,同時(shí)將這個(gè)處于SYN_RECV狀態(tài)的連接保存到半連接隊(duì)列。客戶端返回ACK包完成三次握手,server將ESTABLISHED狀態(tài)的連接移入accept隊(duì)列,等待應(yīng)用調(diào)用accept()。可以看到建立連接涉及兩個(gè)隊(duì)列:

  • 半連接隊(duì)列,保存SYN_RECV狀態(tài)的連接。隊(duì)列長度由net.ipv4.tcp_max_syn_backlog設(shè)置
  • accept隊(duì)列,保存ESTABLISHED狀態(tài)的連接。隊(duì)列長度為min(net.core.somaxconn,backlog)。其中backlog是我們創(chuàng)建ServerSocket(intport,int backlog)時(shí)指定的參數(shù),最終會傳遞給listen方法:#include int listen(int sockfd, int backlog); 如果我們設(shè)置的backlog大于net.core.somaxconn,accept隊(duì)列的長度將被設(shè)置為net.core.somaxconn

另外,為了應(yīng)對SYNflooding(即客戶端只發(fā)送SYN包發(fā)起握手而不回應(yīng)ACK完成連接建立,填滿server端的半連接隊(duì)列,讓它無法處理正常的握手請求),Linux實(shí)現(xiàn)了一種稱為SYNcookie的機(jī)制,通過net.ipv4.tcp_syncookies控制,設(shè)置為1表示開啟。簡單說SYNcookie就是將連接信息編碼在ISN(initialsequencenumber)中返回給客戶端,這時(shí)server不需要將半連接保存在隊(duì)列中,而是利用客戶端隨后發(fā)來的ACK帶回的ISN還原連接信息,以完成連接的建立,避免了半連接隊(duì)列被攻擊SYN包填滿。對于一去不復(fù)返的客戶端握手,不理它就是了。

二、數(shù)據(jù)包的接收

先看看接收數(shù)據(jù)包經(jīng)過的路徑:

圖片

數(shù)據(jù)包的接收,從下往上經(jīng)過了三層:網(wǎng)卡驅(qū)動(dòng)、系統(tǒng)內(nèi)核空間,最后到用戶態(tài)空間的應(yīng)用。Linux內(nèi)核使用sk_buff(socketkernel buffers)數(shù)據(jù)結(jié)構(gòu)描述一個(gè)數(shù)據(jù)包。當(dāng)一個(gè)新的數(shù)據(jù)包到達(dá),NIC(networkinterface controller)調(diào)用DMAengine,通過RingBuffer將數(shù)據(jù)包放置到內(nèi)核內(nèi)存區(qū)。RingBuffer的大小固定,它不包含實(shí)際的數(shù)據(jù)包,而是包含了指向sk_buff的描述符。當(dāng)RingBuffer滿的時(shí)候,新來的數(shù)據(jù)包將給丟棄。一旦數(shù)據(jù)包被成功接收,NIC發(fā)起中斷,由內(nèi)核的中斷處理程序?qū)?shù)據(jù)包傳遞給IP層。經(jīng)過IP層的處理,數(shù)據(jù)包被放入隊(duì)列等待TCP層處理。每個(gè)數(shù)據(jù)包經(jīng)過TCP層一系列復(fù)雜的步驟,更新TCP狀態(tài)機(jī),最終到達(dá)recvBuffer,等待被應(yīng)用接收處理。有一點(diǎn)需要注意,數(shù)據(jù)包到達(dá)recvBuffer,TCP就會回ACK確認(rèn),既TCP的ACK表示數(shù)據(jù)包已經(jīng)被操作系統(tǒng)內(nèi)核收到,但并不確保應(yīng)用層一定收到數(shù)據(jù)(例如這個(gè)時(shí)候系統(tǒng)crash),因此一般建議應(yīng)用協(xié)議層也要設(shè)計(jì)自己的確認(rèn)機(jī)制。

上面就是一個(gè)相當(dāng)簡化的數(shù)據(jù)包接收流程,讓我們逐層看看隊(duì)列緩沖有關(guān)的參數(shù)。

1、網(wǎng)卡Bonding模式 當(dāng)主機(jī)有1個(gè)以上的網(wǎng)卡時(shí),Linux會將多個(gè)網(wǎng)卡綁定為一個(gè)虛擬的bonded網(wǎng)絡(luò)接口,對TCP/IP而言只存在一個(gè)bonded網(wǎng)卡。多網(wǎng)卡綁定一方面能夠提高網(wǎng)絡(luò)吞吐量,另一方面也可以增強(qiáng)網(wǎng)絡(luò)高可用。Linux支持7種Bonding模式:

詳細(xì)的說明參考內(nèi)核文檔LinuxEthernet Bonding Driver HOWTO。我們可以通過
cat/proc/net/bonding/bond0查看本機(jī)的Bonding模式:

圖片

一般很少需要開發(fā)去設(shè)置網(wǎng)卡Bonding模式,自己實(shí)驗(yàn)的話可以參考這篇文檔。

  • Mode 0(balance-rr) Round-robin策略,這個(gè)模式具備負(fù)載均衡和容錯(cuò)能力
  • Mode 1(active-backup) 主備策略,在綁定中只有一個(gè)網(wǎng)卡被激活,其他處于備份狀態(tài)
  • Mode 2(balance-xor) XOR策略,通過源MAC地址與目的MAC地址做異或操作選擇slave網(wǎng)卡
  • Mode 3 (broadcast) 廣播,在所有的網(wǎng)卡上傳送所有的報(bào)文
  • Mode 4 (802.3ad) IEEE 802.3ad動(dòng)態(tài)鏈路聚合。創(chuàng)建共享相同的速率和雙工模式的聚合組
  • Mode 5 (balance-tlb) Adaptive transmit loadbalancing
  • Mode 6 (balance-alb) Adaptive loadbalancing

2、網(wǎng)卡多隊(duì)列及中斷綁定

隨著網(wǎng)絡(luò)的帶寬的不斷提升,單核CPU已經(jīng)不能滿足網(wǎng)卡的需求,這時(shí)通過多隊(duì)列網(wǎng)卡驅(qū)動(dòng)的支持,可以將每個(gè)隊(duì)列通過中斷綁定到不同的CPU核上,充分利用多核提升數(shù)據(jù)包的處理能力。

首先查看網(wǎng)卡是否支持多隊(duì)列,使用lspci-vvv命令,找到Ethernetcontroller項(xiàng):

圖片

如果有MSI-X, Enable+ 并且Count > 1,則該網(wǎng)卡是多隊(duì)列網(wǎng)卡。

然后查看是否打開了網(wǎng)卡多隊(duì)列。使用命令cat/proc/interrupts,如果看到eth0-TxRx-0表明多隊(duì)列支持已經(jīng)打開:

圖片

最后確認(rèn)每個(gè)隊(duì)列是否綁定到不同的CPU。cat/proc/interrupts查詢到每個(gè)隊(duì)列的中斷號,對應(yīng)的文件/proc/irq/${IRQ_NUM}/smp_affinity為中斷號IRQ_NUM綁定的CPU核的情況。以十六進(jìn)制表示,每一位代表一個(gè)CPU核:

(00000001)代表CPU0(00000010)代表CPU1(00000011)代表CPU0和CPU1

如果綁定的不均衡,可以手工設(shè)置,例如:

echo "1" > /proc/irq/99/smp_affinity echo "2" > /proc/irq/100/smp_affinity echo "4" > /proc/irq/101/smp_affinity echo "8" > /proc/irq/102/smp_affinity echo "10" > /proc/irq/103/smp_affinity echo "20" > /proc/irq/104/smp_affinity echo "40" > /proc/irq/105/smp_affinity echo "80" > /proc/irq/106/smp_affinity

3、RingBuffer

Ring Buffer位于NIC和IP層之間,是一個(gè)典型的FIFO(先進(jìn)先出)環(huán)形隊(duì)列。RingBuffer沒有包含數(shù)據(jù)本身,而是包含了指向sk_buff(socketkernel buffers)的描述符。可以使用ethtool-g eth0查看當(dāng)前RingBuffer的設(shè)置:

圖片

上面的例子接收隊(duì)列為4096,傳輸隊(duì)列為256。可以通過ifconfig觀察接收和傳輸隊(duì)列的運(yùn)行狀況:

圖片

  • RXerrors:收包總的錯(cuò)誤數(shù)
  • RX dropped:表示數(shù)據(jù)包已經(jīng)進(jìn)入了RingBuffer,但是由于內(nèi)存不夠等系統(tǒng)原因,導(dǎo)致在拷貝到內(nèi)存的過程中被丟棄。
  • RX overruns:overruns意味著數(shù)據(jù)包沒到RingBuffer就被網(wǎng)卡物理層給丟棄了,而CPU無法及時(shí)的處理中斷是造成RingBuffer滿的原因之一,例如中斷分配的不均勻。當(dāng)dropped數(shù)量持續(xù)增加,建議增大RingBuffer,使用ethtool-G進(jìn)行設(shè)置。

4、InputPacket Queue(數(shù)據(jù)包接收隊(duì)列)

當(dāng)接收數(shù)據(jù)包的速率大于內(nèi)核TCP處理包的速率,數(shù)據(jù)包將會緩沖在TCP層之前的隊(duì)列中。接收隊(duì)列的長度由參數(shù)
net.core.netdev_max_backlog設(shè)置。

5、recvBuffer

recv buffer是調(diào)節(jié)TCP性能的關(guān)鍵參數(shù)。BDP(Bandwidth-delayproduct,帶寬延遲積) 是網(wǎng)絡(luò)的帶寬和與RTT(roundtrip time)的乘積,BDP的含義是任意時(shí)刻處于在途未確認(rèn)的最大數(shù)據(jù)量。RTT使用ping命令可以很容易的得到。為了達(dá)到最大的吞吐量,recvBuffer的設(shè)置應(yīng)該大于BDP,即recvBuffer >= bandwidth * RTT。假設(shè)帶寬是100Mbps,RTT是100ms,那么BDP的計(jì)算如下:

BDP = 100Mbps * 100ms = (100 / 8) * (100 / 1000) = 1.25MB

Linux在2.6.17以后增加了recvBuffer自動(dòng)調(diào)節(jié)機(jī)制,recvbuffer的實(shí)際大小會自動(dòng)在最小值和最大值之間浮動(dòng),以期找到性能和資源的平衡點(diǎn),因此大多數(shù)情況下不建議將recvbuffer手工設(shè)置成固定值。

當(dāng)
net.ipv4.tcp_moderate_rcvbuf設(shè)置為1時(shí),自動(dòng)調(diào)節(jié)機(jī)制生效,每個(gè)TCP連接的recvBuffer由下面的3元數(shù)組指定:

net.ipv4.tcp_rmem =

最初recvbuffer被設(shè)置為,同時(shí)這個(gè)缺省值會覆蓋net.core.rmem_default的設(shè)置。隨后recvbuffer根據(jù)實(shí)際情況在最大值和最小值之間動(dòng)態(tài)調(diào)節(jié)。在緩沖的動(dòng)態(tài)調(diào)優(yōu)機(jī)制開啟的情況下,我們將net.ipv4.tcp_rmem的最大值設(shè)置為BDP。

當(dāng)
net.ipv4.tcp_moderate_rcvbuf被設(shè)置為0,或者設(shè)置了socket選項(xiàng)SO_RCVBUF,緩沖的動(dòng)態(tài)調(diào)節(jié)機(jī)制被關(guān)閉。recvbuffer的缺省值由net.core.rmem_default設(shè)置,但如果設(shè)置了net.ipv4.tcp_rmem,缺省值則被覆蓋。可以通過系統(tǒng)調(diào)用setsockopt()設(shè)置recvbuffer的最大值為net.core.rmem_max。在緩沖動(dòng)態(tài)調(diào)節(jié)機(jī)制關(guān)閉的情況下,建議把緩沖的缺省值設(shè)置為BDP。

注意這里還有一個(gè)細(xì)節(jié),緩沖除了保存接收的數(shù)據(jù)本身,還需要一部分空間保存socket數(shù)據(jù)結(jié)構(gòu)等額外信息。因此上面討論的recvbuffer最佳值僅僅等于BDP是不夠的,還需要考慮保存socket等額外信息的開銷。Linux根據(jù)參數(shù)
net.ipv4.tcp_adv_win_scale計(jì)算額外開銷的大小:

圖片

如果
net.ipv4.tcp_adv_win_scale的值為1,則二分之一的緩沖空間用來做額外開銷,如果為2的話,則四分之一緩沖空間用來做額外開銷。因此recvbuffer的最佳值應(yīng)該設(shè)置為:

圖片

三、數(shù)據(jù)包的發(fā)送

發(fā)送數(shù)據(jù)包經(jīng)過的路徑:

圖片

和接收數(shù)據(jù)的路徑相反,數(shù)據(jù)包的發(fā)送從上往下也經(jīng)過了三層:用戶態(tài)空間的應(yīng)用、系統(tǒng)內(nèi)核空間、最后到網(wǎng)卡驅(qū)動(dòng)。應(yīng)用先將數(shù)據(jù)寫入TCP sendbuffer,TCP層將sendbuffer中的數(shù)據(jù)構(gòu)建成數(shù)據(jù)包轉(zhuǎn)交給IP層。IP層會將待發(fā)送的數(shù)據(jù)包放入隊(duì)列QDisc(queueingdiscipline)。數(shù)據(jù)包成功放入QDisc后,指向數(shù)據(jù)包的描述符sk_buff被放入RingBuffer輸出隊(duì)列,隨后網(wǎng)卡驅(qū)動(dòng)調(diào)用DMAengine將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)鏈路上。

同樣我們逐層來梳理隊(duì)列緩沖有關(guān)的參數(shù)。

1、sendBuffer

同recvBuffer類似,和sendBuffer有關(guān)的參數(shù)如下:net.ipv4.tcp_wmem =
net.core.wmem_defaultnet.core.wmem_max 發(fā)送端緩沖的自動(dòng)調(diào)節(jié)機(jī)制很早就已經(jīng)實(shí)現(xiàn),并且是無條件開啟,沒有參數(shù)去設(shè)置。如果指定了tcp_wmem,則net.core.wmem_default被tcp_wmem的覆蓋。sendBuffer在tcp_wmem的最小值和最大值之間自動(dòng)調(diào)節(jié)。如果調(diào)用setsockopt()設(shè)置了socket選項(xiàng)SO_SNDBUF,將關(guān)閉發(fā)送端緩沖的自動(dòng)調(diào)節(jié)機(jī)制,tcp_wmem將被忽略,SO_SNDBUF的最大值由net.core.wmem_max限制。

2、QDisc

QDisc(queueing discipline )位于IP層和網(wǎng)卡的ringbuffer之間。我們已經(jīng)知道,ringbuffer是一個(gè)簡單的FIFO隊(duì)列,這種設(shè)計(jì)使網(wǎng)卡的驅(qū)動(dòng)層保持簡單和快速。而QDisc實(shí)現(xiàn)了流量管理的高級功能,包括流量分類,優(yōu)先級和流量整形(rate-shaping)。可以使用tc命令配置QDisc。

QDisc的隊(duì)列長度由txqueuelen設(shè)置,和接收數(shù)據(jù)包的隊(duì)列長度由內(nèi)核參數(shù)
net.core.netdev_max_backlog控制所不同,txqueuelen是和網(wǎng)卡關(guān)聯(lián),可以用ifconfig命令查看當(dāng)前的大小:

圖片

使用ifconfig調(diào)整txqueuelen的大小:

ifconfig eth0 txqueuelen 2000

3、RingBuffer

和數(shù)據(jù)包的接收一樣,發(fā)送數(shù)據(jù)包也要經(jīng)過RingBuffer,使用ethtool-g eth0查看:

圖片

其中TX項(xiàng)是RingBuffer的傳輸隊(duì)列,也就是發(fā)送隊(duì)列的長度。設(shè)置也是使用命令ethtool-G。

4、TCPSegmentation和Checksum Offloading

操作系統(tǒng)可以把一些TCP/IP的功能轉(zhuǎn)交給網(wǎng)卡去完成,特別是Segmentation(分片)和checksum的計(jì)算,這樣可以節(jié)省CPU資源,并且由硬件代替OS執(zhí)行這些操作會帶來性能的提升。一般以太網(wǎng)的MTU(MaximumTransmission Unit)為1500 bytes,假設(shè)應(yīng)用要發(fā)送數(shù)據(jù)包的大小為7300bytes,MTU1500字節(jié)- IP頭部20字節(jié) -TCP頭部20字節(jié)=有效負(fù)載為1460字節(jié),因此7300字節(jié)需要拆分成5個(gè)segment:

圖片

Segmentation(分片)操作可以由操作系統(tǒng)移交給網(wǎng)卡完成,雖然最終線路上仍然是傳輸5個(gè)包,但這樣節(jié)省了CPU資源并帶來性能的提升:

圖片

可以使用ethtool-k eth0查看網(wǎng)卡當(dāng)前的offloading情況:

圖片

上面這個(gè)例子checksum和tcpsegmentation的offloading都是打開的。如果想設(shè)置網(wǎng)卡的offloading開關(guān),可以使用ethtool-K(注意K是大寫)命令,例如下面的命令關(guān)閉了tcp segmentation offload:sudo ethtool -K eth0 tso off

5、網(wǎng)卡多隊(duì)列和網(wǎng)卡Bonding模式

在數(shù)據(jù)包的接收過程中已經(jīng)介紹過了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11314

    瀏覽量

    209785
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1838

    瀏覽量

    32280
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1370

    瀏覽量

    79132
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    263

    瀏覽量

    24408
收藏 人收藏

    評論

    相關(guān)推薦

    Linux TCP隊(duì)列相關(guān)參數(shù)總結(jié)

    在Linux上做網(wǎng)絡(luò)應(yīng)用的性能優(yōu)化時(shí),一般都會對TCP相關(guān)內(nèi)核參數(shù)進(jìn)行調(diào)節(jié),特別是和緩沖、隊(duì)列有關(guān)的參數(shù)。很多文章會告訴你需要修改哪些
    發(fā)表于 10-30 10:12 ?1035次閱讀
    Linux <b class='flag-5'>TCP</b>隊(duì)列<b class='flag-5'>相關(guān)</b><b class='flag-5'>參數(shù)</b>的<b class='flag-5'>總結(jié)</b>

    關(guān)于TCP/IP協(xié)議的知識總結(jié)

    今天浩道跟大家分享關(guān)于TCP/IP協(xié)議的硬核干貨總結(jié),我常常跟小伙伴說,一個(gè)簡短硬核的知識總結(jié),可以讓大家快速掌握這些知識體系,喜歡的小伙伴可以收藏起來,隨時(shí)查看復(fù)習(xí)!
    的頭像 發(fā)表于 10-31 11:48 ?1256次閱讀
    關(guān)于<b class='flag-5'>TCP</b>/IP協(xié)議的知識<b class='flag-5'>總結(jié)</b>

    Uip + Stm32移植問題總結(jié)

    Uip WebClient 實(shí)現(xiàn)作者:Changing發(fā)表時(shí)間:07-27 00:42分類:電子相關(guān)2 Comments前一篇:Uip + Stm32移植問題總結(jié)后一篇:Uip WebServer
    發(fā)表于 08-05 06:17

    Linux內(nèi)核網(wǎng)絡(luò)的TCP傳輸控制塊相關(guān)資料分享

    1、Linux內(nèi)核網(wǎng)絡(luò)之傳輸層接收消息簡析在傳輸層發(fā)送消息時(shí),TCP發(fā)送出去消息后,會跟蹤這些數(shù)據(jù)包,直到得到對方的確認(rèn)為止。對于接收方來講,當(dāng)收到一個(gè)報(bào)文段時(shí),其會根據(jù)情況把這些數(shù)據(jù)包添加到接收
    發(fā)表于 06-21 16:53

    MTK驅(qū)動(dòng)調(diào)試相關(guān)總結(jié)

    MTK驅(qū)動(dòng)調(diào)試相關(guān)總結(jié)
    發(fā)表于 03-19 11:47 ?5次下載

    總結(jié)一些常見網(wǎng)絡(luò)相關(guān)內(nèi)核參數(shù)

    也許你有經(jīng)歷,想了解一些內(nèi)核參數(shù)的作用,然后去網(wǎng)上搜了很多文檔,結(jié)果發(fā)現(xiàn)大多都一樣,而且沒有人能夠說的很詳細(xì)。下面是我總結(jié)的幾個(gè)跟網(wǎng)絡(luò)相關(guān)參數(shù)
    的頭像 發(fā)表于 01-16 16:14 ?4828次閱讀
    <b class='flag-5'>總結(jié)</b>一些常見網(wǎng)絡(luò)<b class='flag-5'>相關(guān)</b>的<b class='flag-5'>內(nèi)核</b><b class='flag-5'>參數(shù)</b>

    如何修復(fù)Linux內(nèi)核存在的TCP漏洞?

    卡內(nèi)基梅隆大學(xué)的 CERT/CC 發(fā)出警告,稱 Linux 內(nèi)核 4.9 及更高版本中有一個(gè) TCP 漏洞,該漏洞可使攻擊者通過極小流量對系統(tǒng)發(fā)動(dòng) DoS (Denial-of-Service,拒絕服務(wù))攻擊。
    的頭像 發(fā)表于 08-10 11:15 ?3607次閱讀

    TCP IP相關(guān)知識的詳細(xì)資料說明免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是TCP IP相關(guān)知識的詳細(xì)資料說明免費(fèi)下載。主要內(nèi)容包括了:TCP報(bào)文格式,TCP通信過程,ICMP協(xié)議。
    發(fā)表于 12-05 11:19 ?19次下載
    <b class='flag-5'>TCP</b> IP<b class='flag-5'>相關(guān)</b>知識的詳細(xì)資料說明免費(fèi)下載

    linux內(nèi)核參數(shù)設(shè)置_linux內(nèi)核的功能有哪些

    本文主要闡述了linux內(nèi)核參數(shù)設(shè)置及l(fā)inux內(nèi)核的功能。
    發(fā)表于 09-17 14:40 ?1382次閱讀
    linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>參數(shù)</b>設(shè)置_linux<b class='flag-5'>內(nèi)核</b>的功能有哪些

    如何用eBPF寫TCP擁塞控制算法?

    其實(shí)不想用這個(gè)題目的,只因?yàn)?b class='flag-5'>TCP相關(guān)的東西比較吸引人的眼球,這篇文章的主題還是eBPF,而不是TCP。 用eBPF寫TCP擁塞控制算法只是本文所講內(nèi)容的一個(gè)再平凡不過的例子。 先看兩
    的頭像 發(fā)表于 12-26 09:44 ?1682次閱讀

    TCP和UDP的原理以及區(qū)別

    最近重新認(rèn)知了一下TCP和UDP的原理以及區(qū)別,做一個(gè)簡單的總結(jié)
    發(fā)表于 08-08 14:34 ?1498次閱讀

    TCP和UDP協(xié)議的區(qū)別

    最近重新認(rèn)知了一下TCP和UDP的原理以及區(qū)別,做一個(gè)簡單的總結(jié)
    發(fā)表于 11-03 10:25 ?884次閱讀

    運(yùn)放電路的關(guān)鍵參數(shù)總結(jié)

    前段時(shí)間總結(jié)了一些運(yùn)放電路的分析方法,但似乎搞錯(cuò)了方向,相關(guān)參數(shù)似乎還沒搞清楚。
    的頭像 發(fā)表于 10-16 14:53 ?1230次閱讀
    運(yùn)放電路的關(guān)鍵<b class='flag-5'>參數(shù)</b><b class='flag-5'>總結(jié)</b>

    關(guān)于TCP協(xié)議總結(jié)的硬核干貨

    本文給出TCP報(bào)文格式的詳細(xì)說明,介紹網(wǎng)絡(luò)數(shù)據(jù)包傳遞中如何進(jìn)行地址解析、建立TCP連接的三次握手過程以及斷開TCP連接的四次揮手過程。
    發(fā)表于 11-17 09:26 ?540次閱讀
    關(guān)于<b class='flag-5'>TCP</b>協(xié)議<b class='flag-5'>總結(jié)</b>的硬核干貨

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 內(nèi)核運(yùn)行ko文件總結(jié)

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 內(nèi)核運(yùn)行ko文件總結(jié)
    的頭像 發(fā)表于 01-31 14:58 ?1174次閱讀
    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 <b class='flag-5'>內(nèi)核</b>運(yùn)行ko文件<b class='flag-5'>總結(jié)</b>
    主站蜘蛛池模板: 黄色免费看网站| 国产三级在线看| 99亚洲自拍| 91黄色影院| 毛片特黄| 色图视频| 91精品啪国产在线观看免费牛牛| 日韩一级特黄毛片在线看| 一区二区三区高清在线| 又粗又长又大又黄的日本视频| 亚洲成熟| 午夜国产精品久久久久| 爱爱天堂| 国产成人1024精品免费| 日日爱视频| 婷婷网址| 午夜精品视频在线看| 天堂在线中文| 天堂最新版在线地址| 尻逼久久| 奇米网在线观看| 手机看片国产免费| 国产日日操| 国产高清免费午夜在线视频| 性欧美性| sesese在线播放| 操她视频网站| 一区在线视频| 伊人一区二区三区| 宅男午夜视频在线观看| 中文字幕在线观看第一页| 日本aaaa级毛片在线看| 亚洲国产福利精品一区二区| 69女poren16| 91国内在线| kkkbo色综合| 午夜爽爽| 四虎国产永久免费久久| 色偷偷91综合久久噜噜| 免费一级成人毛片| 国产色丁香久久综合|