为什么我的 ACK 包会携带有数据? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lysShub

为什么我的 ACK 包会携带有数据?

  •  
  •   lysShub 2024 年 3 月 19 日 2671 次点击
    这是一个创建于 767 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pFWZmqI.png

    是 tcp 的什么特殊功能吗?

    9 条回复    2024-03-20 13:35:20 +08:00
    momo24672
        1
    momo24672  
       2024 年 3 月 19 日
    Delay ACK
    albert990624
        2
    albert990624  
       2024 年 3 月 19 日
    TCP 的延迟确认机制
    lysShub
        3
    lysShub  
    OP
       2024 年 3 月 19 日
    @albert990624
    @momo24672 delay ack 为啥会在 ack 包中携带数据啊?或者说携带有数据的包应该把 PSH 标志也设置上
    leonshaw
        4
    leonshaw  
       2024 年 3 月 19 日 via Android
    TCP 除了第一个 SYN 包以外都有 ACK
    vituralfuture
        6
    vituralfuture  
       2024 年 3 月 19 日 via Android   3
    图片打不开了,不过这种情况是可以的,它叫做 ACK 捎带,不是 ACK 包捎带了数据,而是数据捎带了 ACK

    TCP 协议是全双工的,允许双方互相收发数据,当接受方有数据需要发送时,它既需要发出 ACK 向发送方确认之前收到的包已经到达,又需要把它想要发送的数据发送给发送方,这时没必要分开进行,只需要数据捎带 ACK 即可,这时发送的包就有两重含义
    1. 接收方想要发送的数据
    2. 接收方对收到的包的确认
    ben666
        7
    ben666  
       2024 年 3 月 20 日
    ACK 是可以带数据的,只是 socket 编程接口不提供这种特性,如果是自己写的协议栈就可以这样。
    可以理解为丢失了一个纯 ACK:

    SYN ->
    <-SYN+ACK
    [->ACK] 丢失了
    ->ACK + DATA


    开源网络测试仪 dperf https://github.com/baidu/dperf 是自研的 TCP 协议栈,就是在三部握手的 ACK 上带数据的。
    lysShub
        8
    lysShub  
    OP
       2024 年 3 月 20 日
    @vituralfuture https://img2.imgtp.com/2024/03/20/ekywTkfV.png

    我知道你说的是 PSH|ACK 这种 flag ,但是我这个只有 ACK
    lysShub
        9
    lysShub  
    OP
       2024 年 3 月 20 日
    是我理解错了,我一直误以为 PSH 标识表示这个 segment 携带有数据。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2692 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 06:23 PVG 14:23 LAX 23:23 JFK 02:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86