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 (규모): 수신자가 메시지를 수신하고 버퍼링하는 능력, 네트워크의 혼잡 정도에 따라 결정된다.
'Computer Network > 컴퓨터네트워크' 카테고리의 다른 글
| [컴퓨터네트워크] 3. Transport Layer (5) (1) | 2023.10.21 |
|---|---|
| [컴퓨터네트워크] 3. Transport Layer (4) (1) | 2023.10.21 |
| [컴퓨터네트워크] 3. Transport Layer (2) (0) | 2023.10.21 |
| [컴퓨터네트워크] 3. Transport Layer (1) (0) | 2023.10.12 |
| [컴퓨터네트워크] 2. Application Layer (8) (1) | 2023.10.08 |