본문 바로가기

Network

[Network] NAT vs Portforwarding 개념 및 차이점

 

서버와 클라이언트 관계에서 내 컴퓨터는 서버 or 클라이언트 중에 하나의 역할을 수행한다.

서버 개발자가 아닌 일반 사용자의 경우 대부분 사용자의 컴퓨터는 클라이언트 역할을 수행하게 되는데, 이 때 필요한 것이 NAT.

서버를 운용하기 위해서 필요한 것이 Portforwarding이다.

 

간단하게, 내 컴퓨터에서 request를 보낸다면 NAT, 내 컴퓨터가 request를 받는다면 Portforwarding이 필요.

NAT의 경우 라우터에 이미 해당 기능이 구현되어 내가 클라이언트로 사용할 때는 해당 기술에 대해 전혀 모르고 사용할 수 있지만, Portforwarding은 내가 서버를 제공하기 위해서는 따로 설정해주는 작업이 필요하다.

 

NAT vs Portforwarding 공통점

두 가지 기술은 모두 private network의 사용으로 인해 등장한 기술.

ISP에 인터넷을 신청할 경우 Public IP를 할당 받는데(비록 동적으로 IP가 변화하여 서버를 제공하기에는 무리가 있지만) 이 Public IP는 내 컴퓨터에 할당되는 것이 아닌, 라우터(공유기)에 할당되는 것이고 해당 라우터만이 인터넷과의 소통을 담당한다.

따라서 라우터는 인터넷과 Private Network 사이에서 endpoint를 이어주는 중간 역할을 하게되는데 그 중간 역할을 할 수 있게 해주는 기술이 NAT과 Portforwarding.

 

NAT vs Portforwarding 차이점

 

NAT: 내 컴퓨터가 client 역할을 할 때.

private ip를 가진 내 컴퓨터가 인터넷에 request를 보내면 해당 패킷은 가장 먼저 랜선으로 연결된 라우터로 이동.

라우터는 public ip를 가지고 있고 패킷을 분해하여 ip 부분을 private ip에서 public ip로 변경시키고 해당 요청의 포트와 변경 내역을 기록해둔다.

response를 받을 때는 request와 마찬가지로 패킷을 분해하여 기록해둔 변경 내역을 가지고 public ip에서 private ip로 변환시켜 private ip만을 가진 서버에 response를 전달한다.

 

Portforwarding: 내 컴퓨터가 server 역할을 할 때.

nat의 경우에는 내 컴퓨터에서 request를 보낸 상황이기 때문에 라우터에서 private ip와 public ip 매핑에 대한 근거를 request 패킷 정보를 기반으로 자동으로 생성할 수 있지만 다른 클라이언트에서 내 컴퓨터로 요청을 할 경우 라우터는 매핑 근거를 생성해 낼 수가 없음. 따라서 사용자가 직접 router에 해당 근거를 만들어줘야 한다.(매핑 테이블)

Portforwarding의 경우 라우터에 public ip:80 포트로 들어온 요청을 특정 private ip:원하는 포트로 전달해주는 것. private ip도 동적으로 변화하기 때문에 private ip를 고정하는 작업 또한 필요하다. (DHCP)