[Study] 네트워크 스터디 3회차 : UDP와 신뢰적 데이터 전송의 원리

이 포스팅은 예상 질문과 그에 대한 제 답변으로, 오류가 있다면 알려주세요!

UDP


질문과 답변

UDP에 대해 설명해주세요.

UDP(User Datagram Protocol)는 전송 계층의 프로토콜 중 하나입니다.

TCP와는 달리 데이터 전송 시 신뢰성 보다는 속도를 중시하며, 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 비연결성 프로토콜입니다.

서버와 클라이언트가 1:1, 1:N, N:M으로 다양히 연결 가능하며, 속도가 빠르지만 데이터가 유실될 수 있고, 패킷의 순서가 보장되지 않아 데이터 전송의 신뢰성이 없으며, 패킷이 유실, 변조되는 경우 재전송 하지 않아 데이터의 무결성이 떨어집니다. (best-effort 전송을 따릅니다.)

이로 인해, 신뢰성보다는 연속성이 중요한 실시간 스트리밍, 음성 통화, 게임 등에서 자주 사용됩니다.

단, 오류 검출 기능을 아예 지원하지 않는 것은 아니고, UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출합니다.

UDP는 데이터그램 방식으로 비연결형 서비스를 제공합니다. 데이터그램 방식이란, 데이터 전송 전 송/수신자간의 가상회선(논리적 경로)을 설정하지 않고 패킷들이 각각 독립적으로 전송되는 방식입니다. 따라서 데이터 경계를 구분합니다. (데이터그램 메시지 단위로 전송)

UDP 체크섬에 대해 설명해주세요.

UDP 프로토콜은 데이터 전송 시 데이터 무결성을 위해 체크섬 기능을 제공합니다.

체크섬은 전송할 데이터의 비트에 일정한 규칙을 적용하여 생성된 값으로, 데이터 전송 중 데이터가 손상되지 않았는지 검증하기 위해 사용됩니다. UDP 체크섬은 송신 측에서 계산되어 수신 측에서 비교되며, 만약 오류가 발생한 경우에는 데이터 패킷이 재전송됩니다. 하지만, 체크섬 기능은 데이터 무결성을 보장하기 위한 최소한의 검증 방식이며, 보안을 위한 암호화 기능은 제공하지 않습니다.

단, TCP와 달리 UDP는 오류가 감지되면 자동으로 데이터를 재전송하지 않습니다. 전송 중에 오류가 발생하면 오류를 감지하고 데이터를 다시 보낼지 여부를 결정하는 것은 응용 계층의 몫입니다.

신뢰적 데이터 전송의 원리


질문과 답변

전송 후 대기 프로토콜이 뭘까요?

Stop-and-Wait 프로토콜로 전송 계층에서 송신자와 수신자 사이의 신뢰성 있는 데이터 전송을 보장하기 위해 사용되며, 이름 그대로 데이터 패킷을 하나씩 전송하고, 수신자는 각 패킷이 제대로 도착했는지 확인한 후에 다음 패킷을 요청합니다. 이러한 방식으로 패킷 전송 중 오류가 발생하면, 수신자는 재전송을 요청합니다.

간단하고 구현하기 쉬우며, 신뢰성 있는 데이터 전송이 필요한 상황에서 사용됩니다. 그러나 전송 속도가 느리고, 대역폭을 비효율적으로 사용한다는 단점이 있습니다.

파이프라인 프로토콜이 뭘까요?

네트워크상에서 데이터 전송 시 충돌을 최소화하면서 효율적인 데이터 전송을 가능하게 하는 프로토콜입니다. Stop-and-wait 방식의 프로토콜에서는 패킷 전송 후 수신측으로부터 ACK 신호를 받아야만 다음 패킷을 전송할 수 있으나, 파이프라인 프로토콜에서는 여러 개의 패킷이 동시에 전송되어 중간에 대기하지 않고 전송됩니다. 이를 위해 수신측에서는 수신 가능한 최대 데이터 양을 선언하여 전송 측에서는 해당 양만큼의 데이터를 전송합니다. 이를 통해 전송 지연 시간을 최소화하고 대역폭 효율을 향상시킬 수 있습니다.

슬라이딩 윈도우가 뭘까요?

슬라이딩 윈도우는 통신에서 사용되는 프로토콜에서 흔히 사용되는 기법 중 하나로, 송신 측과 수신 측 간의 효율적인 데이터 전송을 위해 사용됩니다.

송신자가 일련의 데이터를 한 번에 보내고 수신자가 해당 데이터를 모두 받았는지 여부를 확인하는 방식입니다.

송신자와 수신자 간에 정해진 크기의 윈도우가 있으며, 송신자는 윈도우 크기 내에서 데이터를 전송할 수 있습니다. 수신 측은 송신 측으로부터 전송받은 데이터에 대한 확인 응답(Acknowledgement)을 보내며, 이 때 수신 측은 윈도우 크기를 조절하여 데이터를 안정적으로 수신할 수 있습니다. 이를 통해 데이터 전송 시간을 단축하고, 대역폭을 효과적으로 활용할 수 있습니다.

추가로 전송되는 데이터에 일련번호를 할당하고, 수신자는 일련번호를 기반으로 전송되지 않은 데이터를 다시 요청합니다.

Go Back N에 대해 설명해주세요.

네트워크에서 일반적으로 사용되는 오류 복구 기법 중 하나입니다. 송신 측에서 일정 크기의 윈도우를 유지하고, 이 윈도우 안에 있는 모든 프레임을 일괄적으로 전송하고, 수신 측에서는 윈도우 안에 있는 프레임들을 정상적으로 수신했는지 확인합니다.

만약 수신 측에서 잘못된 프레임을 받은 경우 송신 측에 해당 프레임부터 다시 전송을 요청하는 방식으로 오류를 복구합니다. 이때 송신 측에서는 이전에 전송한 모든 프레임을 다시 전송해야 하므로, 비효율적인 경우가 있을 수 있습니다.

Selective Repeat에 대해 설명해주세요.

네트워크에서 오류가 발생한 데이터 패킷을 개별적으로 재전송하는 기법입니다.

이름 그대로 전체 데이터를 재전송하지 않고, 손상된 부분만 다시 전송함으로써 대역폭을 절약하면서도 효율적인 데이터 전송을 가능하게 합니다.

수신 측에서 이미 수신한 패킷을 저장하고 있으며, 오류가 발생한 경우 해당 패킷을 재전송 요청하는 방식으로 구현되며, 데이터 전송 시간을 줄이고 대역폭을 절약할 수 있다는 이점이 있습니다.


© 2022. All rights reserved.

Powered by Hydejack v9.1.6