본문 바로가기
네트워크/컴퓨터네트워크

Error Control

by HJINHA 2021. 4. 6.

- Error Control

  • TCPchecksum, acknowledgement, time-out 세 가지 도구를 이용해 Error Control을 함으로써 안정성을 보장한다.
  • ACK에 대한 ACK은 없다.
  • TCP는 패킷 순서가 바뀌지 않도록 보장한다. 받는 쪽은 고민할 필요X

- Normal Operation (Ack을 보내는 normal operation)

  • Rule: Ack 수를 줄이려는 룰
  • Rule1: sending 버퍼에 보낼 데이터가 있으면, Ack과 함께 보낸다.
  • Rule2: 함께 보낼 데이터가 없으면 일정 시간 기다림, 기다려도 데이터가 없으면 Ack을 보냄
  • Rule3: 기다리는 중에 패킷이 하나 더 오면 그냥 바로 Ack을 보냄. (패킷 두개당 Ack 하나는 보내자)

 

- Lost Segment

  • Rule4: 일부 패킷이 사라진 채로 왔을 경우 Ack을 바로 보냄 (다시 보내라고) ex)701
  • Rule5: 잃어버렸던 패킷이 도착하면 바로 Ack을 보냄 (가진 것 이후 번호로) ex)901
  • 보내는 패킷마다 출발 시간을 가지는데, time-out될 때까지 해당 Ack이 도착하지 않으면 재전송

- Fast retransmission

  • time-out 전에, 세 개의 중복 Ack이 들어오면(Third duplicate) 해당 패킷이 제대로 전송되지 않았다고 간주하고 재전송

 

- Lost acknowledgement

  • Ack이 돌아오지 않은 상태에서도 window 사이즈만큼 일단 패킷을 보내는데, 시간 안에 ack이 돌아오지 않으면 재전송한다.
  • 만약 상대가 보낸 Ack이 중간에 사라져도, 해당 시간 안에 보낸 다른 패킷들에 대한 Ack이 돌아온다면 이전 데이터가 무사히 도착했음을 확인할 수 있다.
  • Cumulative ack일 때 가능하다. Ack이 하나 없어져도 큰 문제가 되지 않고, 그냥 그 다음 Ack을 보내면 된다.
  • Cumulative ack의 장점
    1. Ack의 개수를 줄일 수 있다.
    2. fast retransmission 구현이 쉽다.

 

- Lost acknowledgement corrected by resending a segment

  • Rule6: 보낸 패킷에 대한 Ack이 분실되고, time-out 되어 재전송하게 되면 데이터를 받는 쪽은 중복된 패킷을 받게 되는데, 그때도 해당 패킷에 대해 Ack을 바로 보낸다.

 

- Lost acknowlegment가 잘 처리되지 않으면 Deadlock이 발생할 수 있다.

  • 송신측에서 데이터를 보내고 수신 측에서 Ack rwnd=0를 보낸 이후에 수신 버퍼에 자리가 생기면 rwnd=k를 보내게 되는데, Ack이 사라지면 수신측은 데이터가 오기를, 송신측은 rwnd0이 아닌 값이 오기를 무한히 기다리는 deadlock이 발생한다.
  • 해결 방법: Persistance timer(영속 타이머) - 타이머가 만료되면, rwnd=0이 아닌 ack을 받아야 하는 쪽에서 probe segment(작은 사이즈의 데이터)를 보낸다. (찔러보기)

'네트워크 > 컴퓨터네트워크' 카테고리의 다른 글

TCP options  (0) 2021.06.28
TCP  (0) 2021.06.28
Silly Window Syndrome / SYN Flooding  (0) 2021.04.06
TCP 확인응답  (0) 2021.03.23
TCP  (0) 2021.03.23

댓글