NAT (Network address translation)와 PAT (Port Address Translation) 사이에 일반적인 오해가 있는데 , 이는 주로 가정용 라우터에서 사용됩니다.
NAT
다음 토폴로지의 네트워크가 있다고 가정합니다.
Private_Network <-------> 라우터 <-------> The_Internet
의 인터페이스 라우터 에 연결된되어 Private_Network는 이 사설 IP 주소를 즉,에 고유하지 않은 한 The_Internet을 . 한편, 인 경우 NAT , 공유기를 갖는 다중 접속 인터페이스 The_Internet를 . 각 인터페이스에는 The_Internet 에서 고유 한 IP 주소가 있습니다 . 이제 Host_A 와 Host_B 가 Private_Network에 있고 둘 다 동시에 The_Internet의 Website_X 에 액세스하려고 한다고 가정합니다 . Host_A 의 IP 및 포트패킷은 다음과 같습니다.
소스 IP : Host_A 의 개인 IP
소스 포트 : Host_A 의 포트
대상 IP : Website_X 의 공개 / 고유 IP
대상 포트 : Website_X 의 서버가 수신 하는 포트
Host_B 에서 오는 패킷도 마찬가지 입니다.
소스 IP가 변경되지 않은 경우 Website_X 는 개인 IP 주소 (예 : 고유하지 않은)에 응답하므로 패킷을 다시 찾을 수 없습니다. 이 문제를 해결하기 위해 라우터 는 The_Internet에 연결된 고유 한 IP 주소 중 하나 가 사용되지 않는지 확인합니다 . 이 경우 다음과 같은 매핑을 수행합니다.
Host_A 의 개인 IP ======= 라우터의 _unique_IP_K
이제 Host_A 에서 시작 하여 Website_X로 이동 하여 The_Internet에 연결된 라우터 의 인터페이스를 떠나는 패킷 의 형식은 다음과 같습니다.
소스 IP : Router's_unique_IP_K
원본 포트 :에 포트 HOST_A의
: 대상 IP Website_X 의 공개 / 고유 IP
대상 포트 : 포트 Website_X 의 서버가 듣고있다
따라서 개인 IP에서 공용 IP 로의 일대일 연결이 있음을 이해할 수 있습니다. 따라서 Website_X 에서 Router 로 패킷이 도착하면 이 연결이 확인되고 대상 IP 주소가 개인 IP 주소로 다시 변경되어 올바른 호스트로 성공적으로 전달됩니다.
보시다시피이 방법은 매우 간단하지만 한 가지 큰 단점이 있습니다. 각 개인 호스트에는 고유 한 IP 주소가 예약되어 있어야하므로 비용이 많이 들기 때문에 개인 네트워크의 호스트보다 고유 한 IP 주소가 더 적습니다. 따라서 모든 개인 호스트 가 동시에 The_Internet 에 액세스하려고 하면 라우터 의 사용 가능한 공용 IP 주소 수와 동일한 하위 집합 만액세스 권한이 있으며 나머지는 거부됩니다.
이를 방지하기 위해 PAT 를 만들었습니다 .
PAT
PAT 는 대다수의 가정용 라우터가 사용하는 것입니다. 기본 제한 사항은 라우터 에 The_Internet에 연결하는 고유 한 단일 IP 주소가 있지만 개인 네트워크의 여러 호스트 가 동시에 The_Internet 에 액세스 할 수 있도록하는 것입니다. IP 주소 풀을 보유한 라우터 대신 포트 번호 풀을 보유하는 라우터 와 달리, NAT가이를 수행
하는 방식과 "유사" 합니다. 더 정확하게는, 도착 패킷 라우터 로부터 HOST_A 에 Private_Network는 로 향하는 Website_X 에인터넷의 형식은 다음과 같습니다.
소스 IP : Host_A 의 개인 IP
소스 포트 : Host_A 의 포트
대상 IP : Website_X 의 공개 / 고유 IP
대상 포트 : Website_X 의 서버가 수신 하는 포트
이제 라우터 는 두 가지 작업을 수행합니다.
- 그것은에 소스 IP가 변경됩니다 라우터 의 독특한 공용 IP 및
- 라우터 가 유지 보수 중이고 아직 사용되지 않은 풀에서 소스 포트를 포트로 변경합니다 ( 예 : Port_Z).
이제 Host_A 에서 시작 하여 Website_X로 이동 하여 The_Internet에 연결된 라우터 의 인터페이스를 떠나는 패킷 의 형식은 다음과 같습니다.
소스 IP : Router's_unique_IP_K
소스 포트 : Port_Z
대상 IP : Website_X 의 공개 / 고유 IP
대상 포트 : Website_X 서버가 수신 대기 하는 포트
그리고 라우터는 다음과 같은 매핑을 유지합니다 :
Host_A 의 개인 IP 및 Host_A 의 포트 ======= Port_Z
왜 이것이 작동합니까?
이제 패킷이 되돌아 오면 라우터는 단순히 대상 포트 번호를 확인하고 앞서 언급 한 매핑에 따라 대상 IP 주소와 대상 포트 번호를 변경하면 패킷이 성공적으로 전달됩니다.
동일한 호스트에서 여러 응용 프로그램을 실행하면 어떻게됩니까?
응용 프로그램마다 정의에 따라 다른 포트가 있으므로 라우터 와 다른 포트에 매핑됩니다 .
여러 호스트 가 동시에 The_Internet 에 액세스하려고 시도 하고 모두 동일한 응용 프로그램을 사용하는 경우 어떻게됩니까?
다른 호스트는 정의에 따라 다른 개인 IP 주소를 가지므로 라우터 와 다른 포트에 매핑됩니다 .
PAT 는 교차 레이어의 회색 공간에서 위험한 균형을 유지하고 있습니다. 포트 번호는 전송 프로토콜의 일부이며 라우터는 인터넷 프로토콜까지 작동 할 수 있습니다. 따라서 기술적으로 말하면 프로토콜에서 허용되지 않는 것입니다. 따라서 이론적으로 적어도 잠재적 위험이 있습니다. 포트 풀은 제한되어 있습니다. 따라서 개인 네트워크가 1000 개의 호스트로 구성되고 각각의 호스트가 port_pool / 10 응용 프로그램을 실행중인 경우 라우터의 매핑 테이블에 사용 가능한 항목이 부족하여 응용 프로그램에 대한 액세스가 거부됩니다.
이 답변은 의도 한 길이를 크게 초과했지만 도움이 되었기를 바랍니다.