본문 바로가기

Others/NODE.JS

웹 애플리케이션 만들기

 nodejs.org > about 기본 예제 코드로 살펴보는 중요내용.






 위 코드의 역할


1. 웹서버를 만드는 코드

2. 만들어진 웹 애플리케이션은 나타난 주소로 접근해서 요청이 들어오기를 기다리게 됨.

3. (코드 해석) 웹 브라우저로부터 통해서 요청한 내용을 받아서 hello world 라는 텍스트를 출력하게 된 것.


이 개념을 이해하기 위해서

인터넷, 도메인 네임, IP, PORT를 공부하면 좋다.






 인터넷의 동작방법


1. 서버

2. 클라이언트

3. IP

4. PORT



인터넷?

- 1960 인터넷 등장으로 더 이상 컴퓨터 간에 독립되지 않고 서로 연결되어 협력적인 작업을 시작할 수 있게 됨.


클라이언트 & 서버

- 웹브라우저가 설치 된 곳

- 어떤 주소를 가진 컴퓨터(서버: 요청에 응답해서 정보를 제공)에 접속해서 정보를 요청하는 것.


도메인 & IP


도메인 :  사람이 기억하기 쉽도록 한 이름 ( 비유 : 주소록 친구 이름 )

IP : 도메인과 일치하는 구체적인 주소 또는 어드레스 ( 비유 : 주소록 친구 이름에 해당하는 전화번호 )



 서버에 주목! ( 현재 node.js를 공부중 )





특정 주소를 가지고 있는 컴퓨터(서버)를 자세히 보면, 그 서버 컴퓨터에 여러가지의 다양한 서버 소프트웨어(데이터베이스 서버, 채팅 서버, 게임서버, 웹서버... )가 설치 되어 있을 수 있다.


사용자가 해당 주소로 접속했을 때, 서버 컴퓨터 설치된 애플리케이션 중 어떤 서버 애플리케이션에 연결 및 응답할까?

바로 이부분이 node.js 수업에서 중요한 부분!


PORT?

컴퓨터는 0번부터 65535개의 구멍 또는 문이 있다. 이 문을 PORT라고 한다.




예를 들어,  http://주소:80/


- 약 6만개에 달하는 포트 중에서 80번 포트에 웹 서버를 실행(연결)을 시킨후 웹 서버가 80번 포트를 바라보게(리스닝하도록) 한다.

- 사용자가 위 주소로 접속했을 때, 해당 주소에 해당하는 컴퓨터(서버)를 찾아온뒤 80번 포트와 연결하고 싶다고 전달하는 것.


하지만 :80 쓰기 귀찮음! 그래서 생략 가능! 어떻게?


- 기본 주소로 접속했을 때, 컴퓨터는 사용자가 웹브라우저를 통해 접속했다는 것을 http를 통해 알고 있기 때문에 자동으로 80번과 연결해준다. - - http를 통해서 접속한다면 80번 포트를 쓰자고 약속되어 있다. 

- 80번 포트 이외에 포트에 대해서 접속 가능하게 처리하기 위해서, 웹서버가 특정 포트를 가질 수 있도록 연결 시켜 주어야 한다.








(위 코드를 다시 살펴보면)


Line 6 : createdServer라는 명령을 통해 서버 1대를 만든다.

Line 12 : 그 서버를 만들고 .listen 이라는 명령어를 통해 어떤 컴퓨터에 리스닝하겠금 할 건지 설정.

첫번째 인자는 포트는 1337 전달, 호스트네임(IP) 두번째 인자로 전달 : node.js를 이용해서 웹서버를 만들고 그 웹서버가 1337를 리스닝하도록 시키는 코드 (전달받는 인자를 수정한다면 접속할 수 있는 주소가 바뀐다.)


Line 9 : 사용자가 접속했을때 hostname으로 접속한 사용자에 대해서 응답하라!라는 명령이다. 그 응답 결과는 hello world라는 코드를 출력하는 것이 이 코드의 취지.



Line 13 : 리스닝하고 있는 컴퓨터(서버)로 접속 중일 때




 이번 포스팅에서 가장 중요한 항목 : 인터넷은 어떻게 동작하는가


node js에서 공식적으로 자신들을 설명할 때 사용하는 코드가 위 (기본) 예제 : 

nodejs는 파이썬 루비 자바 등 컴퓨터가 할 수 있는 아주많은 일들을 처리할 수 있는 역량을 가지고 있지만,

nodejs가 가장 중점으로 두는 것은 서버로 들어오는 요청을 빠르고 편리하게 응답하는 어떤 애플리케이션을 만들 수 있는 기반을 제공하는 것!

'Others > NODE.JS' 카테고리의 다른 글

Express] 정적파일을 서비스하는 법  (0) 2017.09.11
Express 설치 및 기본코드분석  (0) 2017.09.11
동기와 비동기  (0) 2017.09.07
모듈과 NPM  (0) 2017.09.07
서버 측 자바스크립트 - nodejs 소개  (0) 2017.09.03