강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

우기바나님의 프로필 이미지
우기바나

작성한 질문수

외워서 끝내는 네트워크 핵심이론 - 응용

NAT 방식에 대한 질문

해결된 질문

작성

·

74

0

강의 항상 잘 보고 있습니다. 감사합니다.

Symmetric NAT 방식과, Cone NAT 방식에 대해 복습을 하다가 이해가 잘 안가기에 질문글을 올려봅니다.

Symmetric NAT은 TCP 세션마다 외부 포트를 지정하고, Cone NAT은 Host 단위로 외부포트를 지정한다라고 강의에서 언급하셨고, 예시를 다음과 같이 들어주셨습니다.

local

192.168.0.10:3000이 15.15.15.15:80과 192.168.0.10:4000이 15.15.15.15:8080과 connection을 맺게되면 전자는 외부포트가 서로 다르나 후자는 외부포트가 동일하다라고 배웠습니다.

그러다 문득 그렇다면

192.168.0.10:3000, 192.168.0.10:4000이 15.15.15.15:8080과 connection을 맺게 되는 경우는 어떻게 되는지가 궁금하여 고민을 하다가 답이 안나와 질문드려봅니다.

저가 생각한 방식은 아래와 같습니다.

Symmetric NAT의 경우는 TCP 세션마다 외부포트를 지정할테니 router에서 외부포트가 다르게 될테고 따라서 TCP<src IP, src port, dest IP, dest port>가 서로 다르게 되어 각각 3-way handshake가 일어나게 되어 각각 connection을 맺게 된다. 따라서 server는 router와 2번 연결되었다라고 생각한다. 즉, 3-way handshake가 2번 발생한다.

하지만 Cone NAT의 경우는 Host마다 외부포트가 다르게 지정되나 이 경우는 호스트가 같으므로 TCP<src IP, src port, dest IP, dest port>는 동일하게 된다. 따라서 192.168.0.10:3000이 15.15.15.15:8080과 connection을 맺게되면 192.168.0.10:4000는 따로 connection을 맺지 않고 기존에 맺어진 connection을 이용하게 된다. 이 경우 server는 router와 1번 연결되었다라고 생각한다. 즉, 3-way handshake가 1번 발생한다.

이렇게 이해를 하였는데 혹시 맞을까요?

 

(참고로 책을 보며 공부하였을 때, Client에서도 특정 조건들로 인하여 ip와 port가 중복될 수 있고 이 경우에 이미 커넥션을 맺은 server와는 TCP<src IP, src port, dest IP, dest port>이 동일하기 때문에 connection을 맺을 수 없다라고 보았습니다.
이 connection을 맺을 수 없다라는 것이 저가 위에서 얘기한 것처럼 이미 connection을 맺은 통로를 통해 소통한다는 것인지 아니면 맺을 수 없기에 소통 자체가 안된다는 것인지도 궁금합니다.)

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

핵심은 UDP건 TCP건 한 세션을 구별하는 식별자는 1. 로컬 IP(사설), 2. 로컬 포트, 3. 원격지 IP, 4. 원격지 포트 등 총 네 가지로 구성됩니다. 그러므로 Cone 방식이라 하더라도 공유기가 정하는 외부 포트번호는 달라집니다. 즉, 한 호스트에 대해 여러 포트번호를 할당하는 방식으로 대응한다고 보면 되겠습니다. 결과적으로 TCP 연결을 위한 3-way handshake는 두 번 일어납니다. 참고하시기 바랍니다. 😄

0

안녕하세요, 인프런 AI 인턴입니다. 박주형님.

Symmetric NAT과 Cone NAT의 차이점은 네트워크 커뮤니케이션에서 중요한 개념입니다. 질문 주신 내용에 대해 설명드리겠습니다.

Symmetric NAT과 Cone NAT의 주요 차이점은 각 NAT 방식이 외부 포트를 설정하고 관리하는 방식을 의미합니다.

  1. Symmetric NAT: 여러 원본 세션 각각에 대해 외부 포트를 다르게 할당합니다. 그러므로 동일한 내부 IP와 포트가 여러 대의 원격지를 대상으로 다수의 외부 포트를 생성합니다. 말씀하신 대로, 두 세션이 각각 다른 외부 포트를 통해 서버와 연결됩니다. 따라서 서버 입장에서는 다른 TCP 세션으로 인식되어 각각의 세션에 대해 별도로 3-way handshake(삼중 핸드셰이크)를 수행합니다.

  2. Cone NAT (Full Cone NAT의 경우): 내부 IP와 포트 조합에 대해 동일한 외부 포트를 사용합니다. 동일한 호스트의 여러 연결에 대해 동일한 외부 포트를 사용하며, 이로 인해 동일한 소스포트, 목적지포트 조합이 동일하다면, 기존 연결을 통해 데이터를 전송할 수 있게 됩니다.

즉, Cone NAT 내부에서는 외부 포트가 고정되어 다른 원격지와 계속해서 동일한 포트를 통해 연결되며, 새 세션을 맺지 않고 기존 세션을 활용할 수 있게 됩니다.

질문하신 대로, TCP 조합이 동일할 때:
- Symmetric NAT의 경우에는 별개의 외부 포트를 사용하므로 독립적인 세션 속성으로 각 연결이 개별적으로 처리됩니다.
- Cone NAT의 경우에는 이미 맺어진 연결을 활용하여 통신이 이루어질 수 있습니다.

마지막으로, 중복된 IP와 Port 조합 관련해서, TCP 연결이 이미 활성화 상태인 경우에는 기존의 경로를 통해 데이터를 전송할 것으로 이해하시면 됩니다. 따라서 연결을 맺을 수 없다라는 부분은 새로이 연결을 맺을 필요가 없다는 뜻으로 해석할 수 있습니다. 다만, NAT 방식이나 네트워크 설정에 따라 약간 다를 수 있습니다.

질문이 복잡하게 느껴질 수 있으니, Symmetric NAT 관련 질문입니다. 게시물을 참고하여 추가적인 이해를 얻으실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

우기바나님의 프로필 이미지
우기바나

작성한 질문수

질문하기