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

[컴퓨터네트워크] 3. Transport Layer (3)

by leziwn.cs 2023. 10. 21.
Principles of reliable data transfer

Principles of reliable data transfer

Application layer 입장에서 reliable channel에서의 전송과 같은 reliable data transfer을 하려면,

Transport layer에서 buffer overflow로 인한 문제를 해결해야 한다.

 

 

Summary of reliable data transfer mechanism

▶ Checksum

: Bit error detection

 

▶ ACK (Acknowledgement, Negative acknowledgement)

: "(n-1)까지 잘 받았어. 이제 n번째를 보내줘."

  • UDP는 checksum을 통한 error detection만을 하기 때문에 보내면 끝이지만, reliable data transfer에서는 error recovery도 해야 하기 때문에, receiver가 잘 받았는지 받지 못했는지 확인하여 재전송하기 위해서는, "잘 받았어", "받지 못했어" 응답이 필요하다.
  • Cumulative ACK: "여기까지" 잘 받았어.
    Individual ACK: "이걸" 잘 받았어.

 

▶ Sequence number

: "이제 n번째 데이터를 보낼게."

Packet loss인 경우에는 데이터를 다시 보내면 정상적으로 작동하지만, 만약 ACK loss인 경우에는 같은 데이터를 두 번 받게 된다. 이러한 데이터를 구별하기 위해서는 sequence number가 필요하다.

  • 파이프라이닝 -- 파이프라이닝 규모가 크면, unique identification을 위해서 sequence number의 규모가 커져야 한다.

 

▶ Timer

: "난 데이터를 보냈는데 ACK이 오지 않네. 데이터를 다시 보내야겠다."

Case1) Packet loss: 진짜 데이터가 사라진 경우

Case2) ACK loss: receiver가 데이터를 받았는데, ACK이 사라진 경우 --> sequence number 필요

  • premautre timeout, slow reaction 모두를 방지하기 위해서는 적절한 timeout 시간을 설정할 필요가 있다.

 

▶ Piplelining, Window

  • Window (규모): 수신자가 메시지를 수신하고 버퍼링하는 능력, 네트워크의 혼잡 정도에 따라 결정된다.