Sam Jansen의 gafferongames.com에 대한 의견은 다음과 같습니다.
게임 개발자가 아닌 네트워크 연구원으로 말하면 TCP와 UDP를 함께 사용하지 않는다는 결론은 다소 강력합니다. TCP는 너무 많은 데이터를 보내는 경우에만 패킷 손실이 발생합니다. 어떤 방식 으로든 보내는 UDP 데이터와 같습니다. 차이점은 TCP 전송 속도를 직접 제어 할 수 없다는 점입니다.
안정적인 데이터를 전송해야하고 재전송 및 안정적인 프로토콜 구현에 대해 걱정하지 않고 속도가 느리다는 것을 알고 있다면 TCP와 UDP를 모두 사용하는 데 아무런 문제가 없습니다.
관계는 실제로 두 가지 사이의 복잡한 것은 아닙니다 : TCP는 패킷 손실을 얻을 때까지 전송 속도 (전송 할 데이터가있는 경우)를 증가시킵니다.이 경우 속도를 다시 다이얼링 한 다음 속도를 다시 증가시킵니다 더 천천히). 속도가 증가하면 패킷 손실이 발생하면 UDP 패킷을 포함하여 다른 데이터 스트림에도 영향을 줄 수 있습니다.
용지 UDP 패킷 손실의 특성 : TCP 트래픽의 효과는 한 번에 여러 TCP 연결을 열고 데이터로 네트워크를 범람하여 결과를 얻었다. 이로 인해 정체가 발생하고 전역 동기화가 수행되어 패킷이 손실됩니다. 분명히 게임 클라이언트는 한 번에 12 개의 연결을 열지 않고 데이터로 네트워크를 과도하게 사용하지 않으므로 결과가 달라집니다.
질문에 대답하려면 :
TCP와 UDP를 동시에 사용하는 것이 타당한 지 궁금하지만 다른 것들을 위해 [...]
예, 대역폭 제한 내에서 유지된다고 가정하면 허용되는 것입니다.
- 자주 전송되지 않지만 안정적으로 도착하는 정보를 전송하기위한 TCP. 게임 세계에서 점수 업데이트, 플레이어 이름 또는 표시등의 켜짐 / 꺼짐 상태 등이 있습니다.
TCP와 UDP를 모두 사용하는 경우 항상 UDP를 통해 가능한 한 많이 전송하고 TCP를 통해 가능한 한 적게 전송하는 것이 좋습니다.
이제 나는 당신에게 이것을 묻습니다 : 실제로 점수, 선수 이름 및 TCP를 통한 라이트 상태를 보내야합니까? 이 데이터를 최종적으로 받아야하는 것이 사실이지만,이 데이터를 순서대로 정확히 한 번만 수신해야한다는 것이 사실입니까?
아마 아닙니다.
이러한 경우 UDP가 제대로 작동하며 Quake 3 이 좋은 예입니다.
그렇다면 UDP와 함께 TCP의 좋은 예는 무엇입니까? 글쎄, 게임의 대화 상자를 생각해보십시오. 이 대화 상자에 대한 업데이트 (즉, 새로운 텍스트 줄)는 안정적으로 그리고 순서대로 전송되어야합니다. 따라서 TCP가 적합합니다.