본문 바로가기
게임 서버/네트워크

[c#/네트워크] TCP와 UDP 차이

by 얘리밍 2022. 12. 22.
320x100
728x90

 

TCP와 UDP의 차이에 대해 알아보자

 

 

 

📌 TCP와 UDP 차이 

프로토콜 종류 연결 지향성 신뢰성 속도 특징
TCP 연결형 서비스  좋음 느림 1) 연결을 위해 할당되는
     논리적인 경로가 있다.

2) 전송 순서가 보장된다.

3) 분실이 일어나면 책임지고
    다시 전송한다(신뢰성 👍)

4) 물건을 주고 받을 상황이 아니면
    일부만 보낸다(흐름/혼잡 제어)

5) 고려할 것이 많으니 속도가 느리다
UDP 비연결형 서비스 나쁨  빠름 1) 연결이라는 개념이 없다.

2) 전송 순서가 보장되지 않는다

3) 분실에 대한 책임이 없다(신뢰성 👎)

4) 일단 보내고 생각한다

5) 단순하기 때문에 속도가 빠르다

 

 

 

데이터 전송 보장 및 순서 보장을 위해서는 tcp를 주로 사용한다.

tcp3way handshake 방식이다.

 

 

 

🔎 3-way-handshake 

송신 A쪽에서 connect request를 보내면, 
수신 B 쪽에서 Ok 신호를 보냄 


이 때, 보낸 Ok 신호가 잘 갔는 지 의문이 생길 수 있다 
그 때 송신한 A가 잘 받았다는 신호를 전달한다. 


이렇게 세 번 전송하는 것이 3-way handshake이다

 

 

 

🔎 연결이 끊기는 경우 2가지

 

  • 응답이 안오는 경우

B에서 Ok 신호를 보내고 응답이 없어서 다시 한번 Ok 신호를 보내도 답이 없다면

이 상황을 연결이 끊어졌다 라고 보는 것이다. 

 

  • Disconncect를 사용하는 경우

A 쪽에서 전송을 끊는 경우 

 

 

👉 연결이 되고 끊어지고를 프로그램이 정확히 알 수 있다. 

 

 

 

 

🔎 송,수신 보장 

 

송신 쪽에서 4개의 패킷을 보낸다 하자.

수신 쪽에서 어떤 순서로 왔는 지 알 수 없기 때문에 

1,2,3,4 라는 순서를 적어 보낸다. 

 

만약 수신 B가 1,2,4만 받았다면 

3번을 받지 못했다고 송신 A에게 알려준다. 

 

👉단점 : 지연 시간 김

 

 

 

 

udp 

위 3-way handshake는 3번을 거치기 때문에 3배 느리다는 단점이 있다. 

하지만 게임에서는 반응이 빨라야 하므로 UDP를 쓰고 싶어 한다. (지연 시간 짧음)

but.. 순서 보장이 안됨. 데이터 유실 가능성 있음 

 

 

 

 

 

⭐이를 해결하기 위해 게임 개발자들이 만든 것이 reliable udp 

tcp 비효율적인 속도 면을 향상시키고, UDP의 불안정성을 해결한다. 

 

 

728x90
반응형