1. 통신 프로토콜과 필요한 이유

단말기간 통신을 주고 받는 과정에서 데이터의 유실 등의 문제가 발생할 수 있다.

이러한 문제 뿐만 아니라, 의사소통을 위해 사양을 정의해야 하는데, 이렇게 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙 체계를 프로토콜이라고 한다.

대표적인 프로토콜은 TCP와 UDP가 있다.

2. TCP

[TCP의 송수신 처리]

image-20220718201727073

[TCP의 장점과 단점]

TCP는 데이터의 전송과 순서를 보증하므로 전송 순서가 중요한 데이터를 주고받을 때 사용하며, HTTP와 FTP에서 사용되는 프로토콜이다.

전송할 데이터가 크면 TCP는 데이터를 세그먼트(segment)라는 데이터로 작게 나누고, TCP가 다룰 수 있는 헤더(header)를 세그먼트에 붙인다.

TCP는 어플리케이션에서 보낸 스트림 데이터(stream data)를 버퍼에 저장하고, 데이터를 세그먼트로 나누어 송수신한다.

수신한 쪽은 세그먼트를 다시 결합해서 어플리케이션에 전달한다.

image-20220718204257101

보낼 데이터가 작을 때는 각각의 데이터를 TCP 버퍼에 한데 모아 시스템이 최적인 타이밍에 송신한다.

그래서 어플리케이션이 송신을 지시해도 TCP 버퍼가 꽉 차거나 규정 시간이 지나기 전에는 실제로 송신되지 않는다.

결국 어플리케이션이 지시한 타이밍보다 지연되어 송신된다.

또한, 수신 데이터는 송신된 때와 상태가 같지 않다.

데이터를 전송하기 쉽게 결합해서 보내고 그대로 수신한다. 따라서 수신하는 쪽 어플리케이션에는 결합한 데이터를 다시 나누어야 한다.

image-20220718204706663

3. UDP

[UDP의 송수신 처리]

image-20220718210053565

UDP는 쓸데없는 처리를 하지 않는다.

큰 데이터를 작게 나누거나 작은 데이터를 모으지 않는다.

전달과 순서를 보증하지 않는 대신 빠른 속도를 자랑한다.

UDP의 장점과 단점

UDP는 TCP처럼 전달이나 순서를 보증하는 등의 편리한 기능이 없다.

따라서 데이터를 대량으로 전송하려면 어플리케이션에서 데이터 송수신을 관리해야 한다.

전달을 보증하지 않으므로 패킷이 유실돼도 재전송하지 않고 그대로 데이터가 없어지기 때문이다.

또한, 순서도 보증하지 않으므로 전달한 순서가 뒤바뀐 경우에는 어플리케이션에서 순서를 바로잡아야 한다.

이처럼 복잡한 처리를 하지 않는 대신에 UDP는 데이터를 빠르게 전달할 수 있다.

4. 온라인 게임에서 사용하는 프로토콜

TCP와 UDP의 장단점은 아래와 같다.

  TCP UDP
장점 전달을 보증한다. // 순서를 보증한다. // 혼잡을 제어한다. 처리가 단순하고 전송 속도가 빠르다.
단점 처리가 복잡하므로 전송 속도가 느리다. 전달을 보증하지 않는다. // 순서를 보증하지 않는다.

온라인 게임에서는 중단없이 플레이가 가능해야 하며, 속도가 빨라야하기 때문에 UDP를 사용한다.

댓글남기기