ch32v307, 使用內(nèi)置10M的phy, 有個(gè)應(yīng)用每次有 5k 的數(shù)據(jù) 需要發(fā)送,由于最大只能是 1460,分多次發(fā)送。
用 wireshark 抓包發(fā)現(xiàn),v307發(fā)送兩個(gè)數(shù)據(jù)包之前 ,大約有 40ms 的間隔,
使用PING發(fā)現(xiàn)是正常的。
請(qǐng)問(wèn)這個(gè)可能是什么原因呢?
ch32v307, 使用內(nèi)置10M的phy, 有個(gè)應(yīng)用每次有 5k 的數(shù)據(jù) 需要發(fā)送,由于最大只能是 1460,分多次發(fā)送。
用 wireshark 抓包發(fā)現(xiàn),v307發(fā)送兩個(gè)數(shù)據(jù)包之前 ,大約有 40ms 的間隔,
使用PING發(fā)現(xiàn)是正常的。
請(qǐng)問(wèn)這個(gè)可能是什么原因呢?
您好,當(dāng)網(wǎng)絡(luò)傳輸繁忙時(shí)會(huì)發(fā)生擁塞,此時(shí)ACK的返回就會(huì)變慢,這個(gè)是正常現(xiàn)象。
但是我這里是一個(gè)點(diǎn)對(duì)點(diǎn)的連接,沒(méi)有其它的連接。 理論上發(fā)送 1460字節(jié)數(shù)據(jù)只需要不到 2ms, 但是實(shí)際上花了接近 50ms, 這是不可接受的。如果這個(gè)合理,那網(wǎng)絡(luò)的速度就只能達(dá)到30kB/S 了。
第一張圖的第10,11行,50ms時(shí)間沒(méi)有任何數(shù)據(jù)收發(fā),而v307 這邊一直還有很多數(shù)據(jù)等著發(fā)送。
從您的抓包數(shù)據(jù)上來(lái)看,我的理解是11.38是V307的IP而11.25是PC的IP,如果我的理解沒(méi)有錯(cuò)的話,那第10行就是V307向PC發(fā)送了一包數(shù)據(jù),第11行為PC回應(yīng)的ACK,按照您的描述應(yīng)該是PC回復(fù)ACK慢了40ms,這個(gè)跟307沒(méi)有關(guān)系。另外我這邊寫(xiě)了個(gè)代碼測(cè)試并沒(méi)有出現(xiàn)較長(zhǎng)延時(shí),附測(cè)試代碼:
但是這個(gè)是上位機(jī)工具是標(biāo)準(zhǔn)的 TCP 調(diào)試工具,使用其它設(shè)備,沒(méi)有碰到過(guò)這樣的情況。
可以用上邊附的代碼,測(cè)試一下,看現(xiàn)象是否跟代碼有關(guān)呢
好的。我們?cè)囈幌驴纯础?/p>
剛剛查了一圈,可能是下面這個(gè)原因:
解決TCP延遲應(yīng)答(Delay ACK)問(wèn)題的3個(gè)方法 – Keep Quicking (kquic.com)