Game Tech Blog

CS - TCP, UDP 본문

IT Study/CS

CS - TCP, UDP

jonghow 2021. 1. 31. 22:31
반응형

- TCP, UDP = OSI 7 Layer 의 전송 계층에서  사용되는 프로토콜 (응표세전네데물..)

 

- TCP ( Transmission Control Protocol )

-> 인터넷에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜

 

[TCP 특징]

1. 연결 지향 방식으로 패킷 교환 방식을 사용

2. 3-way handshaking 과정을 통해 연결, 4-way handshaking을 통해 해제

3. 흐름 제어, 혼잡 제어

4. 높은 신뢰성을 보장

5. UDP 보다 속도가 낮음

6. 전이중(Full-Duplex), 점대점 (point to Point) 방식

 

TCP는 연결 지향 방식으로 패킷을 전송하는 논리적 경로를 배정.

3-way handshaking과정은 목적지와 수신지를 확실히 하여 정확한 전송을 보장, 세션을 수립하는 과정을 의미.

이 과정과 데이터 흐름제어, 혼잡제어등으로 인해 UDP 보다 속도가 느리다.

TCP는 전송의 중요도가 ( 연속성 < 신뢰성 ) 일때 사용한다.

 

[TCP 서버 특징]

1. 서버 소켓은 연결만을 담당.

2. 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용

3. 서버와 클라는 1:1 매칭

4. 스트림 전송으로 전송 데이터의 크기가 무제한

5. 패킷에 대한 응답을 해야해서 (시간 지연, CPU 소모) 성능이 낮다.

6. Streaming 서비스에 불리 (손실된 경우 패킷 재전송 요청, 응답을 받아야하기 때문에, 실시간 전송이 더 중요한 스트리밍 서비스에는 부적합 하다.)

 

* TCP의 패킷 데이터 추적 관리 방법

데이터는 패킷단위로 나누어 목적지로 전송된다.

A,B,C 패킷으로 구분되어 목적지로 배송되는데, A,C 는 순차적으로 이동하면서 목적지로 도착했고, B전송되다가 소실되었다고 가정하면 A,C 만 보고 전부 왔다고 판단할 수 있다. 그래서 A,B,C에 순차적으로 1,2,3 번 번호를 부여하고 도착지점에서 이 번호에 따라 다시 재조립을한다. 이러한 방식으로 재전송 요청을 할지에 대해 결정한다.

 

- UDP ( User DataGram  Protocol )

-> 데이터를 데이터 그램 단위로 처리하는 프로토콜

 

TCP 와 달리 비연결형 프로토콜이며, 연결을 위해 할당하는 논리적 경로가 없다.

그렇기 때문에 패킷은 각각 다른 경로로 전송되고, 패킷 전송 순서 등을 맞추는 제어 등의 기능은 없다.

서로 데이터에 대해 독립적으로 처리, 이것을 UDP 라고 한다.

 

[UDP 특징]

1. 비연결형 서비스, 데이터 그램 방식을 제공

2. 정보를 주고 받을때, 정보를 보내거나 받는다는 신호 절차가 없음.

3. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 컴출

4. 패킷 소실등에 대해 재전송을 요청하지 않으므로 신뢰성이 낮다.

5. 여러 신뢰성 보장 수행과정들이 수행되지 않으니 TCP보다 빠르다.

 

패킷 전송 경로부터 서로 다른 독립적인 경로를 가지고 ,재조립을 위한 넘버링, 흐름제어,혼잡제어와 같은 기능도 처리하지 않기에 TCP 보다 속도가 빠르고, 네트워크 부하가 적으나, 신뢰성이 낮다.

그러므로 신뢰성 보다 속도(연속성)가 중요한 스트리밍 서비스에 적합.

 

주로 게임에선 응답이 빨라야하는 FPS 게임등이 udp 서버를 사용한다고 한다.

그런데, 이마저도 rudp 라던지, 그냥 tcp를 사용하는 케이스도 있다고한다.

 

[UDP 서버 특징]

1. UDP에서는 연결 자체가 X(connect 함수 불필요) 서버 소켓, 클라 소켓의 구분이 X

2. 소켓 대신 IP를 기반으로 데이터 전송

3. 서버, 클라는 1 : 1, 1 : N , N : M 으로 연결 가능

4. 데이터 그램 (메시지) 단위로 전송, 그 크기는 65535 바이트로 크기가 초과하면 잘라서 보낸다.

5. 흐름제어가 없어서 패킷이 제대로 전송되어었는데, 오류가 없는지 확인 불가

6. UDP는 전송의 중요도가 ( 연속성 > 신뢰성 ) 일때 사용한다.

 

* 흐름 제어 : 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지,

송신측에서 수신자가 처리할 수 없는 업무량을 주면 문제가 발생하기 때문

 

* 혼잡 제어 : 네트워크 내, 패킷 수가 넘치게 증가하지 않도록 방지, 정보의 소통량이 과할때, 패킷 전송량을 줄여 붕괴현상을 방지

 

** 요즘 실무에서는 스트리밍과 같은 실시간 서비스에서도 TCP 통신이 주로 사용된다고한다.

 

 

 

 

참고할 블로그

 

mangkyu.tistory.com/15

[허가]

 

[TCP/UDP] TCP와 UDP의 특징과 차이

오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보려고 합니다. 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의

mangkyu.tistory.com

 

반응형
Comments