320x100
728x90
TCP와 UDP의 차이에 대해 알아보자
📌 TCP와 UDP 차이
프로토콜 종류 | 연결 지향성 | 신뢰성 | 속도 | 특징 |
TCP | 연결형 서비스 | 좋음 | 느림 | 1) 연결을 위해 할당되는 논리적인 경로가 있다. 2) 전송 순서가 보장된다. 3) 분실이 일어나면 책임지고 다시 전송한다(신뢰성 👍) 4) 물건을 주고 받을 상황이 아니면 일부만 보낸다(흐름/혼잡 제어) 5) 고려할 것이 많으니 속도가 느리다 |
UDP | 비연결형 서비스 | 나쁨 | 빠름 | 1) 연결이라는 개념이 없다. 2) 전송 순서가 보장되지 않는다. 3) 분실에 대한 책임이 없다(신뢰성 👎) 4) 일단 보내고 생각한다 5) 단순하기 때문에 속도가 빠르다 |
데이터 전송 보장 및 순서 보장을 위해서는 tcp를 주로 사용한다.
tcp는 3way 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
반응형
'게임 서버 > 네트워크' 카테고리의 다른 글
[c#/네트워크] listener 클래스를 활용한 비동기 소켓 프로그래밍 (7) | 2022.12.13 |
---|---|
[c#/네트워크] 소켓 프로그래밍 (0) | 2022.12.12 |
[c#/유니티] 네트워크 기초 - 스위치와 라우터 (0) | 2022.12.12 |