User Tools

Site Tools


portforwarding

개념

프로토콜, 서버, 클라이언트에 대해서 우선 언급후 포트에 대해서 언급하도록 한다.

프토토콜, 서버, 클라이언트

인터넷은 여러종류의 프로토콜이 개발되어 서비스로 사용되고 있다. 가령 FTP(File Transfer Protocol)는 파일전송을 위한 네트워크상에서의 데이터 전수송 규정을 말하며, 이 규약을 지켜서 만든 프로그램을 이용해서 파일을 주고 받게 된다. WWW의 경우에는 HTTP(HyperText Transfer Protocol)이 이용된다.

FTP서비스를 위해서는 서버와 클라이언트가 필요하다. FTP 규약을 지켜서 만든 서버 프로그램을 사용자가 컴퓨터에 인스톨/구동하게 되면 그 컴퓨터는 FTP서버가 되고 파일을 주고(다운로드) 받을(업로드)는 서비스를 제공하는 컴퓨터로서의 준비가 된 것이다. 일반 사용자는 서버에 접속해서 파일을 다운로드하고 업로드하는 기능만을 가진 - 즉 파일 수용하고 배포기능이 없는 - 프로그램을 사용하는데 이는 클라이언트라고 부른다. 파일질라를 인스톨한 사용자가 ftp 서버에 접속하여 파일을 다운로드 하는 경우를 말한다.

HTTP의 경우도 마찬가지다. HTTP 서버는 html 파일을 특정 디렉토리에 가지고 있다가, 요청이 있으면 (http 클라이언트 프로그램이 부르면), 해당 파일(페이지)을 제공해 준다. 우리가 사용하는 윈도우즈익스플로러, 파이어폭스, 크롬, 오페라 등등의 웹브라우저는 http 클라이언트 프로그램이고 이 프로그램을 통해 웹페이지들을 요청하게 된다 (예를 들면 브라우저 주소창에 http://commres.net/blog 을 적고 엔터키를 누르는 행위).

위의 예에서 http://commres.net/blog 는 해당페이지가 존재하면 제공해주어야 하는데 이는 commres.net 이라는 도메인 이름을 가진 컴퓨터에 http 서버가 반응함으로써 가능하게 된다. 따라서 흥미로운 콘텐츠를 가지고 있는 사람이 웹페이지를 운영하려고 하면, http 서버 (www 서버, www 디몬 등등으로 불림)를 특정 컴퓨터에 심어 놓아야(인스톨 후 작동시켜야) 하는 것이다. 가장 많이 사용되는 www (http) 서버중의 하나가 Apache 이다.

IP address

인터넷에 연결된 모든 컴퓨터는 기본적으로 IP Address를 갖는다. 이 주소는 컴퓨터를 구별하는 식자이다 (전화번호와 같은). IP address는 4개의 1 byte 숫자 조합으로 이루어진 형식을 갖는다. 211.222.87.143이 한 예이다. 각 단위는 0-255까지의 숫자를 가질 수 있다. 경우에 따라서 다를 수 있지만, 앞의 3 bytes 숫자는 (211.222.87 과 같은) 네트워크 위치를 뒤의 143은 컴퓨터의 ID를 뜻한다. 앞의 3 단위가 네트워크 위치라는 부분은 달라질 수도 있다. 가령, 앞의 두 단위만이 네트워크 위치를 뜻할 수도 있다 (클라스 B 네트워크 사이트). 아뭏든 이 IP address는 네트워크 상의 컴퓨터를 식별하는 유일한 도구이므로 컴퓨터끼리 중복되어서는 안된다. 중복을 막기 위해 관리 기관을 두고 대륙 별로, 그리고 국가 별로 IP address를 할당하고, 각 국가는 다시 할당받은 주소를 다시 중복없이 다른 기관(회사, 대학교, 등등)에 할당하게 된다.

이와는 좀 다르게, 특정한 IP address가 있는데 localhost 127.0.0.1 등이 그것이다. 이는 자기 자신(localhost)를 뜻하는 것으로 해당 컴퓨터를 뜻한다. 해당 컴퓨터가 외적으로 네트워크에 연결이 되어 있지 않아도 사용할 수 있는 특별한 의미의 주소이다. 자신의 컴퓨터의 주소가 (IP address가) 무엇인가를 알고 싶을 경우에는 아래와 같이 알아볼 수 있다.

Windows를 이용한다는 가정 하에 CMD 창을 불러 “ipconfig /all”이라고 치면 그림과 같은 화면을 볼 수 있을텐데 이 경우에 130.64.251.198이 컴퓨터의 IP address를 의미한다. 독자가 http://130.54.251.198이라는 주소를 웹브라우저 창에 넣고 엔터키를 치면, 위의 컴퓨터가

  1. http 요청을 받을 수 있는 서버가 (web 서버) 인스톨되어 있고
  2. 흔히 디폴트로 제공되는 html 웹페이지 내용이 존재한다면

반응을 하여 페이지가 모니터에 나타나게 될 것이다. 위의 조건이 불충족하면 웹브라우저는 얼마동안 노력을 하다가 This webpage is not available과 같은 메시지를 뱉을 것이다.

같은 이치로 http://130.54.251.198 대신 ftp://130.54.251.198를 웹브라우저 주소창에 친다면 (웹브라우저가 간단한 FTP 클라이언트의 기능을 하는 경우이다), 같은 주소의 FTP 서버가 (인스톨되어 있다면) 반응을 해야 할 것이다.

포트, 포워딩

각 프로토콜(FTP, HTTP, UUCP, . . .)은 특정한 포트를 사용한다. 위의 http 경우에는 80번과 8080번 사용이 규정이다. FTP의 경우 21번을 사용하며, secure한 FTP의 경우 22번 혹은 다른 포트를 사용하기도 한다. 웹 브라우저에 http://ajou.ac.kr이라는 주소를 넣으면 반응하는 것은 웹브라우저가 ajou 대학교의 웹서버 80포트로 요청을 했고 웹서버에게는 이것이 정상이므로 반응을 한 것이다. 그러나, http://ajou.ac.kr:7000/ 를 넣게되면 웹브라우저는 “This webpage is not available.” 과 같은 메시지를 뱉게 될 것이다.

보통의 독자라면 ipconfig /all의 명령어에 그림에서 나타나는 아웃 풋을 얻는 것이 보통이다. (192.168.0.161과 같은). 192.168로 시작하는 주소는 일반 네트워크 주소가 아니다. 이는 사적 주소(private networking)의 네트워크 주소를 말하는 것이다. 해당컴퓨터가 속한 네트워크 환경의 내부에서만 작동되도록 하는 주소를 의미한다. 따라서, 외부네트워크의 독자가 웹브라우저를 이용해서 http://192.168.0.161 의 주소로 접근을 하더라도, 해당 컴퓨터에 웹서버가 설치되어 있고 제대로 작동을 한다고 하더라도, 그 웹페이지를 볼 수는 없다. 왜냐하면 독자의 컴퓨터는 내부 네트워크의 컴퓨터가 아닌 외부 네트워크 컴퓨터이기 때문이다.

그렇다면 내부 네트워크는 어떻게 외부와 통신을 하는가?

위 그림의 경우에 default gateway라는 항목을 보면 192.168.0.1 이라고 되어 있는데, 이 주소가 로컬 네트워크로 들어오는 트래픽을 처음 관장하는 게이트웨이가 된다. 따라서, 네트워크 내부에 존재하는 (이 경우, 위의 CMD창이 사용된 컴퓨터) 컴퓨터를 이용해 웹브라우저에 192.168.0.1이라고 치면 게이트웨이 역할을 하는 컴퓨터 혹은 라우터에 접속할 수 있게 된다. 보통은 이 접속 화면은 아이디와 패스워드가 필요하게 된다1).

이 라우터의 ID와 password를 이용해 접속을 한 후, 이 라우터의 네트워크 세팅을 보면 아래와 같을 수 있다.

즉 이 라우터는 202.30.23.141 의 주소를 할당 받고 있는 것이다. 이 라우터는 대외적으로 자신이 202.30.23.141의 요청을 우선 처리(gateway)하고 내부적으로는 192.168.4.x라는 네트워크 환경을 만들어 이 라우터에 연결되는 컴퓨터에 내부용 IP주소를 (이 경우에는 192.168.4.10) 할당하는 것이다.

이 라우터에 물려있는 컴퓨터 A에 XAMPP를 인스톨하고 웹서버를 세웠다고 하자. 외부에서 다른 사람이 http://202.30.23.141 이라는 주소로 접근을 해도, 이 접근 요청은 네트워크의 게이트웨이인 라우터가 받을 것이므로 라우터에 물린 컴퓨터 A의 웹페이지로 전달되지 않는다. 따라서 이 요청이 웹서버가 설치된 컴퓨터에 전달되기 위해서는 특정 조치가 필요하게 된다.

이 단점을 없애기 위해서 Portforwarding 이 생기게 되었다. http://202.30.23.141:80/ 의 HTTP 프로토콜 요청이 80번 포트를 통해서 이루질 때, 라우터는 80포트 요청이 있는 경우에는 내부 IP 주소 중 192.168.4.10이라는 컴퓨터로 그 요청을 보내도록 하는 것이다. 아래 예를 보자.

위의 그림을 보면 외부포트와 내부포트 80에 내부IP가 192.168.4.10이 지정되어 있는데, 이것이 의미하는 것은 라우터에 http://202.20.23.141의 요청이 들어오면 80번 포트를 사용하므로 라우터에 연결된 컴퓨터 중 192.168.4.10의 컴퓨터가 반응을 하도록 하라라는 뜻이 된다. 다른 예로 5005-5006의 예는 5005에서 5006의 포트로 요청이 들어오면 192.168.4.10이 아닌 192.168.4.8의 컴퓨터가 반응을 하도록 하라는 세팅이다.

1)
이 그림에서 192.168.4.1이 이용 된 것은 (주소창을 자세히 보면) 필자의 라우터는 191.168.4.1을 자신의 프라이빗 로컬주소로 지정했기 때문이다. 이 주소는 CMD 창에서 ipconfig /all 을 이용한 후 default gateway: xxx.xxx.xxx.xxx. 에서 찾는다
portforwarding.txt · Last modified: 2015/03/14 20:42 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki