IT 지식/네트워크(Network)

컴퓨터 네트워크 - 신뢰성 있는 데이터 전송 (RDT)

나아가는중 2021. 12. 1. 22:39
반응형

신뢰성 있는 데이터 전송

신뢰성 있는 데이터 전송은 네트워크 중요 10가지 토픽 중 한 가지일 정도로 중요하게 여겨진다. 이는 Data Link layer, Transport layer, Application layer에서 구현된다. 이 중 Transport layer의 주 역할이 신뢰성 있는 데이터 전송이다.

 

신뢰성 있는 데이터 전송을 위해서는 수신된 데이터의 오류 복구 기능이 필요하다. 데이터 전달 중 데이터 손상이 발생하여 송신 측에서 보낸 데이터의 checksum과 수신 측에서 계산한 checksum이 같지 않을 수 있다(bit error). 또한, 송신 측은 패킷을 전송하였지만 전달 과정에서 손실(loss)이 발생하여 수신 측까지 전달되지 않을 수 있다. 이러한 상황들에서 복구하여 정상적으로 패킷이 전달되면 신뢰성 있는 데이터 전송이라 할 수 있다.

 

RDT (Reliable Data Transfer)

RDT 1.0

비트 에러나 패킷 손실이 없는 완벽한 채널을 가정한다.

 

이경우 에러가 발생하지 않아 에러 복구에 관한 특별한 기능이 필요 없다.

 

RDT 2.0

비트 에러는 날 수 있다고 가정하지만, 패킷 손실은 발생하지 않는다 가정한다.

 

이 경우 ACK, NAK를 사용하여 오류 복구를 할 수 있다. 비트 에러 검출을 위해서는 checksum을 사용한다. 에러 검출 여부에 따라 수신 측은 ACKs(ACKnowledgements 정상 수신) 혹은 NAKs(Negative ACKnowledgements 비정상 수신)를 송신 측에 보낸다. 송신 측은 NAK를 수신 시 패킷을 재전송한다.

 

ACK, NAK는 stop-and-wait protocol이다. Stop-and-wait는 송신 측의 동작으로 송신 측이 하나의 패킷을 보내면 수신 측의 ACK 혹은 NAK응답이 올 때까지 대기한다.

 

RDT 2.1

RDT 2.0의 ACK나 NAK도 에러가 발생할 수 있다는 문제를 해결한다.

 

송신 측은 비트 에러가 발생한(garbled)된 ACK나 NAK 수신 시에 패킷을 재전송한다. 하지만 수신 측은 해당 패킷이 재전송인지, 동일한 형태의 새로운 패킷인지 구별할 수 없다. 데이터 업데이트 등과 같은 요청에서는 재전송인지, 동일한 형태의 새로운 패킷인지 여부가 중요하게 작용한다.

 

해결책으로 패킷에 1bit sequence number를 붙여 전송한다. 새로운 패킷들은 0과 1로 번갈아가며 sequence number를 붙여 보내 수신 측에서는 재전송된 것인지 동일한 형태의 새로운 패킷인지 구별할 수 있다.

 

RDT 2.2

RDT 2.1의 ACK, NAK대신 ACK 0, ACK1을 사용한다.

 

RDT 2.1에서 ACK나 NAK에서 에러가 발생할 수 있어 패킷에 1bit sequence number를 붙여 전송하였는데, 이를 ACK에 명시적으로 붙여 사용한다. 패킷 1을 정상 수신하면 ACK1, 패킷 0을 정상 수신하면 ACK0으로 응답한다.

 

RDT 2.2에서는 동일한 ACK가 두 번 왔을 경우 비트 에러가 발생하였다 판단하고 에러가 발생한 패킷을 재전송한다. 정상적인 상황에서는 ACK 0을 받으면 다음에는 ACK 1을 받아야 한다.

 

RDT 3.0

비트 에러 뿐만 아니라 패킷 손실도 발생한다 가정한다.

 

송신 측은 전송한 데이터 패킷 혹은 ACK가 중간에 손실이 되면 수신 측으로부터 해당 패킷에 대한 ACK를 받을 수 없다. ACK는 stop-and-wait 방식으로 ACK가 오지 않으면 송신 측은 다음 패킷을 전송할 수 없다.

 

해결 방법으로 일정한 시간 내에 ACK가 오지 않으면 재전송한다. 여기서 일정한 시간이라 함은 왕복시간보다는 약간 큰 시간으로 countdowm timer라 한다.

 

RDT 3.0이 완성된 형태이다. 하지만 stop-and-wait 방식을 사용하므로 성능은 좋지 않다. 실제 데이터 전송에 걸리는 시간은 길지 않으나 대기하는 시간이 길다.

 

 

 

 

반응형