NetConnection??
지난 시간에는 NetMode에 대해서 살펴보았다 그 설명을 하면서 자세하게 알기 위해서는 NetConnection과 NetDriver에 대해서 공부할 필요가 있다고도 했었다. 오늘은 NetConnection에 대해서 알아보고자 한다.
NetConnection이란 서버와 특정 클라이언트 사이를 연결하는 통신이라 할 수 있다. 예컨대 다른 PC와의 연결이 발생하면 그에 대응하는 UNetConnection 객체도 생성된다. 서버에 클라이언트가 접속하면 서버에는 ClientConnection 객체가 추가되며 반대로 클라이언트에는 ServerConnection 객체가 생성된다. 이렇게 되면 두 PC는 UNetConnection 객체를 통해서 통신하게 되며 나중에 설명할 UNetDriver가 이 UNetConnection 객체를 소유하고 관리하게 된다. 서버 PC에 생성된 UNetDriver는 접속한 클라이언트의 수만큼 UNetConnection을 관리한다. 클라이언트 PC에 생성된 UNetDriver는 SeverConnection 단 하나만을 관리한다.
서버니 클라이언트니 어디에 생성되고 어디에서 관리하고 복잡하다 하나하나 차례대로 살펴보도록 하자.
NecConnection의 주요 역할과 기능
UNetConnection은 단순히 데이터를 보내는 것 외에도 네트워크의 안정성을 위해 많은 일을 수행한다.
1. 패킷 전송 및 수신
데이터를 비트 스트림으로 변환하여 소켓을 통해 실제로 전송한다. 반대로 들어오는 패킷을 받아 엔진이 이해할 수 있는 데이터로 변환한다.
2. 채널 관리
언리얼은 데이터를 효율적으로 관리하기 위해 채널이라는 개념을 사용하는데 UNecConnection은 여러 개의 채널을 소유하고 관리한다. 데이터가 들어오면 어느 채널인지 판단하고 분류해준다.
3. 흐름 제어
네트워크 대역폭이 꽉 차지 않도록 데이터 전송량을 조절한다. 너무 많은 데이터를 한 번에 보내면 패킷 유실이 발생하기 때문에 이를 관리한다.
4. 신뢰성 관리
중요한 데이터가 상대방에게 확실하게 도달했는지 확인하고 도달하지 못했다면 재전송 처리를 한다.
계층 구조
UNetDriver(전체적인 네트워크 시스템을 관장) -> UNetConnection(특정 목적지로 가는 연결) -> UChannel(개별적인 데이터 묶음)
주요 클래스
UNetConnection은 추상 클래스이며 실제로는 상황에 따라 다른 파생 클래스가 사용된다.
UIpConnection : 인터넷 프로토콜 기반의 연결로서 실제 온라인 게임에서 가장 많이 사용되는 클래스이다. UDP소켓을 사용하여 통신한다.
USimulatedClientNetConnection : 에디터에서 데디케이티드 서버 모드로 플레이할 때, 로컬 플레이어가 서버와 통신하는 것처럼 흉내 내는 가짜 연결이다. 실제 패킷을 보내지 않고 메모리상에서 바로 전달한다.
요약하자면 UNetConnection은 서버와 클라이언트 간의 1:1 통신 라인으로서 패킷전송, 흐름제어, 신뢰성 보장을 담당한다. PlayerController를 통해 접근해 핑이나 네트워크 상태를 모니터링할 수 있으며 실제 데이터는 하위 계층인 채널을 통해 이동하게 된다.
'unreal 5기' 카테고리의 다른 글
| 251125 언리얼엔진 본캠프 74일차 UDP와 TCP (0) | 2025.11.25 |
|---|---|
| 251124 언리얼엔진 본캠프 73일차 3정렬과 퀵 정렬 (0) | 2025.11.24 |
| 251118 언리얼엔진 본캠프 69일차 NetMode (0) | 2025.11.18 |
| 251113 언리얼엔진 본캠프 66일차 캐시 히트와 캐시 미스 (0) | 2025.11.13 |
| 251112 언리얼엔진 본캠프 65일차 데드락(Deadlock) (0) | 2025.11.12 |