gpt4 book ai didi

networking - 拆分 TCP 上的 TCP 序列号技巧

转载 作者:可可西里 更新时间:2023-11-01 02:54:48 30 4
gpt4 key购买 nike

我想建立这样一个系统,有3个节点,A,B和C A和B建立TCP连接,然后A告诉C端口,序列号(seq_no)和确认序列号(ack_seq_no)。然后C将数据包发送给B(C和A共享相同的IP但彼此相距较远,例如C欺骗A的IP)

如果B从不向IP(A)发送数据包(只有ACK),C可以使用正确的seq_no和ack_seq_no向B发送数据包,但有时如果B向IP(A)发送数据包P1,

1 A立即向B发送数据包P1的ACK,A将新的ack_seq_no告诉C。但是A和C之间有一个延迟,所以在C知道新的ack_seq_no之前,C可能会发送一些数据包(带有欺骗IP(A))给B,并且带有过时的ack_seq_no。

我的第一个问题是:当 C 收到一个带有过时 ack_seq_no 的数据包时,它会做什么

2 如果我把对p1的ACK从A延迟到B,我让A先告诉C,然后再给p1发送ACK。有2个问题:

1) 由于B正在等待A对p1的ACK,可能会重传p1包,如何增加重传超时时间?如果每次回复ACK都这么延迟,超时时间自然会增加,那不是问题吗?

2) 如果C在从A到B的ACK(for p1)之前向B(A的IP)发送数据包。这意味着数据包具有更新的ack_seq_no,但B不知道它的新ack_seq_no是否A 是否知道(因为 ACK 尚未到达),因此它可能认为 ACK 是搭载在数据包上的?那么B将如何处理迟到的ACK呢?

最佳答案

  1. 如果收到过时的 ACK,则 ACK 将被忽略(假定是延迟的旧数据包)。每个 ACK​​ 都会确认导致它的所有内容(我假设您没有发送选择性 ACK)。

  2. 发送方应根据确认响应时间调整其重传超时。

  3. B 无法区分来自 A 或 C 的 ACK。就其而言,这与问题 #1 相同——迟到的 ACK 将被忽略。

    <

关于networking - 拆分 TCP 上的 TCP 序列号技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712691/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com