IT/Etc

UDP 사용시 양쪽으로 연결해야 하는 이유

나떼~ 2024. 5. 30. 18:30
728x90

1. 양방향 통신의 필요성

UDP는 비연결성 프로토콜이지만, 많은 애플리케이션에서는 양방향 통신이 필요합니다. 예를 들어:

  • VoIP (Voice over IP): 음성 데이터를 주고받기 위해 양쪽이 데이터를 송수신해야 합니다.
  • 온라인 게임: 게임 상태 정보를 주고받기 위해 양방향 통신이 필요합니다.

2. NAT 및 방화벽 문제

  • NAT Traversal: 대부분의 네트워크는 NAT (Network Address Translation)를 사용합니다. NAT는 여러 로컬 장치가 공용 IP 주소를 공유하도록 합니다. 그러나 NAT는 외부에서 로컬 장치로의 직접 연결을 어렵게 만듭니다. UDP 홀 펀칭(UDP hole punching) 기법을 통해 NAT 뒤에 있는 장치들이 서로 통신할 수 있도록 하는데, 이는 양쪽 모두에서 송신 패킷을 보내야만 가능합니다.
  • 방화벽 설정: 방화벽은 보안 이유로 외부에서 들어오는 트래픽을 차단할 수 있습니다. 그러나 로컬 장치가 외부로 패킷을 전송하면 방화벽이 이 장치로의 응답 패킷을 허용하게 설정될 수 있습니다. 따라서 양쪽이 먼저 패킷을 전송함으로써 방화벽 규칙을 우회할 수 있습니다.

3. 세션 관리

  • 상태 유지: UDP는 자체적으로 연결 상태를 유지하지 않기 때문에 애플리케이션이 별도로 세션을 관리해야 합니다. 양쪽에서 주기적으로 데이터를 주고받음으로써 세션이 활성 상태임을 확인할 수 있습니다.

4. 패킷 전달 보장

  • 패킷 도달 확인: UDP는 패킷 전달을 보장하지 않습니다. 송신 측은 수신 측에서 응답을 받을 때 패킷이 도착했음을 알 수 있습니다. 따라서 양방향 통신을 통해 패킷 도달 여부를 확인하고, 필요시 재전송을 요청할 수 있습니다.

결론

UDP 자체는 비연결성 프로토콜이지만, 실제 네트워크 환경과 애플리케이션 요구 사항에 따라 양방향으로 데이터를 주고받아야 하는 이유가 많습니다. 이를 통해 NAT 및 방화벽 문제를 해결하고, 세션을 유지하며, 패킷 전달을 보장하는 등의 문제를 해결할 수 있습니다.

728x90
반응형

'IT > Etc' 카테고리의 다른 글

Elasticsearch란?  (0) 2024.05.31
TCP와 UDP에 차이  (0) 2024.05.30
우분투 설치  (0) 2024.05.19
웹 서버와 WAS의 차이점  (0) 2024.04.22
REST API  (0) 2024.04.22