IPv4에서의 IP 주소 체제의 만점과 몇 가지 보안상의 이유로, 점점 더 많은 네트워크들이 외부 네트워크(또는 인터넷)에서 사용될 수 없는 개인용도의 IP 주소체제(private IP addresses)를 사용한다. 내부 네트워크의 호스트가 인터넷에 접근하려 할 때나, 인터넷에서 접근되도록 하러할 때, 네트워크 주소 번역(network address translation)의 필요성이 생긴다. 네트워크 주소 번역은 인터넷 전송 규약의 헤더들(headers)이 적절히 수정되어, 클라이언트들이 각기 다른 서버들에 연결되었지만 하나의 IP 주소와 연결되고 있는 것처럼 보이고, 서버들도 클라이언트에 직접 연결된 듯 보이도록 할 수 있다는 사실에 의지한다. 이러한 성질은 가상서버 즉, 다른 IP 주소에서의 병렬 서비스들이 NAT에 의한 하나의 IP 주소위에, 하나의 가상 서비스로 보이도록 할 수 있는 서버를 구축하는데 이용될 수 있다.
NAT에 의한 가상 서버의 구조는 load balancer와 실제 서버들은 스위치(switch)나 허브(hub)로 상호 연결되어있다. 실제 서버들은 대개 같은 서비스를 운용하고 같은 서비스 구성 항목을 가진다. 서비스 내용은 각 서버의 하드디스크(local disk)에 복제되거나, 네트워크 파일 시스템으로 공유되거나, (ASF나 CODA같은) 분산 파일 시스템으로 제공된다. load balancer는 request들을 NAT에 의해 다른 실제의 서버들로 전송(dispatch)한다.
NAT에 의한 가상 서버의 작업 흐름은 다음과 같다: 사용자가 서버 클러스터가 제공하는 서비스에 접근하면 가상 IP 주소(Load Balancer의 외부 IP 주소)로 향하는 패킷(request packet)이 Load Balancer에 도달한다. 그러면 Load Balancer는 그 패킷의 목적지 주소와 포트 번호를 검사한다. 만일 그것들이 가상 서버의 역할 분류표(virtual server rule table)에 따른 가상 서버 서비스와 일치한다면 작업할당방식(scheduling algorithm)에 따라 클러스터로부터 실제 서버를 선택하고, 이 접속을 모든 성립된 접속들(established connections)을 기록하는 해쉬 테이블(hash table)에 추가해 넣는다. 그 후 그 패킷의 목적지 주소와 포트 번호를 선택된 서버의 것으로 변경(rewrite)한다. 그러면, 그 패킷은 선택된 서버로 전송된다. 해쉬 테이블에서 발견된 접속에 속하는 패킷이 들어온다면 그 패킷은 변경(rewrite)되어 해당 서버로 전송된다. 응답 패킷(reply packet)이 돌아오면, Load Balancer는 그 패킷의 발생지 주소(source address)와 포트를 가상 서비스의 것으로 변경(rewrite)한다. 접속이 종료하거나 시간 초과되면 접속기록은 해쉬 테이블에서 지워진다.