自然言語処理(しぜんげんごしょり、英語natural language processing、略称:NLP):人間が日常的に使っている自然言語コンピュータに処理させる一連の技術であり、人工知能言語学の一分野である。


▶JAR파일 : 클래스 파일의 효율적인 배포를 위해 여러 클래스 파일들을 하나로 묶어 단일의 파일로 만드는 포멧. 로컬(local)상에서 편리한 관리는 물론 자바(Java) 프로그램 실행 중에 원격지에서 하이퍼텍스트 전송 규약(HTTP) 등을 통해 내려받기(download)되어 바로 사용이 가능.


▶WAR파일 : jsp, 서블렛, 자바, html 등 웹어플리케이션 생성에 필요한 파일들이 모여있는 파일


▶batch file : A batch file is a text file that contains a sequence of commands for a computer operating system. It's called a batch file because it batches (bundles or packages) into a single file a set of commands that would otherwise have to be presented to the system interactively from a keyboard one at a time. A batch file is usually created for command sequences for which a user has a repeated need. Commonly needed batch files are often delivered as part of an operating system. You initiate the sequence of commands in the batch file by simply entering the name of the batch file on a command line.


Shell : 리눅스는 커널(Kernel)이라고 불리는 하드웨어를 직접 제어하는 부분과 그 위에서 커널에 명령을 주는 하나 이상의 쉘(Shell)로 구성되어 있다. 커널은 하드웨어를 직접 제어하는 리눅스의 핵심부로서 쉘에서 임무를 받아서 수행한다. 쉘은 명령어 기반 인터페이스 인데 이것을 통해서  사용자는 리눅스 OS와 상호 작용을 하게된다.우리가 도스상에서 내리는 대부분의 명령은 command.com이라는 파일이 처리한다. 전문가들은 이 command.com파일을 운영체제의 쉘(Shell)프로그램이라고 말한다. 쉘 프로그램은 사용자가 내린 명령을 운영체제가 수행할 수 있는 명령어를 입력받고 이를 컴퓨터의 운영체제에 전달하는 일을 한다. 다시 말해 쉘은 사용자가 내린 명령을 커널이 이해할 수 있도록 통역해준다. 그래서 명령어해석기라고도 불린다.


kernel :운영체제의 핵심은 커널 부분이다. 도스로 말하면 io.sys와 같은 파일이 이에 해당한다.  실질적으로 사용자가 내린 명령을 수행하면서 컴퓨터의 하드웨어를 조작하는 파일이다. 이 처럼 실질적으로 사용자의 명령을 수행하면서 파일의 입출력을 담당하고, 하드웨어를 관리하는 프로그램을 커널이라고 한다. 그리고 운영체제의 핵심은 커널이라고 부른다.


쉘과 커널로 구분하는 이유 :  운영체제의 핵심이 커널이지만 사용자가 바로 커널을 제어하기는 매우 어렵다. 기계적인 부분이 많기 떄문이다. 그래서 사용자가 내린 명령을 운영체제의 핵심인 커널 부분이 이해할 수 있도록 번역해주는 프로그램이 필요 했고 이 번역장치에 해당하는게 쉘이다. 그래서 우리가 운영체제라고 부르는 프로그램은 크게 커널과 쉘로 구성 된다


 


Amazon Web Services(アマゾン ウェブ サービス、AWS):  AWS의 주요 고객은 개발자 엔지니어 등 IT 관계자이며, AWS가 제공하는 서비스는 ‘인프라’다.

웹사이트를 구축한다고 치자. 개발자는 웹사이트에 들어갈 이미지와 글을 저장해야 한다. 사용자에게 웹사이트 내용을 보여주도록 명령하고 제어하는 시스템도 필요하다. 이러한 과정을 위해선 스토리지나 서버 등을 설치해야 한다. 개발자는 이러한 하드웨어를 설치할 공간을 사무실 한켠에 마련하고 각종 환경설정 및 네트워크 환경을 구축하기 위해 며칠씩 시간을 소비한다.

만약 3일만 웹사이트를 운영하고 싶다면 어떨까? 3일 동안 사용하기 위해 서버와 스토리지를 구매하기엔 비용이 너무 많이 들어간다. 게다가 사용자가 늘어나거나 웹사이트 내부에 저장할 데이터가 많아지면 서버나 스토리지를 더 구매해야 한다. 그런데 3일 뒤 사용자가 썰물처럼 빠져나가면 이미 구매한 서버나 스토리지는 개점 휴업 상태가 된다. 비용 측면에서 꽤나 비효율적이다.

이러한 상황을 개선한 게 클라우드다. AWS는 대량의 서버, 스토리지, 네트워크 장비를 구매해놓고 사용자가에 인프라를 대여해준다. 사용자는 각 장비를 사용한 만큼만 비용을 지불하면 된다. 그래서 AWS 서비스를 ‘인프라로서의 서비스’(Infrasture as a Service, Iaas)라고 부른다.

그렇다면 어떤 기업이 AWS에 주로 관심을 보일까? 처음에는 주로 예산이 적은 스타트업이 클라우드에 관심을 보였다. 모바일게임 업체가 대표적이다. 10만명의 게임 사용자를 예상하고 하드웨어를 구매했는데, 막상 게임을 출시했더니 사용자가 100만명이 몰릴 수도 있다. AWS는 사용자 수에 맞춰 단 몇 분 안에 서버를 자동으로 증설해준다. 게임업체는 물리적인 하드웨어를 구매하는 것보다 더 빠르고 안정적으로 서비스를 운영할 수 있다. 서비스를 테스트하려고 임시 인프라를 구축할 때도 클라우드를 많이 이용한다. 해외 진출을 노리는 업체들에게도 인기가 높다. 클라우드 업체는 북미, 유럽, 아시아 등 여러 곳에 인프라를 구축해놓는다. 사용자는 이용하고 싶은 지역을 자유롭게 선택할 수 있다. 한국 기업이 미국 사용자를 대상으로 게임을 내놓을 때 지역 설정만 바꾸면 보다 빠른 속도로 서비스를 제공할 수 있다.

클라우드 이전에 비슷한 서비스가 웹 호스팅, 서버 호스팅이었다. 이들 서비스는 어떤 차이가 있을까? 먼저 웹 호스팅 업체들은 서버를 대신 구매하고 서버 공간을 분할해서 사용자에게 나눠준다. 웹 호스팅 업체들이 대부분 설정과 구축 환경을 관리하기 때문에 사용자는 원하는 소프트웨어를 따로 설치할 수 없다. 반대로 생각하면 사용자는 인프라에 대해 잘 몰라도 웹 호스팅 업체들이 제공하는 기능을 선택해 웹사이트를 구축할 수 있다. 비전공자가 간단한 개인용 웹사이트를 구축하기 위해서 이러한 웹 호스팅 서비스를 많이 이용한다.

서버 호스팅은 서버 1대를 통째로 빌려주는 서비스를 일컫는다. 클라우드는 서버 호스팅과 비슷하지만 다양한 메모리나 스토리지 용량 등을 선택할 수 있고 인프라 규모도 무한대로 늘릴 수 있다는 차이가 있다. 클라우드 서비스는 엔지니어 입맛에 맞게 인프라를 구축할 수 있지만, 반대로 내부에 전문가가 없는 기업에선 이러한 클라우드 서비스가 어려울 수 있다. 서버 호스팅 업체들은 컨설팅을 통해 인프라를 분석해주고 맞춤 서비스를 제안해주면서 경쟁력을 높이고 있다.


▶RPA : Robotic Processing Automation. It is an automatic system which makes process automated which is repetitively performed.


▶EMT : Easy Master maintenance Tool


▶MarkUp Language : (초간략)문서의 기본 정보에 추가적인 정보를 제공하기 위해 사용되는 언어. 문서를 구성하는 가장 기본적인 텍스트 이외에 내용을 강조하기 위해 밑줄을 긋는다던지, 펼표를 친다던지, 글의 논리적 구성을 나눈다던지(서론, 본론...,결론) 하는 작업이 쉽게보면 마크업에 해당한다. 정리하면, 마크업(Markup)이란 문서의 내용이 아니라 내용이 어떻게 배치되고 어떤 크기와 모양을 가지며 여백은 어느 정도인지를 표현하는 기술이라고 볼 수 있다. 


(간략)태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지이다.태그는 원래 텍스트와는 별도로 원고의 교정부호와 주석을 표현하기 위한 것이였으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었다. 이러한 태그 방법의 체계를 마크업 언어라 한다.


문서에는 문서 내용 이외에, 문서의 논리 구조나 체제와 같은 문서의 서식 작성(formatting)을 지정하거나, 문서 내용의 찾아보기 또는 찾아보기 작업(indexing) 방법을 지정하거나 문서 중의 단어나 구, 화상과 같은 어떤 요소를 같은 문서 또는 다른 문서 중의 다른 요소와 연결(link)하는 방법을 지정하여 컴퓨터 시스템에 지시하는 마크업 정보가 추가된다. 마크업 언어는 문서 내에 끼워 넣는(embed) 일련의 부호로 구성된다. 대표적인 마크업 언어로는 월드 와이드 웹(WWW)의 홈 페이지에 사용되는 하이퍼텍스트 생성 언어(HTML)와 국제표준화기구(ISO)가 표준화한 표준 범용 문서 생성 언어(SGML)를 들 수 있다. 이런 종류의 마크업 언어는 대부분 텍스트 문서와 파일이 기종과 독립적으로 응용 프로그램 간에 교환될 수 있도록 이식성을 높이기 위해 설계되었다.


XML(Extensible Markup Language): W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다.

1. HTML의 한계를 극복하고자 나왔다.

2. 사용자 정의 TAG가 가능하다.

3. 인터넷에 연결된 시스템끼리 쉽게 정보를 주고받는다.


▶node.js : JS는 웹브라우저에서만 사용되는 언어였는데, JS를 웹 서버에서도 사용될 수 있도록 한 것이 nodejs이다. 어떻게 그렇게 했다는거?


▶Internet : (간략)인터넷은 다른 컴퓨터와 연결될 수 있는 네트워크 환경을 의미한다. 그리고 그 환경 내에서 사용되는 소프트웨어가 WEB이다. WEB은 인터넷 환경에서 가장 성공적인 소프트웨어 이기 때문에 때로는 동의어로 사용되기도 하는 것이다. 

(상세)TCP/IP 프로토콜을 통해 연결되어 있는 전 세계적인 네트워크를 두고 말한다.컴퓨터 기술과 통신 기술이 기본이 되어, 각기 다른 기관에 의해 다른 목적으로 구성된 네트워크들이 서로 연결되어 전 세계를 묶는 하나의 거대한 네트워크로, 다양한 서비스를 제공하는 지구촌 네트워크


WEB : 하이퍼텍스트 기능에 의해 인터넷상에 분산되어 존재하는 온갖 종류의 정보를 통일된 방법(Protocol)으로 찾아볼 수 있게 하는 광역 정보 서비스 및 소프트웨어를 말한다. 분산되어 존재하는 정보들을 하나의 체계 안에서 공유하기 위해서 약속한 규약이 HTTP(Hyper Text Tranfer Protocol)이며, 그러한 규약 안에서 사용되는 언어가 HTML(Hyper Text Markup Language)이다. 웹브라우저, 웹서버, 웹어플리케이션 서버, 데이터베이스로 구성된다.

*hypertext : 하이퍼텍스트란 문서와 문서가 link로 연결되어 있는 새로운 형식의 text를 의미한다. 


▶Web Browser(Client) : 웹 서버에 자료를 요청하기 위해 HTTP를 사용하는 클라이언트 프로그램으로, 클라이언트 쪽에서 인터넷에서 웹서버의 하이퍼텍스트 문서를 볼 수 있게 해주는 프로그램이다. 일반적인 기능으로는 웹페이지 열기, 최초 방문한 인터넷 주소(URL)의 목록 제공, 자주 방문하는 URL 기억 및 관리, 웹페이지 저장 및 인쇄, 전자우편이나 뉴스그룹을 이용할수 있는 프로그램과 HTML 문서 편집기능 등이 있다.


▶Web Server : 웹페이지(HTML파일)를 제공해 주는 서버를 말하는 것으로 HTTP를 사용하여 웹페이지를 제공할수 있는 웹 서버 프로그램이 설치되고 있고 하나의 도메인 이름을 갖고있다. 예를 들어 사용자가 웹 브라우저에서 URL로 http://www.daum.net를 입력하면 도메인 이름이 www.daum.net인 서버에게 웹 페이지를 요청하고 서버는 index.html 파일을 찾아서 브라우저에게 보낸다. 따라서 가장 일반적인 웹 서버로는 UNIX 기반의 아파치, WINDOW NT IIS, 네스케이프의 엔터프라이즈 서버가 있다.

 보통 서버는 기존의 우리가 알고 있는 컴퓨터와는 다른 금고같은 모양을 하고 있지만, 단지 서버쪽은 스크린이 필요없고 더 안정적인 부품이 필요하기에 그런 모양새가 된것이지, 일반적인 컴퓨터와 동일하다. 또한, 웹서버만 설치하면 개인 PC도 웹서버의 기능을 할 수 있다.


▶Apache : 서버 쪽의 컴퓨터에는 웹서버 어플리케이션이 존재해야만 웹브라우저에서 요청하는 정보를 받아들이고,응답할 수 있다. 이처럼 request를 받아들이고 response의 기능을 가지고 있는 것이 웹서버 어플리케이션인데, 이중 가장 대표적인 소프트웨어가 Apache이다. 


▶Tomcat : 평소 tomcat과 apache를 잘 구분하지 못하여 공부한 내용을 정리해 본다.아파치 톰캣을 이용해서 웹서버를 띄우고 개발을 진행해왔다. 그런데 실제 일을 하면서 서버를 실핼할때 단순히 tomcat만 쓰는게 아니라 apache라는 프로그램을 별도로 실행하는 것에 혼란이 왔다. 그리고 평소에 apache tomcat은 그렇다면 두개의 프로그램을 합쳐놓은 것인가를 고민하게 되어 정리해 보았다.

1.apache 란?

apach란 것은 소프트웨어 단체 이름이다. 그리고 우리가 흔히 부르는 아파치서버라는 것은 이제단에서 후원하는 오픈소프 프로젝트 커뮤니티에서 만든 http웹서버를 지칭하는 말이다. (아파치 프로젝트는 웹서버 외에도 여러가지 프로젝트를 진행하고 있다고 한다. 이건 추후에 조사해볼것이다.) http 웹서버는 http 요청을 처리할 수 있는 웹서버이고, 아파치 http서버는 http요청을 처리하는 웹서버인 것이다. 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 한다. 아파치는 웹서버 이다!

2.tomcat 이란?

tomcat은 흔히 WAS(Web Application Server)라고 말한다. WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말한다. 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에 전달해주는 역할을 하는 것이 바로 웹 컨테이너 이다. 앞에서 본 아파치 웹 서버와 차이는 이 컨테이너 기능이 가능하냐의 차이가 가장 크다고 생각한다.


WAS역시 웹 서버로써 역할을 수행할 수 있기 때문에 둘을 잘 구별하지 못하면 필자 같은 혼란이 생길 수 있다.

3.둘의 차이는?

그렇다면 WAS만 쓰면 되지 어째서 웹서버를 따로 쓰느냐는 의문이 생길 수 있다. 그 이유는 목적이 다르기 때문이다. 웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html파일과 같은 리소스를 제공하는 서버는 웹 서버를 통하면 WAS를 이용하는 것보다 빠르고 안정적이다(왜? 다른 글 소스로 써볼까?) WAS는 동적인 데이터를 처리하는 서버이다. DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우에는 WAS를 활용 해야 한다.


4.연동의 필요성

대부분의 웹 컨테이너(톰캣 포함)는 웹서버 기능이 포함되어 있다. 그럼에도 불구하고 다른 웹서버와 연동해서 사용하는 이유를 정리해 보면 다음과 같다.

-톰캣은 아파치 웹서버 만큼 정적인 문서를 빠르게 처리하지 못한다.
-톰캣은 아파치 웹서버 만큼 다양한 옵션 및 환경 설정 기능을 제공하지 못한다.
-톰캣은 아파치 웹서버 만큼 안정적이지 못하다.
-이미 많은 사이트들이 웹서버 기반으로 많은 시스템 들을 개발하였다. 예를 들어, CGI, PHP 등 서버 사이드 애플리케이션 들과 더불어 다양한 모듈들이 포함되어 있는데 이 모든 기능을 톰캣에서는 실행시킬 수 없다.

이러한 이유로 웹서버와 톰캣을 연동해서 사용하는 것을 권한다. 또한 웹서버와 연동을 시키지 않은 상태에서 톰캣에 접속하기 위해서는 HTTP의 기본 포트인 80포트가 아닌 8080 포트를 통해서 접속해야만 한다[1]. 이때 아파치 웹서버와 톰캣을 연동을 시키게 되면 8080 포트가 아닌 웹서버의 표준 포트인 80포트를 이용해서 접속이 가능하다. 이러한 이유 외에도 다양한 문제가 존재한다. 예를 들어 보안과 관련된 문제도 발생할 수 있으며 하나의 웹서버에 여러 개의 톰캣을 연결해서 로드 발랜싱을 구현할 수도 있다. 즉 좀 더 폭넓은 선택과 운영의 유연성을 제공하기에 필자는 웹서버와의 연동을 반드시 하기를 권한다.
구체적 연동방법 -> 클릭



▶htdocs(document root) : 웹서버가 웹브라우저에서 요청한 문서를 찾는 최상의 디렉토리이다. 디폴트로 설정된 디렉토리로 htdocs의 디렉토리에 저장해야만 클라이언트가 원하는 문서를 전달할 수 있는데, 설정변경을 통해 다른 디렉토리로 변경이 가능하기는 하다.


▶CUI(Character User Interface) : 文字だけでやり取りをするのですが、代表的なものは Windowsに搭載されている CMDといわれるものです。


▶GUI(Graphical User Interface) : GUIは、グラフィカルな画面で分かりやすく情報のやり取りができます。今使っているWindowsのパソコンが GUIです。キーボードの他 マウスやタッチパネルも使われます。

 デスクトップ画面を見るとわかりますが、グラフィカルで アイコンやメニューボタンなどが用意されていて、どのように操作すればよいのか 分かりやすくなっています。
 例えばパソコンを使っていると当たり前のように出てくる、メニューバー、プルダウンメニュー、チェックボックス、選択ボタン、テキストボックス、エラーメッセージなどすべて GUIを構成しているものになります。

▶IP(Internet Protocol):(간략)각 가정의 전화선에도 부여된 전화번호가 존재하듯, 각 네트워크 선에도 부여된 주소가 존재하는데 이것을 IP라고 부른다. 모든 장비에는 IP 주소가 부여되어야만 한다는 의미로 이해하면 되겠다.

(상세)IP 주소(Internet Protocol address, 표준어: 인터넷규약주소)는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 한다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달된다. IP 주소를 줄여서 IP라고 부르기도 하나 IP는 인터넷 규약 자체를 가리키는 말이기 때문에 엄밀하게는 구별해야 한다.

IPv4 주소 : IPv4는 32비트 데이터로 구성된 IP 주소를 말하며 우리가 보편적으로 쓰고 있는 IP 주소 체계다. 보통 aaa.bbb.ccc.ddd 형식으로 표기하는데, 0~255 사이의 숫자 4개로 구성된다. 물론 이것은 사람이 보기 쉽게 표기한 것이고 실제 컴퓨터 내부에서는 0 ~ 4,294,967,295까지의 정수로 표현되고 있다. 범위에서 볼 수 있듯이 대략 42억개의 주소를 사용할 수 있는 셈인데 특수한 목적을 위해 예약해 둔 영역도 제법 되고, 한 명이 여러 개의 아이피를 사용하는 경우도 많이 있었기에 2011년 2월 5일 기준, 공인 아이피 주소가 모두 고갈된 상태다.[3](#)

예전에는 IP를 할당할 때 클래스를 나누어서 할당하였는데 처음에는 주로 Class-B(128.0.0.0~191.255.255.255)의 영역에서 할당했지만인터넷이 점점 발달되고 보편화되면서 IP 주소의 소모가 빨라지자 클래스로 나누어 할당하는 방식을 더 이상 사용하지 않고 대신 CIDR(사이더)란 방식으로 할당하기 시작하였다.

IPv6은 128비트 데이터로 구성된 IP 주소를 말하며 IPv4의 주소가 고갈되는 것에 대비해 만들어 둔 IP 주소 체계이다. 앞으로 늘어날 아이피 주소의 수요를 감당하기 위하여 128비트를 사용하는 IPv6로 전환될 예정이다. IPv6은 총 2^128개 주소를 가질 수 있으므로 통신이 가능한 기기마다 공인 IP를 하나씩 할당해도 고갈될 걱정이 없을 정도로 주소가 매우 넘쳐날 것으로 기대하고 있다. 참고로 알기 쉽게 수치화하면, IPv4의 최대 할당 가능한 IP 개수가 2의 32제곱으로 4,294,967,296개인 반면, IPv6의 최대 할당 IP 개수는 2의 128제곱인340,282,366,920,938,463,463,374,607,431,768,211,456(약 340간)개이다. 사실상 무한하다고 생각해도 될 정도의 개수다. 자리수만 39개다.참고로 IP 주소 하나가 1g이라고 치면 IPv4는 4294t 정도이지만 IPv6는 태양 질량의 20만배에 달한다. 유선 인터넷은 미국과 유럽 지역부터 보급이 이루어지고 있으며, 모바일 인터넷도 차차 IPv6으로 전환 중인 추세다.


▶공인ip와 사설ip의 이해

공인 IP는 '서울시 도봉구 창2동 624-15' 와 같이 우편물이 배달 가능한 주소이고 사설 IP는 '우리 집의 작은방에 책상서랍' 과 같이 우리 집에서만 이해 가능한 주소입니다.


▶공인 IP(global IP): 앞에서 설명한 IPv4 주소는 임의로 우리가 부여하는 것이 아니라 전세계적으로 ICANN이라는 기관이 국가별로 사용할 IP 대역을 관리하고 우리 나라는 인터넷 진흥원(KISA)에서 우리나라 내에서 사용할 주소를 관리하고 있다. 따라서, 임의로 아무 IP 주소나 내 컴퓨터에 지정한다고 인터넷이 되는 것이 아니라 할당받은 주소를 부여해야만 인터넷에 접속할 수 있게 된다.

IPv4는 크게 4자리의 대역에 따라서 다음과 같이 분류할 수 있다. http://ko.wikipedia.org/wiki/IPv4 에 자세한 내용이 설명되어 있다.

  • A 클래스는 네자리의 IP 주소 대역 중에서 두번째, 세번째, 네번째 주소를 마음대로 부여할 수 있는 최상의 클래스로 클래스 당 255 x 255 x 255 개의 주소를 가질 수 있다.
  • B 클래스는 네자리의 IP 주소 대역 중에서 세번째, 네번째 주소를 마음대로 부여할 수 있는 클래스로 클래스 당 255 x 255 개의 주소를 가질 수 있다.
  • C 클래스는 맨 뒤 네번째 자리만 마음대로 부여할 수 있는 주소로 클래스 당 255개의 주소를 갖는다.

이와 같이 클래스를 분류해뒀는데, 문제는 IP가 부족하다보니 서버 운영 시에 원하는 대로 IP 주소를 부여받을 수 없고, 서버 운영 업체나 기관 들에 할당된(미리 돈을 지불하고 산다) 주소 중에서 자신의 컴퓨터에 주소를 할당 받아야 한다.

최근의 IP 부족 사태는 인터넷 발전 초기에 IP 주소를 무계획적으로 배분했기 때문에 발생하는 문제이다. 대표적으로 미국의 일반 기업인 IBM이나 모토롤라 등은 초기에 인터넷 주소를 부여받으면서 A 클래스를 부여받았고, 우리나라내에서도 KAIST나 서울대 등은 B 클래스를 보유하여 학교내의 PC들에게도 마구 공인 IP를 부여하고 있는 웃지 못할 상황이다. 반면 최근에 IP를 신청하는 기업은 많은 비용을 지불하고도 C 클래스 대역조차 얻기가 쉽지않은 현실이다.


▶사설 IP(private IP) : 전체 IP 대역 중에서 특수한 목적으로 사용하기 위해서 몇 개의 대역을 제외하고 공인 IP 대역으로 할당하고 있는데, 제외된 대역 중에서 사설 IP로 사용되는 대역은 사용자가 임의로 부여하고 사용할 수 있지만 인터넷 상에서 서로 연결되지 않도록 되어 있다. 전체 IP 대역 중에서 다음의 대역이 사설 IP 대역이다.

  • A 클래스 : 10.0.0.0 ~ 10.255.255.255
  • B 클래스 : 172.16.0.0 ~ 172.31.255.255
  • C 클래스 : 192.168.0.0 ~ 192.168.255.255

위의 3개의 클래스 대역은 사용자가 자신의 컴퓨터에 임의로 부여해도 되는 IP 주소 대역이 된다.

따라서 회사 내부나 집에서는 공인 IP를 부여받지 않은 상태에서 위의 주소 대역 중에서 아무 주소나 할당을 해도 문제가 발생하지 않는다는 것이다.

따라서 공인 IP 주소가 모자랄 경우 사설 IP로 회사나 가정 내의 IP 주소를 부여하고 공유기 등에 고정 IP를 부여한 다음에 인터넷에 접속하는 방식이 널리 퍼지게 되었고, 대부분의 장비가 현재는 사설 IP를 부여하고 공유기나 라우터(사실 공유기가 라우터다)를 통해 인터넷에 접속하게 된다. 단 사설 IP를 부여한 컴퓨터는 공인 IP에서 알아볼 수가 없다는 점이 특징이다.

위의 그림을 보면 컴퓨터에 부여된 IP 주소인 192.168.0.2 ~ 192.168.0.4과 공유기의 내부 주소인 192.168.0.1은 사설 IP이고 공유기가 인터넷에 연결된 168.126.63.1은 공인 IP가 된다. 서버에 설치된 IP인 164.124.101.2도 공인 IP이다. 따라서 인터넷 상에서  164.124.101.2라는 주소를 치면 서버에 접속할 수 있지만 192.168.0.x 대역에 있는 피시와 노트북에는 접속할 수 없다. 가정에 설치된 공유기 관리 화면에 접속해보면 위의 같은 형태로 IP가 부여되어 있음을 알 수 있을 것이다.


공유기(라우터)는 공인 IP를 할당받아, 다시 3개의 사설 IP를 할당한다. 따라서, 2번째 컴퓨터에 들어있는 웹서버는 사설IP이기 때문에, 인터넷 환경과 연결되지 않는다.



   



▶고정IP와 유동IP :  공유기로부터 사설IP를 부여받을 경우, 접속할 때마다 사설IP가 변경되는 것을 유동IP라고 하며, 사설IP의 주소로 할당된 범위 중 하나의 IP를 자신의 PC의 고정으로 할당하는 것을 고정IP라고 한다. 일반적인 가정의 네트워크환경에서는 하나의 사설IP당 1대의 컴퓨터를 연결하므로 고정IP를 할당해도 되지만, 하나의 사설IP당 여러개의 유동IP를 갖는 공공시설의 경우 고정IP를 설정하면 IP주소가 겹칠 수도 있으므로, 공공장소에서는 고정IP를 할당하지 않는 것이 좋다.


▶도메인 : 하나의 서버를 164.124.101.2와 같은 숫자로 이루어진 주소로 가르킬 수 있고, www.naver.com과 같은 주소로도 가르킬 수가 있다. 이때 www.naver.com과 같은 주소를 도메인이라고 부른다. 본래, 컴퓨터는 숫자로 이루어진 IP주소만 인식할 수 있는데, DNS(Domain Name System)에 의한 시스템에 의해 Name Server에서 도메인이 IP주소로 변환된 후 서버에 접속하게 된다.


 

▶PORT : (간략)IP를 집주소라고 한다면, PORT는 집의 각 호수와 같은 개념이다. 네트워크와 연결되는 각 소프트웨어가 하나씩의 포트값을 갖게된다. http://222.42.11.3:80/index.php의 이미를 하나하나 해석해보면, 1.http : http 규약으로 의사소통할 것을 의미 2. 222.42.11.3서버의 ip주소를 의미 3. :80 서버의 포트번호를 의미 4. index.php 서버의 디렉토리 주소를 의미. 아래에서 "포트는 통신의 종단점이다" 라고 표현한 부분의 의미가 바로 이 때문이다. 

(상세)인터넷 프로토콜 스위트에서 포트(port)는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다.



▶포트포워딩





 


스크립트 언어(scripting language): 컴퓨터 프로그래밍 언어로서 응용 소프트웨어를 제어한다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트(scripts)는 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(batch languages) 또는 작업 제어 언어(job control language)라고도 불리었다.


▶프레임워크 : 특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속. 단어 그대로 언어를 더 효율적으로 조작하기 위해 미리 만들어 놓은 틀(프레임)


▶Maven : 메이븐은 자바의 라이브러리를 한데 모아 관리하는 repository(저장소)이다.(메이븐 사이트에 전세계적으로 공유되고 있는 라이브러리들이 개제되어 있다. https://mvnrepository.com/) pom.xml 파일을 통해 각 프로젝트에 필요한 라이브러리들이 메이븐 사이트로부터 자동으로 다운로드되어 C:\Users\User\.m2\repository에 격납된다. 만약, pom.xml파일에 오류가 난다면, 기존의 메이블 디렉토리에 저장된 repository를 모두 삭제후 필요한 repository를 springboot initializer(https://start.spring.io/)에서 받은 프로젝트에 포함된 pom파일로 갱신하면 된다.



정적 웹 페이지

-사용자(클라이언트)가 URL을 입력하여 요청을 하면 해당 URL(IP + PORT + 웹서버의 디렉토리 주소로 구성)의 웹서버에서 이미 저장되어 있는 html 문서를 사용자(클라이언트)에 보내준다.

-사용자는 서버에 저장된 데이터가 변경되지 않는 이상 고정된 웹 페이지를 보게 됨.

ex) 보통 어떠한 회사 홈페이지에서 회사소개 페이지는 항상 같은 내용을 담은 정적 웹 페이지(html문서)이다.





 

 


동적 웹 페이지 

-사용자(클라이언트)가 어떠한 요청을 하면 웹서버에서 요청 정보를 가공처리한 후 생성된 html을 사용자(클라이언트)에게 보내준다.

-즉, 모든 사용자들은 요청에 따라 각각 다른 화면을 보게 된다.

ex) 어떠한 홈페이지 접속시 매일 네이버에서 로그인 요청 시 로그인 결과화면은 회원마다 각각 다른 화면을 볼 수 있다.


▶서버,클라이언트와 동적,정적웹페이지의 구분


。자바스크립트?

 - 동적인 웹 페이지를 만들이 위해 사용하는 언어

    자바스크립트를 사용하는 가장 큰 이유중 하나가 바로 동적인 웹 페이지를 만들이 위해 사용이 됩니다. 여기서 동적인 웹페이지를 만들기위해 사용되는 언어가 자바스크립트만 있는게 아닙니다. HTML,JSP,Servlet,ASP등 많은 언어들이 있습니다.

    (☞ HTML 동적페이지를 만들수 있는 부분도 존재하기에 적었습니다.)


。자바스크립트를 활용 하는 이유?

 - 웹페이지 HTML에서 구조와 내용을 담당 한다면 자바스크립트 에서는 행동을 담당합니다.

   동적인 웹페이지를 만들기 위해 사용되는 언어가 자바스크립트 라고 설명했습니다. 그러나 JSP,Servlet,ASP등도 있다고

   설명했습니다. 그렇다면 JSP,Servlet,ASP 만으로 동적인 웹페이지를 작성한다면 자바스크립트의 활용은 필요 없지 않을까요?

   여기에 대한 설명은 다음과 같습니다.


   Javascript는 "웹 브라우저" 가 이해하는 언어(HTML, Javascript, CSS) 로 "웹 브라우저"에서 실행됩니다.  (클라이언트 측)

   JSP,Servlet,ASP는 "웹 서버" 에서 해석되고 실행되어 그 결과만 "HTML"로 변환되어 "웹 브라우저"에 보여줍니다. (서버 측)

   1. 웹 브라우저의 요청에 javascript는 바로바로 즉각 반응이 가능합니다.  그렇기에 매우 빠른 동작속도와 편리합니다.

   2. 웹 브라우저의 요청에 JSP,Servlet,ASP는 "웹 서버"에서 실행 됩니다. 즉 브라우저의 요청에 즉각 적인 반응을 하지 못하고

       웹 서버에 요청을 보내고 웹 서버에서 해석하여 HTML로 변환되어 웹 브라우저에 요청을 답합니다. 즉 시간이 매우 오래 걸리며

       웹 서버의 다른 동작을 방해하기 때문에 불편합니다.

결과 적으로 반드시 서버 측에서 처리해야하는 것만 JSP,Servlet,ASP 등으로 작성하고  웹 브라우저상에서 처리 가능한 것은

      javascript로 작성 하는것이 좋겠습니다.


 

▶domain model

 어떤 추상적인 업무를 하나의 기능만을 지닌 업무들로 세분화하여 그 관계를 나타낸것.
이로써 프로그래밍을 할때 인풋과 아웃풋을 명확하게 할 수 있다. + 이후의 메인테넨스나 재사용성을 고려하는 것도 필요


▶모듈

 모듈은 고정적 개념이 아니라 어떤 동일한 기능을 하고 있는 덩어리. 따라서 클래스가 모듈이 될 수 있고, 일반적으로는 jar을 하나의 모듈로써 인식한다.
 ->내 생각 : 인풋이 들어오고 아웃풋이 나오는 걸 하나의 "업무"라고 하면 이 하나의 업무가 하나의 모듈이 될 수있는 최소 조건이 된다.


캐시

 (cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.


冗長化(じょうちょうか):冗長化(じょうちょうか)とは、システムの一部に何らかの障害が発生した場合に備えて、障害発生後でもシステム全体の機能を維持し続けられるように、予備装置を平常時からバックアップとして配置し運用しておくこと。冗長化によって得られる安全性は冗長性と呼ばれ、英語ではredundancyと呼ぶ。

常に実用稼動が可能な状態を保ち、使用しているシステムに障害が生じたときに瞬時に切り替えることが可能な仕組みを持つ。障害によってシステムが本来の機能を失うと、人命や財産が失われたり、企業活動が大きな打撃を受けるような場合には、冗長性設計が必須となっている。


▶POP

 이메일이 오게되면 서버에 보관이 되어 있다가 우리가 POP프로토콜을 통해 이메일계정으로 접속을 하게되면 해당 이메일을 로컬(email client-아웃룩이 설치된 PC)에 해당 편지를 저장하고 서버에서는 지웁니다.원칙은 이렇지만 보통 POP설정부분에서 원본메일의 사본을 서버에 저장할 수 있도록 옵션을 두고 있기 때문에 설정에 따라 서버에 보존할 수도 있습니다만, 사본을 새로운 메일로 인식하여 다시 다운로드하는등 문제점이 있습니다.암튼 원칙은 서버에서 지우기 때문에 여러대의 pc에 같은 이메일 계정으로 아웃룩에서 pop을 설정했다면 가장 먼저 아웃룩으로 확인한 PC에서만 새로운 메일을 볼 수 있고  나중에 다른 pc에서 확인하면 새로운 메일이 보이지 않습니다.


IMAP

 이메일계정으로 접속하면 일단 이메일들의 제목들만 서버로부터 다운을 받아 유저에게 보여주고,해당 이메일을 열람하게되면 메일의 본문내용을 다운받습니다. 그런데 이때에도 100% 모두 다운로드 하지는 않습니다.이미지같은 컨텐츠를 유저의 의사여부에 따라 노출하도록 설정되어있었고, 해당 이미지를 보지 않았다면 이미지는 다운이 되지 않습니다.또한 로컬에서의 관리(읽지않음,읽음,삭제등 상태플래그)가 그대로 메일 서버에도 똑같이 반영되기 때문에 결국 동기화가 됩니다. 이메일의 제목만 미리 보고 다운받을지에 대해 결정을 할 수 있고 메일을 지우지 않는 한 서버에도 여전히 메일들이 저장되어 있기 때문에 PC에서 봐야할 메일들은 나중에 PC에서 다시 볼 수가 있습니다.


▶티켓 관리

 쉬운 말로 과제관리. 과제관리와 다른 점은 별도의 툴을 사용하느냐 아니냐의 유무정도이다. 과제관리는 엑셀로 하는 것이 통상이지만, 티켓 관리는 더 넓은 영역에서 접속할 수 있도록 웹으로 진행하는 것이 일반적.


▶PROXY server

클라이언트(웹 브라우저)에서 어떤 인터넷 주소의 정보검색에 대한 요구를 받으면그 주소를 그 전에 읽어 저장한 장소에서 찾아있으면 그 정보를 즉시 찾아 주고없으면 그 주소지의 서버로부터 가지고 와서 저장장소에 저장한다 


프락시 서버의 기능에는 캐쉬 기능이 있다네트워크의 트래픽을 줄이고데이터의 전송 시간을 향상 시킨다.방화벽 기능을 
담당하기도 한다
인터넷 동시 접속자가 많을 때음란사이트 등 유해 
사이트를 차단할 때내부 사용자 IP주소를 사설 IP주소로 설정하여 보안을 강화할 때해커 등 외부의 침입을 방지하고자 할 때 유용하다인터넷을 사용할 때 보안이나 규제가 필요한 기업이나 학교 등에서 많이 도입하고 있다.

 


웹 프록시의 개념으로 웹 브라우저가 프록시 서버를 명기하거나 특별한 설정 없이 (transparent caching) 프록시를 이용할 수 있다
이런 경우 
데이타의 흐름이 모두 프록시 서버를 거쳐서 일어나게 된다어떤 웹사이트로 접속을 시도하면우선 프록시 서버로 연결하여 데이터를 가져온 다음에 이것을 사용자의 PC에 전달한다이것의 장점은 웹에서 검색할 때마다 통신선로를 타고 검색하는 것은 통신망의 속도도 느리고통신오류가 발생하면 재전송을 하는 등의 일 때문에 더욱 속도가 느려질 수 있지만먼저 프록시 서버를 연결하여 여기서 찾고자 하는 데이터를 갖고 있으면 빠르게 사용자에게 전달할 수 있다.


방화벽과 캐시 등의 기능들과 하나의 패키지로 통합되어 있는 경우도 있고별도의 서버 프로그램에서 수행될 수도 있다예를 들어
방화벽 서버와 함께 한 컴퓨터 내에 있을 수도 있고
별도의 서버에 존재하면서 방화벽을 통해 요구를 전달하는 것도 가능하다.



▶Forward FROXY

클라이언트가  example.com 에 연결하려고 하면 사용자 PC 가 직접 연결하는게 아니라 포워드 프록시 서버가 요청을 받아서  example.com 에 연결하여 그 결과를 클라이언트에 전달(forward) 해 준다.

포워드 프록시는 대개 캐슁 기능이 있으므로 자주 사용되는 컨텐츠라면 월등한 성능 향상을 가져올 수 있으며 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 기업 환경등에서 많이 사용한다.


▶Reverse FROXY

클라이언트가 example.com 웹 서비스에 데이타를 요청하면 Reverse Proxy는 이 요청을 받아서 내부 서버에서 데이타를 받은후에 이 데이타를 클라이언트에 전달하게 된다.

내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유는 보안때문이다.

보통 기업의 네트워크 환경은 DMZ 라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며 이 구간에는 메일 서버, 웹 서버, FTP 서버등 외부 서비스를 제공하는 서버가 위치하게 된다.

example.com 사는 서비스를 자바로 구현해서 WAS 를 DMZ 에 놓고 서비스해도 되지만 WAS 는 보통 DB 서버와 연결되므로 WAS 가 최전방에 있으면 WAS 가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있다.

이때문에 리버스 프락시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프락시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 하게 된다.


Q : 포워드 프록시 이후에 인터넷 연결이 되는데 클라이언트와 포워드 프록시는 어떻게 연결되어 있는 걸까?
A : 사실 저부분도 인터넷으로 연결된다. 예를 들어 와이파이가 연결되면, 포워드 프록시로만 연결되도록 권한이 제한된 인터넷이 포워드 프록시까지 연결해주고, 포워드 프록시에서 작업을 처리한뒤 인터넷에 클라이언트의 요청을 전달한다. 



▶Load Balancer

로드 밸런싱이란 부하 분산을 위해서 가상(virtual) IP를 통해 여러 서버에 접속하도록 분배하는 기능을 말한다.

하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해 주는 서비스이다. 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서라고 한다. 로드밸런서의 주 목적은 동시에 오는 수 많은 커넥션을 처리하고 해당 커넥션이 요청 노드 중의 하나로 전달될 수 있게 하는 것이다. 그리고 단지 노드를 추가하는 것만으로 서비스가 확장성을 가질 수 있도록 한다. 오픈 소스 로드 밸런서 중 많이 사용되고 있는 것은 HAProxy 이다.
더 자세한 로드벨런서는 여기서 : 
http://asfirstalways.tistory.com/320 



Secure Shell, SSH

시큐어 셸(Secure Shell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 기존의 rsh, rlogin, 텔넷 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다.SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다 하더라도 이해할 수 없는 암호화된 문자로 보인다.ssh의 프로토콜로 서버에 접속하게 해주는 응용프로그램은 한국 어플인 넷사랑의 xshell, putti 등이 있다.


▶PaaS란 무엇인가?

PaaS는 개발자를 위한 일련의 서비스로, 개발자들이 기반 인프라스트럭처에 대해 신경 쓰지 않고 앱을 개발하고 테스트할 수 있게 해준다. 개발자들은 앱을 개발해 내놓는 과정에서 서버, 스토리지, 백업 프로비저닝에 대해 걱정하고 싶어하지 않는다. 그저 코드를 작성하고 앱을 테스트하고 출시한 후 지속적으로 버그를 수정하는 데 전념하고 싶어한다. 서버 설비와 관련된 모든 백엔드 작업은 자동으로, 개발자가 인지하지 못하는 사이에 백그라운드에서 이루어져야 하는데, PaaS의 역할이 바로 그것이다.

http://www.itworld.co.kr/news/80349#csidx9a8c554a121824a870f57e0bf1fe88c 


IaaS, PaaS, SaaS차이점

- IaaS(Infrastructure as a Service)> : 서버를 운영하기 위해서는 서버 자원, IP, Network, Storage, 전력 등등 인프라를 구축하기 위해 여러가지가 필요합니다. Iaas는 이러한 것들을 가상의 환경에서 쉽고 편하게 이용할 수 있게 서비스 형태로 제공합니다. Iass를 서비스로 제공하기 위해 기존 서버 호스팅보다 H/W 확장성이 좋고 탄력적이며 빠른 제공을 할 수 있는 가상화 기술을 이용합니다. Iass는 Pass, Saas의 기반이 되는 기술입니다.


- PasS(Platform as a Service) : 서비스를 개발 할 수 있는 안정적인 환경(Platform)과 그 환경을 이용하는 응용 프로그램을 개발 할 수 있는 API까지 제공하는 형태를 Paas라고 합니다.


- SaaS(Software as a Service) : Cloud환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 것을 Saas라고 합니다. 예를들어 메일 서비스를 들 수 있습니다. 사용자는 이 시스템이 무엇으로 이루어져 있고 어떻게 동작 하고 있는지 그리고 메일을 백업을 어떻게 하는지 알 필요가 없습니다. 그저 서비스 형태로 원하는 단말기(PC, Tablet, SmartPhone 등등)에서 메일을 주고 받으며, 필요하면 언제든지 공간도 늘려서 서비스를 받을 수 있기 때문입니다.


환경변수란?

원래 변수라는 것은, 특정 프로그램 안에서 어떤 값을 메모리에 저장해 놓을 때 쓰는 것입니다. 그런데 만약 컴퓨터 시스템의 전체적인 규모로, 어떤 간단한 값을 저장해 놓고, 여러 프로그램들이 그 값을 쉽게 참조하려면, 환경 변수를 많이 사용합니다. 


WBS

WBS(Work Breakdown Structure:作業分解構成図)は、プロジェクト全体を細かな作業(Work)に分解(Breakdown)した構成図(Structure)です。プロジェクト全体でやるべき作業を洗い出す際にとても役立ちますので、「プロジェクト成功の鍵はWBSにあり」と心しておいてください。 

01.png

Routing, Routing table

데이터가 전달하는 과정에서 여러 네트워크들을 통과해야하는 경우가 생길 수 있다. 여러 네트워크들의 연결을 담당하고 있는 라우터 장비가 데이터의 목적지가 어디인지 확인하여 빠르고 정확한 길을 찾아 전달해주는 것을 Routing(라우팅)이라고 한다.

라우팅을 너무 어렵게 생각할 필요는 없다. 우리가 처음 가보는 장소를 찾아가기 위해 하는 모든 행동들을 라우터가 패킷을 전달하는 라우팅 과정에 비교해보면 쉽게 이해할 수 있다. 예를 들어 새로 생긴 맛집을 찾아가려고 한다는 가정을 해본다.

우리가 가장 먼저하는 것은 아마 그 곳이 어느 동네에 있는지 주소는 무엇인지를 확인하는 일일것이다. 그런 뒤에 목적지인 맛집이 있는 동네로 가기 위해 가장 편하고 빠른 교통수단과 경로는 어디인지를 생각할 것이다. 지하철을 타기로 했다면 몇호선을 어느 방면으로 타야하는지 정확한 방향을 확인한 후에 선택한 교통수단을 이용하여 목적지로 출발한다. 

방금 위에서 본 과정을 라우터가 수신한 패킷을 전달하기 위한 과정으로 비교해서 생각해보자. 

우리가 맛집의 정확한 위치를 파악하는 것 처럼 전달받은 패킷을 전달하기 위해 라우터도 가장 먼저 목적지가 어디인지 IP주소를 확인한다. 그런 뒤에 가장 빠른 경로가 어디인지를 확인하고 그 경로로 가기 위해서는 자신의 어느 인터페이스로 패킷을 내보내야 하는지 결정할 것이다. 그런 뒤에 결정한 인터페이스로 패킷을 전달하면 그 패킷은 또 다른 라우터로 전달되어 위와 같은 과정을 목적지 네트워크에 도착할 때 까지 반복할 것이다. 

이처럼 데이터를 목적지까지 전달하기 위한 모든 일련의 과정을 통틀어 Routing이라고 한다.



NAT(Network Address Translation, 네트워크 주소 변환

 사설 아이피가 외부로 요청을 보낼 때 공용 아이피로 변환시켜 외부와 연결하던가, 반대로 외부로 요청이 들어올 때 공용 아이피로 받아 공용 아이피를 변환시켜 사설 아이피에 연결하는 기능을 한다.

패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 합니다. NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함입니다. 많은 네트워크 관리자들이 NAT를 편리한 기법이라고 보고 널리 사용하고 있으며, NAT가 호스트 간의 통신에 있어서 복잡성을 증가시킬 수 있으므로 네트워크 성능에 영향을 줄 수 있는 것은 당연하다 볼 수 있습니다.

NAT는 IPv4의 주소 부족 문제를 해결하기 위한 방법으로서 고려되었으며, 주로 비공인(사설, local) 네트워크 주소를 사용하는 망에서 외부의 공인망(public, 예를 들면 인터넷)과의 통신을 위해서 네트워크 주소를 변환하는 것입니다. 

즉 내부 망에서는 사설 IP 주소를 사용하여 통신을 하고, 외부망과의 통신시에는 NAT를 거쳐 공인 IP 주소로 자동 변환합니다.


enter image description here



패킷(packet)

패킷(packet)은 사전적인 의미로는 '한 다발, 한 묶음'을 뜻하는 말로 통신, 네트워크에서는 한 번에 전송하는 정보의 단위를 일컫습니다.

좀 더 설명드리자면 통신 등에서는 모든 데이터들을 이와 같은 패킷 단위로 잘게 쪼개어서 전송을 합니다. 매 패킷마다에는 받을 주소지와 데이터 본내용 그리고 에러체크 정보가 들어 있습니다.

그런데 왜 이와같이 잘게 쪼개냐구요?

그 이유는, 예를 들어 100MByte의 크기의 데이터를 전송하고자 할 때 이를 한꺼번에 1초에 1MByte 전송할 수 있는 회선에 보낸다고 칩시다. 그러면 받는 쪽에서는 뭐 대략 100초라는 시간이 걸릴 겁니다.

이렇게 한꺼번에 보내는 경우 아무런 에러없이 한번에 도달했다면 훨씬 효율적이긴 하겠지만 만약에 중간에 회선이 끊기거나 에러체크에 의해 잘못된 데이터가 중간에 1개만 끼었다는 것을 검출하게 되면 다시 처음부터 데이터를 받아야 할 겁니다. 그러면 다시 100초라는 시간을 버리게 됩니다.

반면에 데이터를 패킷단위로 잘게 쪼개어 보내게 되면 예를 들어 1MByte씩 (실제로는 훨씬 적습니다) 쪼갤 경우100번의 과정 즉, 1번패킷전송-수신체크-2번패킷전송-수신체크....... -100번패킷전송-수신체크-완료통보 라는 과정을 거쳐 통신이 이루어지는데 중간에 에러가 나더라도 해당하는 그 번호의 패킷만 재전송하면 되므로 훨씬 효율적이 됩니다.

이러한 이유로 대부분의 데이터 통신에서는 데이터를 패킷단위로 쪼개어 서로 주고 받고 있습니다.

참고로 패킷이 소프트웨어적인 측면에서의 묶음이라면 실제로 데이터를 주고 받는 네트워크 장비에서는 패킷을 다시 프레임이라고하는 역시 아주 작은 단위로 묶어서 신호를 처리하고 있습니다.프레임도 패킷과 같은 이치입니다.(출처: http://jwprogramming.tistory.com/30 [개발자를 꿈꾸는 프로그래머])


vpn
 vpn이란 공유네트워크 상에 사설네트워크를 구축하는 것 혹은 그러한 기술을 의미 합니다. 가상적인 전용선처럼 이용가능하기 때문에 Virtual(仮想的)한 Private Network(専用線)이라고 불립니다. 


▶Ephemeral port

An ephemeral port is a short-lived transport protocol port for Internet Protocol (IP) communications. Ephemeral ports are allocated automatically from a predefined range by the IP stack software. An ephemeral port is typically used by the Transmission Control Protocol (TCP), User Datagram Protocol (UDP), or the Stream Control Transmission Protocol (SCTP) as the port assignment for the client end of a client–server communication to a well-known port on a server.


▶Kitting(キッティング)

パソコンなどの導入時に実施するセットアップ作業のこと。

必要なアプリケーションのインストールや社内ネットワークへの接続など、ユーザがすぐに利用できる状態にすること。パソコンの新規導入時の初期設定だけではなく、PC入替え、WindowsなどのOSの移行時にもデータ移行も含めて同様の設定作業が必要となる。単純作業ではあるが、毎年春の新入社員の受け入れ準備などで数十台、数百台規模で実施することになる。手作業で同じ作業を繰り返すことの作業者負担は非常に大きく、多くの企業で課題となっている。


作業時間は条件によって異なるため、一概にはいえないが、一般的なWindowsPCで1台数時間を要すといわれる。仮に1台3時間の設定時間がかかるPC100台を一人の作業者がキッティング作業をすると、合計300時間を要すことになる。一日8時間労働で37.5日、一日2時間残業してもらっても30日、約一月半もかかる膨大な作業となる。PC側の処理待ち時間に同時並行で作業することもできるが、それでも限界がある。


そこで、キッティングの自動化ツールやキッティングを含むPCの調達から導入、廃棄までを支援するLCMサービスがITベンダ各社より提供されている。IT資産管理などの機能も併せ持つ管理ツールの提供やIT資産のライフサイクル管理全般をサポートするサービスなどがある。


DNSラウンドロビンと
DNSの仕組みにおいて、1つのドメイン名に対して複数のIPアドレスを割り当てることによって、負荷を分散する仕組み


Stateless와 Stateful 

Stateless란 http와 같이 client의 이전 상태를 기록하지 않는 접속이란 의미입니다.

그에 비해 Stateful은 client의 이전 상태를 기록하고 있는 것이죠.

 

Stateless는 웹서버가 사용자의 작업을 기억하고 있지 않다는 의미이고

Stateful은 사용자의 상태를 서버가 기억하고 있다가 유용한 정보로써 활용한다는 것입니다.












































































+ Recent posts