컴퓨터 구조

NAT와 홀펀칭

monstro 2025. 10. 11. 14:57
728x90
반응형

- 개요

장치와 장치가 서로 자원을 교환하는 네트워크는 크게 2가지로 분류할 수 있습니다.

  • LAN(Local Area Network) : 근거리를 연결하는 네트워크
  • WAN(Wide Area Network) : 장거리를 연결하는 네트워크

 

내부망과 같은 LAN은 장비들을 구입하여 직접 구축가능할 수 있습니다.

주로 내부에서만 공유하며 사용해야 하는 데이터들을 다루는 용도로 사용합니다.
반대로 인터넷과 같은 WAN은 직접 구축이 불가능하고 서비스 공급자(ISP)의 도움을 받아서 사용할 수 있습니다.
서비스 공급자에서 이미 만든 서비스를 사용료를 내고 임대하는 방식으로 사용합니다.


LAN은 내부에서만 사용가능한 사설 IP를 사용하여 통신을 진행합니다.

사설 IP는 오직 내부에서만 사용가능하며 외부와 통신하기 위해서는 특별한 절차를 진행해야 합니다.

WAN은 모두가 약속한 공인 IP를 사용하여 통신을 진행합니다.

이때 공인 IP의 경우 개수가 한정되어 있고 사용료가 비싸다는 단점이 존재합니다.

따라서 사설 IP와 공인 IP를 연결해주는 시스템이 필요한데, 그 시스템을 NAT라고 표현합니다.

 

1) NAT란?

NAT의 동작에 대한 간단한 표현

 

NAT(Network Address Translation)는 네트워크 주소를 변환하는 역할을 수행합니다.

사설 IP공용 IP로 변환하므로 NAT를 지원하는 장치는 3계층 이상부터 사용할 수 있습니다.

 

2) NAT의 동작

1) 내부망 -> 외부 통신

내부망의 네트워크에서 외부 네트워크로 통신하는 과정은 다음과 같습니다.

  • 1) 내부망의 네트워크에서 패킷을 전송
  • 2) NAT를 거치면서 전송할 패킷에 기록된 사설 IPNAT의 공용 IP로 변환 + NAT의 Port 번호를 기록
  • 3) NAT에서 1)에서 수행한 변환과 관련된 기록을 저장
  • 4) 패킷이 목적지인 외부 네트워크에 도착

 

2) 외부 -> 내부망 통신

외부 네트워크에서 내부망의 네트워크로 통신하는 과정은 다음과 같습니다.

  • 1) 외부 네트워크에서 패킷을 전송
  • 2) NAT를 거치면서 1 - 3)에서 저장된 정보를 통해 공용 IP(NAT)사설 IP(내부망)로 변환
  • 3) 패킷이 목적지인 내부망 네트워크에 도착

 

3) 결론

정리하면, 내부망 네트워크 -> 외부 네트워크의 통신을 수행하면 사설 IP공용 IP로 변환하고
외부 네트워크 -> 내부망 네트워크의 통신을 수행하면 공용 IP사설 IP로 변환합니다

또 처음에는 외부에서 내부망으로 패킷을 전송할 수 없지만, 

한번이라도 내부망에서 외부로 패킷을 전송하면 외부에서 내부망으로 패킷을 전송할 수 있습니다.

 

3) Hole Punching

서버클라이언트 관계에서 다음과 같이 IP를 사용하는 상황을 생각할 수 있습니다.

  • 1) 클라이언트 - 공용 IP + 서버 - 공용 IP : 문제가 없음
  • 2) 클라이언트 - 사설 IP + 서버 - 공용 IP : 문제가 없음, 클라이언트가 서버에 먼저 접속을 요청
  • 3) 서버 - 사설 IP : 문제 있음, 클라이언트가 서버에 접속을 요청할 수 없음

 

3)의 상황P2P 방식의 게임에서 실제로 발생할 수 있는 문제입니다.

이때 Hole Punching을 사용할 수 있습니다.

Hole Punching의 핵심은 중계 서버라고 하는 제 3의 서버를 설정하는 것인데,

서버 - 클라이언트 양쪽에서 서로 연결이 불가능한 상황에서 중계 서버를 사용하여 자신의 위치를 노출시킬 수 있습니다.

728x90
반응형