간단하게 서버를 구축할 수 있는 방법은 알FTP를 이용하는 방법이 아닐까 싶습니다. 먼저 https://www.altools.co.kr/EstLab/Default.aspx 에 접속해서 다음 그림의 링크를 통해 설치를 진행합니다.



별다른 설정이 필요 없으므로 설치 과정을 생략합니다.  설치가 완료되었다는 가정에서 “ALFTP Server”를 실행합니다. 처음 실행시 간단한 설정이 필요하므로 다음 그림에 보이는 설정 메뉴를 클릭합니다.



“서버로 사용할 ip 주소“ 는 “내 아이피” 주소입니다. 익명 접속으로 이용하지 않는 이상 계정 설정이 필요하므로 아이디와 비밀번호를 설정하고 만약 iis를 이미 이용 중이라면 포트 충돌을 피하기 위해 21 포트가 아닌 다른 포트를 이용해야 하므로 2121 포트로 설정합니다.


FTP 홈 디렉터리는 기본적으로 “내 PC > 문서 > ALFTPServer” 이며 읽기 전용으로 설정되어 있으니 홈 디렉터리에 임의의 파일을 업로드해 봅니다.



간단하게 설정을 마무리했다면 상단 메뉴 “서버 시작”을 클릭합니다.


이로서 서버는 마무리 되었습니다. 실제로 작동하는지 테스트해보기 위해 파일질라FTP를 통해 FTP 작동여부를 확인해볼 수 있습니다. 아무 장애가 없다면 아래 그림처럼 접속이 완료됩니다.


이제 외부 접속자가 사설 ip로 설정된 ftp서버에 접속하는 방법을 설명해 보겠습니다.


사설 ip는 보통 192.168.xxx.xxx, 10.xxx.xxx.xxx, 172.xxx.xxx.xxx 로 시작하는 ip로서 가상 ip로 설명합니다. 이는 외부에서는 사용할 수 없는 ip로 외부에서 ftp://192.168.0.2로 접속하면 접속이 되지 않는데, 이는 공유기 내에서만 존재하는 ip이기 때문입니다.

 

공유기 설정문제로 공유기 어드민에 접속해야 하지만, 제품마다 접속경로가 다르므로, "시작->실행->cmd"로 명령프롬프트창을 띄워 "ipconfig/all"이라는 명령을 내리면, 다음 그림처럼 비슷한 정보를 볼 수 있습니다.



여기서 IPtime 제품이 보통 192.168.0.1 이며 DHCP서버항목인 192.168.0.1 이 어드민 접속경로입니다. 인터넷주소창에 http://192.168.0.1로 접속합니다.

 


관리 도구를 클릭하여 창을 띄우면 메뉴 탐색기가 나타납니다. "메뉴탐색기->고급설정->NAT/라우터 관리->포트포워드 설정"을 선택합니다. 포트포워드는 공유기제품마다 이름이 약간 다르게 표기되는데, 보통 포트포워드, 또는 포트포워딩이라 표기합니다.



이 컴퓨터의 IP가 192.168.0.2 이므로 “내부 IP 주소 항목” 끝에 2를 입력합니다.


프로토콜은 TCP를 선택합니다. TCP는 송수신을 담당하고, UDP는 송신만 합니다. 보통 IPTV는 UDP방식입니다.


외부포트는 기본 80 입니다. 간혹 트래픽문제로 통신사에서 포트를 막아 두는 곳이 있으므로 8080포트로 변경하고 내부포트를 2121로 변경합니다.


여기까지 마무리 하였다면 추가버튼을 누릅니다. 추가가 되었다면, 반드시 설정저장을 해두어야 합니다. IPTime의 경우 상단에 저장버튼이 따로 있습니다.


알ftp는 ftp://192.168.0.2 인 ip 주소에 2121 내부포트를 사용하고, 공유기는 외부포트 8080포트를 사용하도록 설정하였습니다. 공인 ip 주소가 124.58.205.17 이라면 파일질라FTP로 테스트해 봅니다.



이렇게 접속하면 공인 ip를 거쳐 사설 ftp서버로 연결시킬 수 있습니다. 만약, “내 공인 IP” 주소를 모른다면 아래 웹 사이트를 통해 공인 IP를 확인할 수 있습니다.




비트 연산자는 말그대로 0과 1로 이루어진 2진수를 가지고 연산을 합니다.



예제 

 설명

 결과 

 $a & $b

 AND

 두 비트가 모두 1인 값을 반환

 $a | $b

 OR

 두 비트 중 하나라도 1이면 1를 반환

 $a ^ $b

 XOR

 두 비트가 다를 때 1를 반환

 ~$a

 NOT

 비트 NOT 연산자, 비트 뒤집기

 $a << $b

 Shilft Left

 $a 를 왼쪽으로 $b 만큼 이동

 $a >> $b

 Shift Right

 $a 를 오른쪽으로 $b 만큼 이동


AND 연산자

주어진 비트 중 두 비트가 모두 1이라면 참입니다.


 32  16  8  4  2  1  -> 10 진수 표현

---------------------

  0    0  1  0  1  0  -> 10 진수로 표현하면 10 입니다.

  0    1  1  0  0  0  -> 10 진수로 표현하면 24 입니다.

---------------------

  0    0  1  0  0  0   -> 10 진수로 표현하면 8입니다.

---------------------


 여기서 두 비트가 일치하는 비트는 8이므로 8을 반환합니다. 

ex.1)

 <?php
   echo 10 & 24; // 결과: 8 
 ?>


OR 연산자

주어진 비트 중 하나라도 1이면 참으로 합니다.


 32  16  8  4  2  1  -> 10 진수 표현

---------------------

  0    0  1  0  1  0  -> 10 진수로 표현하면 10 입니다.

  0    1  1  0  0  0  -> 10 진수로 표현하면 24 입니다.

---------------------

  0    1  1  0  1  0   -> 10 진수로 표현하면 26입니다. ex.1) 16 + 8 + 2 = 26

---------------------


 여기서 두 비트 중 하나라도 일치하는 비트는 16, 8, 2 이므로 26 입니다. 


ex.1)

 <?php
   echo 10 | 24; // 결과: 26 
 ?>


XOR 연산자

주어진 비트 중 두 비트가 다른 값을 반환합니다.

 32  16  8  4  2  1  -> 10 진수 표현

---------------------

  0    0  1  0  1  0  -> 10 진수로 표현하면 10 입니다.

  0    1  1  0  0  0  -> 10 진수로 표현하면 24 입니다.

---------------------

  0    1  0  0  1  0   -> 10 진수로 표현하면 18입니다. ex.1)  16 + 2 = 18

---------------------


 여기서 두 비트가 일치하지 않는 비트는 16과 2이므로 18을 반환합니다. 


ex.1)

 <?php
 echo 10 ^ 24; // 결과: 18 
 ?>


NOT 연산자

비트 NOT 연산자는 1를 0으로 0을 1로 바꾸는 것으로 "비트 뒤집기" 또는 "비트 반전"이라고 부릅니다.

 32  16  8  4  2  1   0 -1 -2 -4 -8 -16   -> 10 진수 표현

----------------------------------------

  0    0  1  0  1  0   0  0  0  0   0    0   -> 10 진수로 표현하면 10 입니다.

----------------------------------------

  0    0  0  1  0  1  -1 -1 -1-1 -1    0   -> 10 진수로 표현하면 -11 입니다.


  ex.1)  10 - 20 - 1 = -11


ex.1)

 <?php
 echo ~10; // 결과: -11 

 echo ~100; // 결과: -101

 echo ~50; // 결과: -51

 echo ~25; // 결과: -26
 ?>


Shift Left 연산자

주어진 값 만큼 왼쪽으로 비트를 이동하는 연산자입니다. 각 단계는 2로 곱하기를 의미합니다.


 32  16  8  4  2  1  -> 10 진수 표현

---------------------

  0    0  1  0  1  0  -> 10 진수로 표현하면 10 입니다.

-<--<--<--<--<--- 

  0    1  0  1  0  0   -> 비트를 왼쪽으로 1만큼 이동시키면 20 이 됩니다.


 여기서 8과 2를 왼쪽으로 1칸 이동시키면 16과 4가 되므로 결과는 20 이 됩니다.

 ex.) 10*2 = 20이 되며 2칸 이동시키면 10*2*2 = 40 이 됩니다.


ex.1)

 <?php
 echo 10 << 1; // 결과: 20 
 ?>


Shift Right 연산자

주어진 값 만큼 오른쪽으로 비트를 이동하는 연산자입니다. 각 단계는 2로 나누기를 의미합니다.


 32  16  8  4  2  1  -> 10 진수 표현

---------------------

  0    0  1  0  1  0  -> 10 진수로 표현하면 10 입니다.

->-->-->-->-->--- 

  0    0  0  1  0  1   -> 비트를 오른쪽으로 1만큼 이동시키면 5가 됩니다.


 여기서 8과 2를 오른쪽으로 1칸 이동시키면 4와 1이 되므로 결과는 5 이 됩니다.

 ex.) 10/2 = 5가 되며 2칸 이동시키면 10/2 = 5/2 = 2 가 됩니다.


ex.1)

 <?php
 echo 10 >> 1; // 결과: 5
 ?>