TCP에서 패킷전송후에 ACK 안오면, ACK 안온 패킷의 다음 시퀀스 번호의 TCP 데이터를 전송하나요?
글쓴이: pmj0403 / 작성시간: 토, 2010/11/27 - 12:26오전
TCP에서 패킷전송후에 ACK 안오면, ACK 안온 패킷의 다음 시퀀스 번호의 TCP 데이터를 전송하나요?
예를 들어 송신자에서 TCP 10번 메시지를 수신자한테 보냈는데,
10번메시지에 대한 ACK를 못받은 상태이라면, 다음보기중 어떤게 맞는건가요?
1) 11번부터 쭉~~데이터를 보내나요???
2) 10번 ACK 받을때까지 무조건 기다린다
3) 11번부터 몇개보내보다가 그래도 ACK 안오면 그다음 기다린다
4) 답이 없다. 다른 정답이 있다.
답변 주시면 감사드리겠습니다. 머리 깨지겠네요;ㅋㅋ
Forums:
제가 알고 있기로는 10번 메시지를 몇차례 보내고
제가 알고 있기로는 10번 메시지를 몇차례 보내고 응답이 없으면 연결이 끊어진 것으로 알고 RST(reset)을 보냅니다.
(제 기억에 의존하기때문에 틀릴수도 있습니다.)
확실히 알고 있는 부분은 10번 메시지를 몇차례 다시 보낸다는 것입니다.
TCP implementation에 따라 행동양식이
TCP implementation에 따라 행동양식이 달라서 설명하기 애매합니다만...
기본적으로는 재전송이 이뤄집니다만
거기에 window, congestion control 알고리즘 등에 따라
언제 얼마만큼의 패킷을 보내느냐가 결정됩니다.
우선 중요한 것은 1 ~ 9 번까지의 data 가
우선 중요한 것은 1 ~ 9 번까지의 data 가 어떻게 전송이 되어 졌는지가 굉장히 중요합니다. 위에 분 말씀처럼 window 크기에 따라서 10 번 segment 를 상대방의 ACK 를 기다리지 않고 보낼 수도 있고 ACK 을 기다린 후 보낼수도 있거든요.
그래서 위의 보기 모두 답이 없다고 할 수 있겠네요. 경우에 따라 다릅니다.
일반적인 TCP stack 의 경우 (여기서는 New reno) Retransmission timer 가 존재하기 때문에 아마 이에 대한 timer 가 호출되어 재전송이 발생되게 됩니다. 하지만 (window 상황에 따라 다르겠지만) 대부분의 경우 (3 duplicate ACKs 후) fast retransmission/recovery mode 가 작동되게 됩니다.
댓글 달기