네트워크 관련/네트워크

[NAT] 기초 개념잡기(NAT PAT Port-Forwarding HTTP/HTTPS)

늅이 2016. 6. 15. 17:31

NAT를 공부하며 연결되는 PAT, Port-Forwarding, HTTP와HTTPS의 차이점까지 요점 정리하겠습니다


그림을 통해 쉽게풀어쓴 NAT의 기초 개념잡기


본 게시글은 네트워크 입문자에게 적합한 글입니다

NAT

Network Address Translation으로 말그대로 네트워크 주소변환이다
NAT는 외부 네트워크에 알려진 것과 다른 IP주소를 사용하는 내부네트워크에서 IP주소를 변환하는것이다.
  - 일단은 가볍게만 알아두시고 그림을 보면서 자세히 설명드리겠습니다.

왜 NAT(주소변환)를 해야 하나요?

1) 공인 IP의 부족한 문제를 해결
집집마다 공인IP를 사용한다면 전세계 사람들이 사용하기에 IP의 갯수는 턱없이 부족하게 됩니다.
그래서 NAT를 사용하여 1개의 공인IP에 여러개의 사설IP를 부여하여 건물한개에 여러사람이 다른 IP를 쓰지만 실제로 나갈땐 하나의 공인IP로 나가게 됩니다
- 이해안되셔도 괜찮습니다 그림을 보시면 쉽게 이해되실껍니다

2) 외부로부터 내부망을 보호하여 보안성 우수
내부에 사설망(사설IP)로 구축하여 외부 공인망으로 부터 보호를 목적
즉 사설대역 IP는 인터넷 구간에서 라우팅이 되지 않습니다.

그럼 그림을 통해 쉽게 알아보겠습니다


초보자분들 Switch의 개념이 이해안가시면 가정에서 사용하시는 공유기 생각하시면 됩니다.

지금 영업부 전체의 모든 PC들은 공인IP하나만을 할당받은 상태입니다.


지금 영업부는 192.168.0.?라는 사설망으로 묶여있습니다. 하지만 인터넷 통신을 하기위해선 반드시 공인IP를 사용해야 합니다.


여러대의 PC가 있는 사설망에서 어떻게 공인IP하나를 사용하는가?

여기서 사용되는 것이 NAT입니다.

192.168.0이라는 사설망에서 NAT변환장치를 통해 나갈땐 모두 똑같은 공인IP인 120.160.10.로 나가게 되는것입니다.
김인턴의 192.168.0.2(사설) => 120.160.10.123(공인)
최사원의 192.168.0.3(사설) => 120.160.10.123(공인)
정대리의 192.168.0.4(사설) => 120.160.10.123(공인)
이차장의 192.168.0.5(사설) => 120.160.10.123(공인)

그렇다면 올때는 누가보냈는지 어떻게 찾아오나요?

보냈으니 응답을 해야하겠죠?
공인IP로 응답을 해옵니다.

하지만..라우터에 와서 120.160.10.123 => ?

어떻게 보낸사람이 김인턴인지 최사원인지 알까요? 
(보낸사람은 하나의 공인IP인데.. 그리고 응답할때도 공인IP를 목적지로 두고 보냈습니다)

정답은 PAT입니다.

먼저 PAT는 내부의 다수 IP 포트들을 공인IP의 포트로 변환을 해주는 녀석입니다.
즉. 김인턴이 통신을 하려고 할때 PAT는 잠시만 김인턴아! 포트번호는 달고가야지~ 하며 포트번호를 부여합니다. 포트번호는 그대로 기억되며 IP만 공인,사설을 지나며 변화합니다.
그리고 돌아올때는 기억하고 있던 포트번호를 통해서 사설IP정보를 찾아오게 됩니다.
(요즘 공유기들이 PAT구성을 많이하니 참고하시면 좋겠습니다)


김인턴을 예로 흐름을 적겠습니다
김인턴 네트워크정보
IP:192.168.0.2(사설)
Port: 65000(PAT를 통해 받은 통신 포트번호)


요청
192.168.0.2/65000(사설) ==> 192.168.0.2/65000(사설) > 120.160.10.123/65000(공인) 변환 ==> Internet


응답
Internet==> 120.160.10.123/65000(공인) > 192.168.0.2/65000(사설) 변환 ==> 192.168.0.2/65000(사설)


↑이 부분에서 어?? 사설IP가 김인턴인가? 최사원인가? 어떻게 알지??  아하~! 김인턴이 65000포트를 사용해서 요청했으니 65000포트로 응답온걸 보면 김인턴에게 보내주면 되겠구나~! 아실 수 있습니다 




추가로 제가 공부하다가 PAT와 port-forwarding의 차이점떄문에 고생을 했기 때문에 포트포워딩도 적겠습니다

Port-forwarding?

먼저 https 443포트, http는 80포트로 요청이 들어옵니다.

웹서버에서 HTTPS(443)로 서버를 열고있습니다.
고객 클라이언트의 웹브라우저가 버전은 상태로 도메인을 입력하면 HTTP(80)으로 요청을 하게 되죠

서버입장에선 80으로 들어오는 포트를 443포트로 포워딩하여 보안프로토콜로 통신을 하도록 유도하는것이 port-forwarding이 되겠습니다


추가

댓글로 피드백 달아주신 부분입니다.
- 내부에 22번을 사용하는데 보안상 22번포트의 노출은 위험하니 2222로 노출하고자 할때 사용하는 기술로도 볼 수 있다는 피드백이 들어와 추가하겠습니다.

피드백 감사합니다^^

HTTPS와 HTTP의 차이점

한줄요약하자면 https가 더 안전합니다
http와 https의 차이점은 크게 없지만 핵심은 https가 모든 통신내용을 암호화하기 때문에 더 안전하게 보시면 되겠습니다

그럼 왜 https를 쓰지 http가 아직도 있나요?

간단합니다. https는 보안을 강화하기 위해서 암호화를 하는데 모든 페이지를 암호화 하게 되면 웹서버에 부하가 생기게 됩니다.
때문에 서버측에서는 비용이 많이 들기 때문에 아직까지 많지 않은 상황입니다.

그렇다고 https가 무조건 좋은것만은 아닙니다

암호화를 사용하면 그만큼 절차가 많아지기 떄문에 복잡합니다
http같은 경우 비연결형으로 웹페이지를 보다가 인터넷이 끊어져도 다시 인터넷이 연결되면 이어서 볼 수 있지만
https의 경우 소켓자체에서 인증을 하기 때문에 인터넷 연결이 끊기면 소켓도 끊겨서 다시 https 인증을 거쳐야 하기 때문에 시간이 더 걸리게 됩니다





주의!!
본 게시글은 작성자가 마음대로 이해해서 정리한 글이므로 사실과 다를 수 있음을 참고하고 봐주시기 바랍니다