질문이 완전히 다루어졌지만. 이 과정을 단계별로 설명하는 것이 가장 좋습니다.
이 예에서는 라우터를 통해 인터넷에 연결된 개인 LAN에 앉아 있습니다. 네트워크는 단일 공용 IP 주소를 공유하므로 NAT를 사용합니다.
그래서 superuser.com
많은 IP 패킷을 생성 하는 페이지 를 요청하면 . 하나를 봅시다.
IP 패킷
소스 : 192.168.1.12
(my IP)
대상 : 64.34.119.12
(superuser.com)
이제 내 시스템은 문제의 시스템과 유사하게 설정되어 있습니다. 내 자신의 IP 주소 ( 192.168.1.12
), 서브넷 마스크 ( 255.255.255.0
) 및 기본 게이트웨이 ( 192.168.1.1
)가 있습니다. 이제 내 IP 패킷의 대상 필드가 내 네트워크 와 다른 네트워크를 가리 키 므로 컴퓨터가 아닌 기본 게이트웨이로 전송됩니다.
그러나 대상이 완전히 다른 곳을 가리키는 경우 어떻게 패킷이 기본 게이트웨이에 도달 할 수 있습니까?
이더넷
이더넷 프로토콜 주소 지정을 사용하기 때문에 쉽습니다. IP 패킷의 목적지 IP 주소와 기본 게이트웨이의 MAC 주소를 이더넷 프레임 의 목적지로 설정했습니다 .
이제 기본 게이트웨이가에 대한 패킷을 가져옵니다 superuser.com
. 예이!
이제 게이트웨이에는 패킷이 있으며 경로에서 바로 보낼 수 있습니다. 그러나 답을 얻으려면 먼저 패킷 소스 주소 를 바꿔야합니다 (그렇지 않으면 superuser.com
존재하지 않는 일부 장치에 대한 답변을 네트워크의 내 IP 주소 로 보내려고 시도합니다) . 아주 좋은).
내 라우터가 배치됩니다 그래서 공공 에 IP 주소를 소스 필드 :
IP 패킷
소스 : 92.69.127.243
(내 공개 IP)
대상 : 64.34.119.12
(superuser.com)
이제 동일한 게임이 패킷이 도착 superuser.com
하고 응답이 생성 될 때까지 전 세계의 모든 라우터에서 계속 진행 됩니다.
대답
IP 패킷
소스에 응답 : 64.34.119.12
(superuser.com)
대상 : 92.69.127.243
(내 공개 IP)
좋아, 대답은 내 라우터에 도착했다. 이제 무엇? 내 라우터는 이제 답변을 보내는 방법을 어떻게 알 수 192.168.1.12
있습니까?
TCP
글쎄, 실제로 우리는 통신의 IP 및 이더넷 부분 만 살펴 봤기 때문에 실제로 작동합니다. 이 작업을 수행하는 것은 TCP 부분입니다.
웹 서버는 일반적으로 포트에서 실행된다는 것을 알고있을 것입니다 80
. IP는 포트 개념이 없습니다 . 이것은 TCP 에서 온 것입니다 . TCP에서는 소스 와 대상 포트 가 (IP와 같이) 있습니다.
superuser.com으로의 TCP 패킷
소스 : 192.168.1.12
(my IP)
소스 포트 : 11111
(내 컴퓨터가 구성한 포트)
대상 : 64.34.119.12
(superuser.com)
대상 포트 :80
라우터가 초기 패킷을 보내면 ( superuser.com
on port 주소 지정 80
) 새 소스 포트를 (예 :)에 넣습니다 12345
.
그리고 이것은 중요한 부분입니다! 그는 그 교체를 기억할 것입니다!
superuser.com에 대한 라우터의 TCP 패킷
출처 : 92.69.127.243
(내 공개 IP)
소스 포트 : 12345
(내 라우터가 구성한 포트)
대상 : 64.34.119.12
(superuser.com)
대상 포트 :80
따라서 라우터가 수신 한 응답 패킷은 실제로 다음과 같습니다.
superuser.com의 TCP 패킷에 응답 합니다.
출처 : 64.34.119.12
(superuser.com)
소스 포트 : 80
대상 : 92.69.127.243
(내 공개 IP)
대상 포트 : 12345
(내 라우터가 구성한 포트)
이제 그는 해당 패킷을 가져 와서 이전에 기억 한 포트 가 IP 주소 192.168.1.12
(내 IP 주소)에 대한 NAT 작업에 할당 된 포트임을 확인합니다 .
라우터의 TCP 패킷에 응답합니다.
출처 : 64.34.119.12
(superuser.com)
소스 포트 : 80
대상 : 192.168.1.12
(내 IP)
대상 포트 : 11111
(컴퓨터가 구성한 포트)