질문: 내 홈 인터넷 라우터에서 PAT가 활성화되어 있다고 가정할 때 내 라우터는 인터넷에서 패킷을 수신할 때 패킷을 역다중화할 호스트를 어떻게 알 수 있습니까?
예: 내 LAN에는 2개의 호스트가 있습니다. 각각은 동일한 정보에 대해 동일한 서버에 요청을 보냅니다. 각 호스트는 동일한 포트를 사용하고 있습니다. 라우터는 어떤 패킷이 어디로 가야 하는지 어떻게 알 수 있나요? 각 패킷은 동일한 소스 및 대상 주소를 가져야 합니다. 내가 인식하지 못하는 포트 마법이 없는 한 포트는 동일해야 합니다.
내 추측: 나는 개인 네트워크의 각 개별 호스트를 어떻게든 식별하는 패킷에 첨부되어 있는 내가 인식하지 못하는 일부 메타데이터가 있다고 추측할 것입니다. 그러나 다음 예에서는 이것이 작동하지 않는 것 같습니다.
예: 다른 네트워크의 일부 호스트(기타)가 내 LAN의 호스트(내)로 패킷을 보내려고 합니다. 다른 호스트가 내 네트워크의 공용 IP 주소로 패킷을 보냅니다. 그러나 내 호스트는 패킷을 예상하지 않기 때문에 내 라우터에 패킷을 역다중화하는 방법에 대한 메타 데이터를 제공할 수 없었습니다. 그리고 다른 호스트는 내 네트워크의 공용 IP 주소 이외의 메타데이터를 알지 못합니다.
답변1
네트워크 주소 변환을 수행하는 장치는 소스 및 대상 IP 주소와 포트 번호에 대한 정보가 포함된 변환 테이블을 유지 관리합니다. 소스 IP 주소와 포트 번호, 대상 IP 주소와 포트 번호의 조합은 각 세션에 대한 고유 식별자를 생성합니다.
답변2
소스 포트.
NAT 내부의 각 클라이언트는 임의의 높은 번호 포트를 서버 연결의 소스 포트로 할당합니다.
라우터는 요청을 변환할 때 소스 포트도 설정하고 어떤 소스 포트가 어떤 연결에 할당되었는지 추적합니다. 따라서 웹 서버는 소스 포트 80과 대상 포트 35201(또는 무엇이든)을 사용하여 무언가를 다시 보내고 라우터는 35201로 할당된 네트워크 클라이언트 연결을 찾습니다.
이는 웹 서버가 아마도~ 아니다원래 클라이언트가 요청한 소스 포트가 무엇인지, 라우터가 이를 변환한 소스 포트가 무엇인지 알 수 있습니다. (요청의 소스 포트는 응답의 대상 포트가 됩니다.)
답변3
내부 호스트에 도달하려고 하는 외부 장치에 대해 언급한 예와 관련하여 위의 답변을 계속하고 싶습니다. 따라서 위를 기반으로 라우터는 기본적으로 인터넷에서 시작된 트래픽을 삭제합니다. 라우터의 NAT 테이블에 아직 생성된 항목이 없기 때문에 LAN의 내부 호스트는 트래픽을 수신해야 합니다.
인터넷에서 LAN으로 들어오는 트래픽을 허용하는 방법은 정적 NAT라고도 하는 특정 포트 전달 규칙을 정의하여 트래픽이 인터넷에서 포트 80으로 들어올 때 라우터에 알리는 것입니다. 예를 들어 이 트래픽을 전달하십시오. 예를 들어 IP 및 포트 192.168.1.5:80의 LAN에 있는 내 웹 서버에 연결합니다.