작성
·
29
·
수정됨
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을 맺은 통로를 통해 소통한다는 것인지 아니면 맺을 수 없기에 소통 자체가 안된다는 것인지도 궁금합니다.)
답변