[네트워크] UDP란(vs TCP)?

Yoon Uk·2023년 4월 19일
0

네트워크

목록 보기
13/34
post-thumbnail

UDP는 User Datagram Protocol의 약자로, 인터넷 상에서 데이터를 주고받는 방식 중 하나입니다.
UDP는 TCP와 달리 연결 지향적이지 않고, 신뢰성이 보장되지 않습니다.
즉, UDP는 데이터를 보내기 전에 수신자와 연결을 맺거나, 데이터가 정확하고 순서대로 도착했는지 확인하지 않습니다. 그렇기 때문에 TCP보다 속도가 빠르고 오버헤드가 적습니다.

UDP의 장점과 단점

장점

UDP의 장점은 실시간성이 높은 서비스에 적합하다는 것입니다.
예를 들어, 음성 통화나 비디오 스트리밍과 같은 서비스에서는 데이터가 조금 손실되더라도 전체적인 품질에 큰 영향을 미치지 않습니다.
반면에 TCP는 데이터가 손실되면 재전송을 요청하고, 순서를 맞추기 위해 버퍼링을 하기 때문에 지연이 발생할 수 있습니다.

단점

UDP의 단점은 신뢰성이 낮다는 것입니다.
UDP는 데이터를 보낸 후에 수신 여부를 확인하지 않기 때문에, 데이터가 유실되거나 손상되거나 순서가 바뀔 수 있습니다. 또한 UDP는 흐름 제어나 혼잡 제어와 같은 기능을 제공하지 않기 때문에, 네트워크 상황에 따라 데이터 전송 속도를 조절할 수 없습니다.
따라서 UDP는 정확하고 안전한 데이터 전송이 필요한 서비스에는 적합하지 않습니다.

체크섬(Checksum)

TCP와 마찬가지로 UDP 또한 데이터를 전송할 때 패킷(packet)이라는 단위로 나누어 보내는데, 이때 패킷에는 헤더(header)와 데이터(data)라는 두 부분으로 구성됩니다.
헤더에는 패킷의 출발지와 목적지, 길이, 순서 등의 정보가 들어있고, 데이터에는 실제로 전송하고자 하는 내용이 들어있습니다.

하지만 UDP는 TCP와 달리 패킷의 도착 여부나 순서를 확인하지 않기 때문에, 패킷이 손실되거나 순서가 바뀌거나 중복되거나 손상되는 등의 오류가 발생할 수 있습니다.
이러한 오류를 검출하기 위해 UDP는 헤더에 체크섬(checksum)이라는 값을 추가합니다.
체크섬은 패킷의 헤더와 데이터를 모두 더한 후 1의 보수를 취한 값으로, 수신 측에서도 같은 방식으로 체크섬을 계산하여 비교합니다. 만약 체크섬이 일치하지 않으면 패킷에 오류가 발생했다고 판단하고 해당 패킷을 버립니다.

체크섬은 UDP의 오류 검출 기능을 제공하는 유일한 방법입니다.
하지만 체크섬은 간단한 덧셈과 반전 연산으로 이루어져 있기 때문에, 패킷의 일부분이 바뀌어도 체크섬이 같게 나올 수 있는 경우가 있습니다.
예를 들어, 패킷의 데이터가 0100 0001과 0010 0001로 구성되어 있고, 체크섬이 1101 1110일 때, 만약 데이터가 0100 0011과 0010 0000으로 바뀌면 체크섬은 여전히 1101 1110이 됩니다.

데이터: 0100 0001, 0010 0001
체크섬: 1101 1110

변환된 데이터: 0100 0011, 0010 0000
체크섬: 1101 1110
=> 데이터가 변환 되기 전, 후의 체크섬 결과가 같다
=> 오류 검출이 되지 않았다.

따라서 체크섬은 오류 검출의 확실성을 보장하지 못하며, 보다 정확한 오류 검출을 위해서는 응용 계층에서 추가적인 방법을 사용해야 합니다.

UDP의 체크섬은 간단하고 빠르게 오류 검출을 할 수 있는 장점이 있지만, 위의 경우와 같이 완벽하지 않다는 단점도 있습니다.

0개의 댓글