Поведение TCP в отношении сегментации и повторной передачи ⇐ Linux
Поведение TCP в отношении сегментации и повторной передачи
In a scenario where a TCP message was attempted by A, but it was larger than the MSS, the TCP message is segmented into 2 (comprising of one larger segment just under the MSS, and once smaller segment approximately 20 bytes).
Both segments are sent by A to B, and normally B sends a single ACK after the 2nd segment.
In one instance, there is an observation that B did not immediately send an ACK at all. In this scenario, A has continued to retransmit the first segment, but B does not ACK this for approximately 8 seconds. Eventually B does send the ACK, then A retransmits the second segment, and B immediately sends another ACK.
In the above scenario, is it possible that B has received the first segment, but not the second, and is waiting for the second segment before sending its ACK?
Meanwhile, A does not seem to retransmit the second segment until after it's got the ACK for the first segment. Is this expected?
Could it be that there is confusion between A and B, where B is waiting for the second segment, but A thinks that B has not got the first segment, and is not retransmitting the second segment until the first segment is acknowledged.
Both A and B are Netty based Java applications running on OL6 and CentOS7 respectively. A and B are separated by a latency of approximately 40ms.
I expected that A would retransmit both segments, and B would ACK the first segment earlier.
Источник: https://stackoverflow.com/questions/780 ... ansmission
In a scenario where a TCP message was attempted by A, but it was larger than the MSS, the TCP message is segmented into 2 (comprising of one larger segment just under the MSS, and once smaller segment approximately 20 bytes).
Both segments are sent by A to B, and normally B sends a single ACK after the 2nd segment.
In one instance, there is an observation that B did not immediately send an ACK at all. In this scenario, A has continued to retransmit the first segment, but B does not ACK this for approximately 8 seconds. Eventually B does send the ACK, then A retransmits the second segment, and B immediately sends another ACK.
In the above scenario, is it possible that B has received the first segment, but not the second, and is waiting for the second segment before sending its ACK?
Meanwhile, A does not seem to retransmit the second segment until after it's got the ACK for the first segment. Is this expected?
Could it be that there is confusion between A and B, where B is waiting for the second segment, but A thinks that B has not got the first segment, and is not retransmitting the second segment until the first segment is acknowledged.
Both A and B are Netty based Java applications running on OL6 and CentOS7 respectively. A and B are separated by a latency of approximately 40ms.
I expected that A would retransmit both segments, and B would ACK the first segment earlier.
Источник: https://stackoverflow.com/questions/780 ... ansmission
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение