3-1. 노드 HTTP 서버와 클라이언트
I. 서버와 클라이언트
① 클라이언트가 서버로 요청(request) 을 보냄
② 서버는 요청을 처리
③ 처리 후 클라이언트로 응답(response) 을 보냄
II. HTTP 란?
Hyper Text Transfer Protocol 의 약자로, 클라이언트와 서버 사이에 이루어지는
요청/응답(request/response) 프로토콜, 하나의 통일된 규약이다.
예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를
요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다.
이 정보가 모니터와 같은 출력 창치를 통해 사용자에게 나타나는 것이다.
III. 노드로 HTTP 서버 만들기
HTTP 요청에 응답하는 노드 서버
- createServer 로 요청 이벤트에 대기
- req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음
// createServer.js
const http = require('http');
http.createServer((req, res) => {
// 여기에 어떻게 응답할 지 적어줍니다.
});
IV. 8080 포트에 연결하기
1. res 메서드로 응답 보냄
- write 로 응답 내용을 적고
- end 로 응답 마무리(내용을 넣어도 됨)
2. listen(포트) 메서드로 특정 포트에 연결
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello Node!</h1>');
res.end('<p>Hello Server!</p>');
})
.listen(8080, () => { // 서버 연결
console.log('8080번 포트에서 서버 대기 중입니다!');
});
✨ res도 스트림이다!!
✨ 또한, 서버를 실행하는 경우에는 아래와 같이 터미널 하나를 잡아먹고 있는 상태가 된다.
V. localhost와 포트
1. localhost 는 컴퓨터 내부 주소
- 외부에서 접근 불가능
2. 포트는 서버 내에서 프로세스를 구분하는 번호
- 기본적으로 http 서버는 80번 포트 사용(생략 가능, https는 443)
- 8080번 같은 포트는 생략 불가능
- 다른 포트로 데이터베이스나 다른 서버 동시에 연결 가능
3. 포트 종류
1. 0번 ~ 1023번 : 잘 알려진 포트 (well-known port)
2. 1024번 ~ 49151번 : 등록된 포트 (registered port)
3. 49152번 ~ 65535번 : 동적 포트 (dynamic port)
✨코드를 수정한 후에는 서버에 자동 반영되는 것이 아니라서 꼭 서버를 껐다가 켜야 한다. ( ctrl + c 누르면 서버 종료 )