2009-12-30 3 views
12

NAT 라우터를 통해 동일한 외부 IP 주소에 연결된 두 대의 내부 컴퓨터가있는 경우 라우터가 올바른 내부 컴퓨터로 트래픽을받을 수있는 방법은 무엇입니까? NAT가 들어오는 패킷을 최근에 [들어오는 패킷의] 보낸 사람의 IP 주소로 나가는 패킷을 보낸 컴퓨터로 전달한다는 것은 제 생각입니다. 두 컴퓨터가 동일한 주소로 전송하기 때문에 라우터는 패킷을 두 주소로 전달합니까? 그렇다면 관련 패킷을 결정하는 것은 클라이언트 소프트웨어의 책임입니까?두 컴퓨터가 NAT를 통해 동일한 외부 주소에 어떻게 연결합니까?

두 컴퓨터가 동일한 포트에 연결을 시도 할 수 있습니까?

+3

작동 방법에 대한 많은 정보를 제공하고, 대답은 '노 - 그렇게 성공의 이유가있다. –

+0

인정 된 답변이 있으므로 현상금에 요점이 표시되지 않습니다. –

+0

@RonMaupin 그는 그가 좋아하거나 도움이 되었기 때문에 기존의 답변에 그의 명성의 일부를 나누고 싶습니다. 현상금 설명 * 하나 이상의 답변이 모범적이며 추가 현상금에 합당합니다. 기존의 수용된 대답에 대한 보상 *. 여기에있는 사람들은 수시로 좋은 답변을 얻기 위해 수시로 보상금을 지급합니다. –

답변

26

소켓을 열면 대상 시스템의 포트를 주소 지정하고 응답을 받기 위해 자신의 시스템에서 공액 인식 포트를 열어야합니다. 수신 시스템을 수신 대기 포트로 보내야합니다. 웹 브라우저를 시작하고 www.google.com:80에 갈 때 같은 모뎀

를 사용하여 더 이상의 시스템을 갖는

, 당신의 브라우저는 무료 비 시스템 복합 포트/검색을 얻는다 청취를 위해 시스템에서. 합자 포트는 10000입니다. 리스너 포트는 Google에서 http 스트림을 수신하기위한 포트입니다.

그런 다음 당신 옆에 앉아 당신의 아이는 우연히 또한 www.google.com:80를 탐색하고, 플레이 스테이션이나 X 박스 - 어떤 또한 우연히 당신의 복합 포트를 10000

모두를 할당의 그/그녀의 구글 세션 케이블 모뎀 뒤에 있고 케이블 모뎀 뒤에 무선 라우터가 있습니다.그리고 두 시스템 모두 무선 라우터 뒤에 있습니다. 모든 순서는 네트워크 토폴로지에 따라 다릅니다.

우리가 케이블 회사의 DHCP가 72.72.72.72을 ADRESS IP4 모뎀을 할당한다고 가정 해 봅시다 라우터/모뎀 포트 주소 충돌을 방지합니다. 그러나 무선 라우터 DHCP는 시스템에 192.168.0.10을 할당하고 자녀 시스템에 192.168.0.11을 할당합니다.

청취자 포트의 정보를 운반하는 프레임이 NAT 라우터를 통과하면 하나 또는 두 개의 수신 포트를 변환합니다. 귀하의 페이지에 대해 포트 15000을, 자녀 페이지에 포트 16000을 지정한다고 가정 해 보겠습니다.

그러면 무선 라우터가 72.72.72.72:15000 및 72.72.72.72:16000에서 오는 것으로 Google 서버에 요청을 보냅니다.

그러면 Google 서버가 72.72.72.72:15000 및 72.72.72.72:16000에 개별적으로 응답하고 무선 라우터가 응답을 받으면 저장 한 매핑에 도달하여 72.72.72.72:15000을 192.168로 변환합니다. 0.10 : 10000을 입력하면 72.72.72.72:16000을 192.168.0.11:10000으로 변환하여 자녀의 시스템에 전달합니다.

실행 웹/게임/FTP/등 서버

그러나 당신은 웹 서버 나 시스템에서 실행되는 FTP 서버가있는 경우. 두 시스템이 있고 둘 다 웹 서버를 가지고 있고 두 웹 서버가 포트 80에서 수신 대기하면 어떻게됩니까?

첫 번째 웹 서버 시스템의 무선 라우터에 등록/할당 된 로컬 IP 주소는 192.168.0.30이고 두 번째 웹 서버 시스템은 192.168.0.40이라고 가정 해 보겠습니다.

변경하지 않는 한 무선 라우터의 구성 웹 페이지는 기본적으로 192.168.0.1:80입니다. 응용 프로그램 포트 매핑을 정의/예약 할 수있는 탭이 페이지에 있습니다.

당신은 매핑 그래서 당신은 당신의 웹/게임 서버 주소입니다 친구 72.72.72.72:8080 및 72.72.72.72:8088을 통해 전화를해야한다는

192.168.0.30:80 => outgoing port 8080 
192.168.0.40:80 => outgoing port 8088 

에게 예약하는 무선 라우터와 함께 등록 할 수

무선 라우터는 포트 8080 및 8088을 자체 동적 NAT 사용에서 제외시킵니다.

물론 72.72.72.72는 ISP DHCP가 모뎀의 ip4 주소를 72.72.90.200으로 갱신하기 전에만 좋은 것입니다. 그 후에 친구에게 전화를 걸거나 이메일을 보내야합니다. 안녕하세요, 서버의 주소가 각각 72.72.90.200:8080 및 72.72.90.200:8088으로 변경되었습니다. 또는 동적 DNS (ddns) 서비스에 가입하여 ddns 서비스에서 주소 변동을 모니터링 할 수 있도록 시스템에 간단한 하트 비트 유틸리티를 설치해야하는 경우 명명 된 도메인을 사용할 수 있습니다. DDNS 번역은 별도의 문제/전략입니다.

NAT 모뎀

최근 ISP 계약은 NAT이있는 모뎀을 제공합니다. 그렇다면 모뎀이나 무선 라우터의 스위치를 끄십시오. 두 가지를 모두 사용하지 않아야합니다. NAT가 단순히 주소 충돌을 방지하기 때문에 두 번 번역 할 때의 요점은 무엇입니까?무선 라우터에서 NAT를 끄면 라우터가 아닌 허브 스위치로 작동하여 WAN 소켓 대신 LAN 소켓 중 하나를 사용하여 모뎀에 연결할 수 있습니다.

+3

+1 정말 대단한 설명입니다! 나는 NAT에 대한 대부분의 설명이 발신 연결의 응답을 보낸 사람에게 되돌려 보내는 방법을 결코 정리하지 않았다는 사실에 항상 좌절감을 느껴 왔습니다. – AaronLS

1

들어오는 외부 트래픽에 대해 다른 포트를 사용하고 NAT는 한 포트의 패킷을 하나의 내부 IP 주소로 라우팅하고 다른 포트의 패킷은 다른 내부 IP 주소로 라우팅합니다. 각 포트의 초기 요청 내부 컴퓨터는 나가는 길에 NAT를 통과 할 때 외부 IP 주소에서 들어오는 트래픽에 사용할 포트를 설정하고 외부 서버에 해당 포트로 보내려는 트래픽의 포트를 알려줍니다.

4

라우터는 각 컴퓨터에 대해 별도의 "원본"포트를 관리합니다. "목적지"의 포트 80에 연결하는 동안 라우터는 소스 포트를 높은 포트 번호에 할당 할 수 있습니다. 그들이 통과 할

Wikipedia

네트워크 주소 변환을 요약은 재 작성 소스 및/또는 목적지 IP 주소와 IP 패킷의 보통 또한 TCP/UDP 포트 번호를 포함 NAT. 체크섬 (IP 및 TCP/UDP 모두)은 의 변경 사항을 고려하여 다시 작성해야합니다 ( ).

+0

내가 틀렸다고 정정하십시오. 두 컴퓨터가 초기에 포트 1000에서 1.1.1.1 로의 연결을 요청합니다. 라우터가 새 포트 40000 및 40001을 구성합니다. 라우터가 패킷을 보내고 포트 1000에 계속 연결합니다. 그것은 다시 포트 40000 또는 40001로 전송됩니다. 연결을 열 때 송수신이 동일한 포트에서 발생한다고 생각한다는 것을 제외하고는 의미가 있습니다. – user241146

+3

"소켓"은 원본 IP 주소, 원본 포트, 대상 IP 및 대상 포트의 네 가지 데이터로 구성됩니다. 귀하의 예에서 포트 40000 및 40001은 소스 포트이고 1000은 목적지 포트입니다. – kdgregory

2

이미 좋은 답변이 제공하지만, 여기에 또 다른 예입니다됩니다

HOST A addr   HOST B addr 
    10.1.0.2:4040  10.1.0.3:4040 
----------------------------------------- 
NAT 200.50.50.28:4040 200.50.50.28:4041 (what external host sees) 

200.50.50.28는 라우터의 세계 (인터넷) IP이다.

모든 포트 번호는 NAT 테이블에서 고유합니다. 물론 라우터는 모든 더러운 원본 및 대상 주소를 투명하게 수정하는 작업을 수행합니다.

+0

두 대의 컴퓨터가 동일한 소스 포트를 사용하는 경우 라우터는 자동으로 호스트의 새 src 포트를 다시 할당합니까? 그리고 호스트 A와 호스트 B가 연결하는 서버는 다른 src 포트를 보게됩니까? 호스트 A와 호스트 B의 포트에 충돌이 없다면 라우터는 src 포트를 변경하지 않을 것입니까? 내가 그것을 정확하게 이해했는지 확인하고 싶습니다. 고마워요 – kuchi

+1

@ 쿠치, 네 서버가 각 호스트에 대해 다른 포트를 볼 수 있습니다. 일반적으로 라우터는 주소 충돌을 해결합니다. 즉, 두 호스트가 서로 다른 두 서버에 연결되어있는 경우 동일한 포트를 사용할 수 있습니다. '(src_ip, src_port, dest_ip, dest_port) '튜플은 구별되어야한다. –

1

RFC3022 당신이 당신의 IP 기반 프로그램 NAT 인식 할 필요가있는 경우 요청하는 경우이