結(jié)論先行
在TCP
發(fā)送報(bào)文有時(shí)比較短,但又對(duì)延遲比較敏感的場(chǎng)景,例如,應(yīng)用控制信令,非常適合啟用TCP_NODELAY
套接字選項(xiàng)。
現(xiàn)象
- 發(fā)送者在
TCP
鏈路上連續(xù)發(fā)送兩條請(qǐng)求,第一條請(qǐng)求立即發(fā)送出去了,而第二條要等到TCP Ack
后,才能再次發(fā)送出去
TCP
存在隨路Ack
確認(rèn)和延遲Ack
確認(rèn),TCP
對(duì)端在沒(méi)有報(bào)文發(fā)送時(shí),會(huì)出現(xiàn)延遲回復(fù)Ack
確認(rèn)
啟用代碼
int enable = 1;
// 注意使用第二個(gè)參數(shù)特別需要注意,需要設(shè)置為SOL_TCP
setsockopt(fd, SOL_TCP, TCP_NODELAY, &enable, sizeof(enable));
拷貝粘貼代碼易錯(cuò)提示
筆者曾出現(xiàn)設(shè)置第二個(gè)參數(shù)為
SOL_SOCKET
級(jí)別,但TCP_NODELAY
特性不生效的情況
后記
后來(lái)回想了下,setsockopt
第二個(gè)參數(shù)選項(xiàng),體現(xiàn)為套接字的協(xié)議工作層次,與網(wǎng)絡(luò)協(xié)議棧的層次劃分有一定的對(duì)應(yīng)關(guān)系。
所以,對(duì)于TCP_NODELAY
套接字選項(xiàng),應(yīng)該設(shè)置在傳輸層上!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-852402.html
猜測(cè)TCP_NODELAY默認(rèn)不啟用原因
- 吞吐量因素
Nagle
算法的優(yōu)化場(chǎng)景文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-852402.html
- 避免發(fā)送過(guò)多未經(jīng)確認(rèn)的數(shù)據(jù)
工具小貼士
-
putty
小程序在配置中提供了TCP_NODELAY
的選項(xiàng)控制,以利于界面交互的及時(shí)性
到了這里,關(guān)于TCP_NODELAY在延遲敏感的場(chǎng)景下適合設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!