[컴퓨터네트워크] 4강 - rdt protocol, acks, naks

seo young park·2022년 3월 13일
0
post-thumbnail

💡 해당 포스트는 kocw 이석복 교수님의 컴퓨터 네트워크 강의를 듣고 작성하였습니다.

Reliable Data Transfer protocol

개요: tcp는 reliable 데이터를 제공하기 위해서, (unreliable 환경(underlying channel)에서 발생하는) message errormessage loss를 처리한다.
이 때 어떤 메카니즘을 사용하는가.

let's build rdt protocol.
하나 보내고 100%로 받았는 지 확인하는 식으로 진행해본다.

상황 1. error 발생

  • error dectection
    • add checksum bits(에러 판단장치 부착)
  • feedback (ACKS,NAKS)
    • receiver가 error 발생 유무를 sender에게 피드백
    • acknowledgements (ACKs)
    • negative acknowledgemendts (NAKs)
  • retransmission 재전송

1.1. 피드백에서 error 발생

  • ACK/NAK 등 피드백에서 에러가 발생한다면, 재전송을 한다.

  • 중복패킷 관리 : handling duplicate packets

    • 패킷에 0과 1 번호를 붙여 중복 여부를 구분한다.
      sender add seq number to each packet

    • 피드백 에러가 발생하면 재전송한다.
      sender retransmits current packet

    • receiver가 트랙킹해서 중복이 발생하면 버린다
      receiver discards duplicate packet

1.2. packet error 요약

mechanisms

  • 에러 감지 error detection
  • 피드백 feedback
  • 재전송 retransmission
  • 패킷 번호 부여 sequence #

sender

  • 패킷 번호 부여
    seq# added to pkt

  • 피드백 에러 확인
    must check if received ack/nak corrupted

  • 피드백 에러가 발생했거나 피드백이 nak일 때 재전송
    retransmit on nak or corrupted feedback

receiver

  • 전달받은 패킷 중복 여부 확인
    must check if received packet is duplicate
  • 패킷이 손상되었다면 NAKs 전송
    sand NAKs if received packet is corrupted

1.3. a nak-free protocal(using ACKs only)

receiver는 seq#와 ack만 사용하는 방식.
예를 들어 패킷(1) 받을 때 에러나면, receiver는 naks 대신에 ack(0)을 보낸다.
sender가 에러를 인지하고 다시 패킷(1)을 재전송한다.

상황 2. loss 발생

유실이 발생하면,
recevier가 피드백을 보낼 수 없고 sender가 상황을 인지할 수 없게 된다.

  • timer
    sender는 패킷을 보내고 일정시간이 지나면 패킷을 재전송한다.
    이 때 시간은 적당히 맞춘다.(sender waits 'reasonable' amoount of time for ack)

    • 타이머가 짧으면
      • 장점 : 유실이 발생했을 때 회복이 빠름
      • 단점 : 중복패킷이 많아지면서 네트워크 과부하
    • 타이머가 길면
      • 장점 : 네트워크 과부화는 막음
      • 단점 : 유실이 발생했을 때 회복이 느림

Reliable Data Transfer protocol 원리 요약

  • unreliable 환경에서 발생하는 일
    • packet error
    • packet loss
  • packet error를 다루는 메커니즘
    • 에러 감지 error detection
    • 피드백 feedback
    • 재전송 retransmission
    • 패킷 번호 부여 sequence #
  • packet loss를 다루는 메커니즘
    • timeout

다음 주

실제 data transfer protocol은 훨씬 복잡하다.
현재 조건으로는, 하나의 한 패킷 밖에 못 보내고 피드백이 올동안 네트워크를 활용하지 않는다.

피드백을 기다리지 않고 패킷 쏟아 붓는다(pipelined protocols). 이 때, 어떻게 시퀀스넘버 및 유실 관리하고 reliable한 전송을 할 수 있는 지 배울 것이다.

0개의 댓글