네트워크 문제 8
1. TCP sequence number 와 Ack sequence number는 어떻게 정해지나요?
-
TCP sequence number : sender가 보내는 segment의 첫 번째 byte stream number, 받은 ACK sequence number. TCP는 segment 단위로 나뉘게 되는데 각각의 첫 번째 byte number가 TCP sequence number 이다.
-
ACK sequence number : receiver 입장에서 다음에 받아야할 sequence number
2. cumulative ack 과 delayed ack 을 설명하세요
cumulative ack (누적 응답) : 윈도우 사이즈를 두어 패킷을 한 번에 보내고, ACK number 이전의 패킷이 무사히 도착했다는 것을 보장한다. 바로 이전 바이트까지 도착했다는 의미가 있다.
delayed ACK : 500ms를 기다리고 다른 Segment가 안 오면 ACK를 보낸다. 데이터가 없이 ACK만 있는 패킷 전송을 피하기 위해(reduce ACK-only response) 데이터가 있는 패킷에 piggyback 한다. 만일 패킷이 순서에 벗어났다면 사용하지 않음. 따라서 cumulative ack을 전제로 하기 때문에 delayed ack을 쓸 수 있다.
3. TCP sender는 packet loss를 어떻게 감지하고 또 어떻게 복구하나요?
ACK이 도착하지 않으면 / NACK이 도착하면 retransmission
- Ack loss
- prematrue time out (time out 이후에 ack이 도착)
- fast retransmission : 3 duplicate ack. receiver는 지금까지 받은 packet seq #를 ack으로 계속 보냄.
4. TCP는 SampleRTT 를 측정하는 동안은 retransmission을 무시합니다. 왜 그럴까요?
retransmission 이후 ACK 이 premature timeout 으로 인한 ACK일 수도 있다. 그 다음에 도착하는 ACK이 retransmission으로 인한 ACK 인지 확신 할 수 없기 때문에 RTT를 계산할 수 없다.
5. TCP는 3개의 중복 ACK을 받으면 fast retransmit을 합니다. 처음 중복된 ACK을 왜 버리지 않나요? 왜 timeout을 기다리지 않나요?
처음 중복된 ack을 받았을 땐 packet loss인지 out of order 인지 판단할 수 없다.
- out of order 일 떄 duplicate ack
- premature timeout 일 때 duplicate ack
위의 두 가지 경우 까지 중복된 ack이 올 수 있지만 그 이상은 packet loss라고 판단할 수 있다.
Subscribe to Mem Learning
Get the latest posts delivered right to your inbox