01. HTTP의 이해
- HTTP란? ==> 데이터를 주고 받는 양식 정의한 통신 규약 중 하나
- 매우 범용적인 양식을 가지고 있다. 따라서 전 세계에서 가장 많이 사용하고 있는 통신 규약이다.
- 통신규약이란? ==> 컴퓨터 사이에 데이터를 주고 받을 때 정해둔 약속
서버나 클라이언트(브라우저)끼리 의사 소통에서도 사용한다. - 현대에 존재하는 대부분의 웹 서버가 HTTP를 기반으로 데이터를 주고 받는다. 따라서 우리는 매일 HTTP를 이용하고 있다 볼 수 있다.
- 다시 정리하면 네트워크 = 의사 표현의 수단 / 통신 규약 = 의사 표현의 방법
- HTTP로 데이터를 주고 받기
- ==> 1. Browser가 request(method는 GET메서드, 경로는 /index.html)를 보낸다.
==> 2. request를 받은 Server는 Browser에게 response(status로 200번, content 탑입은 text/html, UTF-8 인코딩)을 보낸다.- Request: 브라우저가 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요청하는 것
- Response: 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 반환해준다. 없을 경우 페이지에 대한 데이터를 반환한다.
- 브라우저는 서버에게 전달 받은 데이터를 기반으로 그려낸다.
- HTTP에서 데이터는 어떤 형식이든 주고 받는게 가능하다.
- 브라우저에서 HTTP가 동작하는 것을 직접 확인하기
==> 이미지같이 개발자 도구에 네트워크를 통해 Request와 Response부분을 확인할 수 있다. General부분에 브라우저가 서버로 보낸 Request 데이터를 확인할 수 있고, Request Headers에는 브라우저에서 서버로 보낸 Request 데이터를, Response Headers에는 서버가 웹 페이지 데이테와 함께 보낸 추가 데이터를 확인할 수 있다.
==> Response부분을 확인했을 서버가 브라우저에 보낸 웹 페이지를 그려주기 위한 데이터를 확인할 수 있다.
- 추가 데이터 vs. 데이터
- Method:
- GET: 리소스를 얻을 때 사용된다.
==>브라우저는 기본적으로 GET 메서드를 사용해서 서버에 요청을 보낸다. - POST: 웹 서버에 데이터를 게시할 때 사용하는게 일반적
==> 회원가입, 게시글 작성, 댓글 작성
- GET: 리소스를 얻을 때 사용된다.
- Header(추가 데이터, 메타 데이터)
- 브라우저가 어떤 페이지를 원하는지 / 요청 받은 페이지를 찾았는지 / 성공적으로 찾았는지
- 이런 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받는다.
- Method도 Header에 포함되어 서버로 보내진다.
- Payload(데이터, 실질적인 데이터)
- 서버가 응답을 보낼 때 항상 Payload를 보낼 수 있다.
- 클라이언트(브라우저)가 요청할 때도 Payload를 보낼 수 있다.
- GET 메소드를 제외하고 모두 Payload를 보낼 수 있다. (HTTP에서의 약속)
- DELETE 메소드에서 Payload를 보낼 수 있지만, 많은 경우 Payload를 보내지 않는다.
- Method:
02. 웹 서버의 이해
- 웹 서버란?
- HTTP를 이용하여 웹상에서 클라이언트의 요청을 응답해주는 통신을 하는 컴퓨터 또는 프로그램
==> 2023년 글로벌 Web Server 점유율
- 웹 서버의 기본 동작 원리
- 1. 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청
2. 웹서버는 요청을 승인, HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송
3. 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려낸다. - 기본적으로 브라우저가 웹서버에 요청을 할 때는 항상 GET 메소드로 요청하게 된다.
- 1. 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청
'JavaScript Dev. > Node.js' 카테고리의 다른 글
Express.js 란? (0) | 2023.04.22 |
---|---|
Package Manager 란? (0) | 2023.04.22 |
JavaScript 란? (0) | 2023.04.22 |
Node.js (0) | 2023.04.21 |
RESTful (0) | 2023.04.20 |