time-wait

    Time-wait은 왜 발생하는가?

    주로 두가지 이유가 존재한다. 1) client가 보낸 요청이 유실되었을 때를 대비하기 위해서이다. - client 입장에서는 마지막으로 ack를 보내면 클라이언트가 할 일은 모두 종료된다. - 그렇지만, 이때 중간에 마지막 ack K+1 이 없어지면 상황은 복잡해진다. => TCP는 신뢰성 보장을 위해서 데이터를 보내면 응답을 받아야 되기 때문에 일정 시간 지나도 응답이 오지 않으 면 신뢰성 보장을 위해 다시 재전송한다. - 마지막 ACK가 유실되었다는 것은 server가 보낸 FIN에 대한 ACK이므로 서버는 FIN을 다시 보내게 된다 => 사실 서버 입장에서는 서버 자신이 보낸 FIN이 없어진건지, 상대방이 보낸 ACK이 없어진 것인지 구별이 불가하다. # 이 상황에서 client가 기다리지 않고 ..