TIL

2024.01.17

아리단길아조씨 2024. 1. 17. 21:25
728x90

자바스크립트 문법 주차가 지나고 Node.js 주특기 입문 주차가 시작되어 버렸다...

아직 자바스크립트도 잘 모르는데 또 이틀 뒤면 알지도 못하는데 꾸역꾸역 과제도 해야 한다... 갈길이 멀고 험하구나~

오늘 공부한 것

웹 브라우저: 인터넷 브라우저라고도 하며, 웹서버로부터 정보를 요청하고 받아 사용자에게 보여주는 소프트웨어

정적(Static) 파일 : 서버에서 브라우저로 전송되는 대로 그대로 처리한다.
동적(Dynamic) 정보: 서버로부터 데이터를 받아 실시간으로 내용을 생성, 변경한다.

URL(Uniform Resource Locator): 인터넷상의 리소스 위치를 나타내기 위해 사용한다. => 인터넷상의 주소
* URL의 구조 : <프로토콜>://<도메인>:<포트>/<경로> => 웹 서버에서의 특정한 리소스 위치를 나타낸다.

DNS(Domain Name Service) : 도메인 이름을 중개하여 IP로 변환해 주는 서비스를 제공한다.
=>  "전화번호(IP)를 외우기보다는 이름으로 저장(DNS)하여 이름에 맞게 저장된 번호로 전화를 한다"

IP(Internet Protocol) : 각각의 네트워크에 연결된 장치들이 고유한 IP주소를 가져
인터넷상에 존재하는 해당하는 장치의 위치를 식별할 수 있게 해 준다.
* IPv4와 IPv6*
IPv4: 10진수를 사용하며 8비트 4 부분으로 이루어졌고 오래전부터 쓰여온 IP주소
ex) 192.168.0.1
IPv6: 16진수를 사용하며 16비트 8 부분으로 이루어져 있고 할당할 주소가 부족해지면서 새로 나온 친구임
단순히 주소 확장이 아닌, 더 나은 확장성과 보안성을 제공하고 여러 장점이 있다고 함.
ex) 2001:0230:abcd:0000:0000:ffff:1111

HTTP와 HTTPS

-  HTTP -
1. 데이터를 주고받는 양식을 정의한 통신규약이다.
2. 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 많이 쓰이는 통신규약이다.
3. 통신규약(Protocol): 컴퓨터끼리 데이터를 주고받을 때 정해둔 약속
HTTP라는 통신규약을 이용하여 서버나 클라이언트(브라우저)끼리 의사소통을 할 수 있게 된다.

- HTTPS -
1. HTTP 기반의 데이터 통신의 안전성을 높이기 위해 암호화 기능이 포함된 통신 프로토콜
2. 기존 HTTP와는 다리게 정보를 비밀코드처럼 만들어서 전송한다. => 암호화

HTTP에는 항상 Request(요청), Respone(응답)이라는 개념이 존재한다.
클라이언트 -> 서버 "데이터를 요청하는 것 => Request"
클라이언트 <- 서버 "요청받은 데이터를 주는 것 => Respone"
* status 200 => 정상적으로 처리가 되었다.*
* status 404 => 우리가 흔히 아는 그 페이지... 요청한 데이터가 없을 때 나타내는 페이지"

Headers => 추가 데이터, Respone => 그냥 데이터

- Method 설명 -
- GET : 어떤 리소스를 얻을 때 사용한다.
브라우저는 기본적으로 우리가 웹서핑을 한다고 가정한다. => 모든 요청은 GET 메서드로 서버에 요청한다.
- POST : 웹서버에서 데이터를 게시할 때 사용하는 게 일반적이다.
ex) 회원가입, 게시글 작성, 댓글 작성

Header 설명(추가 데이터. 메타 데이터)
- 브라우저가 어떤 페이지를 원하는지(Request)
- 요청받은 페이지는 받았는지
- 성공적으로 찾았는지
=> 이외에도 다양한 의사표현을 위한 데이터를 Header 필드에 넣고 주고받는다.

Payload 설명(데이터, 실질적인 데이터)
- 서버가 응답을 보낼 때는 항상 Payload를 보낼 수 있다.
- 클라이언트 요청 시에도 Payload를 보낼 수 있다.
* GET 메서드를 제외하고 모두 Payload를 보낼 수 있다 => HTTP에서의 약속임
- 추가적으로 DELETE 메서드에서 Payload를 보낼 수 있지만,
보통 많은 경우에는 Payload를 보내지 않고 있다.

웹서버의 이해
웹서버란?
1. 웹서버는 HTTP를 이용하여 인터넷상에서 클라이언트의 요청을 처리하고 응답해 주는 컴퓨터 또는 프로그램.
2. 웹서버는 클라이언트의 HTTP요청을 받아 정적인 콘텐츠(HTML, CSS, 이미지 파일 등)를 제공한다.
3. 필요시에 클라이언트의 요청을 웹 애플리케이션 서버(WAS)로 전달, 처리가 가능하다.
4. 웹서버는 요청된 콘텐츠나 데이터를 빠르게 반환하는 것이 주요 업무이다.
대표적인 웹서버: Apache, Nginx

WAS(Web Application Service)란?


1. WAS는 웹서버와 협력하여 동적인 콘텐츠를 제공한다.
-> 주로 DB조회, 복잡한 계산(비즈니스 로직)을 처리한다.
2. 클라이언트의 요청을 웹서버로부터 전달받아 처리하고, 결과를 다시 서버에 반환하여
최종적으로는 클라이언트가 응답받을 수 있도록 구성된다.
3. 복잡하고 다양한 비즈니스 로직을 수행 
-> 정적인 데이터만 전달하는 웹서버에 비해 처리시간이 길어질 수 있음
4. WAS는 서버콘텐츠 생성, DB와의 상호작용시 주로 사용된다.

Node.js란?
=> JS를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경

블로킹 I/O와 논블로킹 I/O
=> 프로그램 실행 흐름 제어 방식

1. 블로킹 I/O : 프로그램이 특정 작업을 수행할 때 다른 작업을 중단한다.
-> 한 번에 하나씩 작업한다.
2. 논블로킹 I/O : 프로그램이 여러 작업을 수행할 수 있다.
-> 제어권 요청 시 바로 받을 수 있어서 다른 작업을 동시에 진행이 가능하다.

싱글스레드(Single thread) : 스레드를 하나 사용하고, 동시에 하나의 작업만 처리가 가능
-> 스레드 : cpu, 프로세서를 사용하는 단위(작업 단위)
*** Node.js는 싱글스레드여도 I/O작업이 발생할 경우 비동기적으로 처리하여 여러 작업을 동시 수행함

호출스택(CallStack) : 함수의 실행 순서를 추적하는 자료구조.

이벤트루프 : 자바스크립트가 비동기적으로 프로그래밍할 수 있게 해준다.
=> 여러 이벤트들과 같은 비동기 작업들을 모아서 관리, 어떤 순서대로 실행해야 할지 도와주는 도구

패키지(Package)
Node.js에서의 코드의 재사용성을 높이기 위해 작성된 독립적인 코드 조각(모듈)
모듈을 npm이나 yarn과 같은 패키지 매니저를 통해 업로드하여 다른 개발자들과 공유할 때를 패키지라 함

모듈 : 일반적으로 프로젝트에서 사용하는 코드조각
패키지 : 모듈을 포함하고 있거나 다른 패키지에 의존하고 있는 코드의 집합

오늘은 이런 내용들을 공부했다. 너무 방대하다.
하지만 공부한 것들을 복습해 본다는 생각으로 노트에 필기한 것을 그대로 읽으면서 옮겨보았다.

'TIL' 카테고리의 다른 글

2024. 01. 19  (0) 2024.01.19
2024. 01. 18 TIL  (0) 2024.01.18
2024. 01. 16 TIL 겸 일기  (1) 2024.01.16
2024. 01. 15  (1) 2024.01.15
2024. 01. 11  (0) 2024.01.11