[2024.05.10 TIL] 내일배움캠프 19일차 (Node.js 입문 강의 시청)

My_Code·2024년 5월 10일
0

TIL

목록 보기
24/113
post-thumbnail

본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.


💻 TIL(Today I Learned)

📌 Today I Done

✏️ 웹 브라우저의 통신 방식

  • 웹 브라우저
    • 웹 서버로부터 정보를 요청하고 받아 사용자에게 보여주는 소프트웨어
    • 정적인(Static)파일과 동적인(Dynamic)정보를 처리
  • 브라우저의 통신 방식
    1. 사용자가 웹 브라우저의 주소창에 URL을 입력
    2. 입력받은 URL을 DNS 서버로 전달하여 해당 IP 주소를 찾음
    3. DNS 서버는 도메인 이름을 IP 주소로 변환
    4. 웹 브라우저는 해당 IP 주소로 HTTP 요청을 전달
    5. IP 주소에 연결된 웹 서버는 요청(Request)을 받아 처리
    6. 웹 서버는 처리 결과를 HTTP Response로 브라우저에게 전달
    7. 웹 브라우저는 받은 HTTP Response을 바탕으로 사용자에게 표시
  • 웹 브라우저의 주소창에 URL 입력하기
    • http://cafe.naver.com/joonggonara
    • http 는 프로토콜 (약속)
    • cafe.naver.com 은 서브 도메인명 + 메인 도메인명
    • joonggonara 는 리소스 경로, 파일 경로
  • DNS로 조회하기
    • DNS(Domain Name Service)는 도메인 이름을 중개하여, IP로 변경해주는 서비스
    • DNS는 인터넷의 ‘주소록’ 또는 ‘연락처’와 같은 역할
  • IP를 이용하여 웹 서버와 통신하기
    • IP(Internet Protocol)는 각각의 네트워크에 연결된 장치들이 고유한 IP 주소를 가져 인터넷 상에 존재하는 해당하는 장치의 위치를 식별할 수 있게 해줌

✏️ HTTP의 이해

  • HTTP 란?
    • 데이터를 주고 받는 양식을 정의한 "통신 규약"중 하나
    • 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약
  • 어떻게 HTTP로 데이터를 주고 받을까?
    • HTTP에서는 언제나 요청(Request)과 응답(Response)이라는 개념이 존재
  • 추가 데이터? 데이터? 뭐가 다른걸까?
    • Headers 탭에서는 추가 데이터
    • Response 탭에서는 그냥 데이터
    • Header 설명
      • 추가 데이터, 메타 데이터
      • 브라우저가 어떤 페이지를 원하는지
      • 요청 받은 페이지를 찾았는지
      • 성공적으로 찾았는지
      • 의사 표현을 위한 데이터
    • Payload 설명
      • 데이터. 실질적인 데이터
      • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있음

✏️ 웹 서버의 이해

  • 웹 서버란?
    • 웹서버는 HTTP를 이용하여 인터넷 상에서 클라이언트의 요청을 처리하고 응답해주는 컴퓨터 또는 프로그램
    • 클라이언트의 HTTP 요청을 받아 정적인 콘텐츠(ex: HTML, CSS, 이미지 파일 등)를 제공
  • 웹 어플리케이션 서버란?
    • 웹 어플리케이션 서버(WAS, Web Application Server)는 웹 서버와 협력하여 동적인 컨텐츠를 제공
    • 웹 어플리케이션 서버는 콘텐츠 생성이나 데이터베이스와의 상호 작용이 필요할 때 주로 사용

✏️ Node.js란 무엇일까?

  • Node.js 란?
    • Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임(환경)
    • 즉, 자바스크립트를 서버에서도 사용할 수 있게 해주는 환경
  • Node.js 대표적인 특성
    • 논 블로킹(Non-blocking) I/O
    • 싱글 스레드(Single Thread)
    • 이벤트 루프(Event Loop)
  • 논 블로킹 I/O (Non-Blocking Input/Output)
    • 블로킹 방식은 프로그램이 특정 작업을 수행하는 동안 다른 작업을 중단시키는 방식
    • 논 블로킹 방식은 프로그램이 여러 작업을 동시에 처리할 수 있는 장점이 있음
    • 시스템 호출이 완료되기를 기다리지 않고 바로 다음 작업으로 즉시 넘어갈 수 있는 방식
  • 싱글 스레드(Single Thread)
    • 스레드 하나를 사용하는 것이며, 동시에 하나의 작업만을 처리할 수 있음을 의미
  • 그럼에도 불구하고 Node.js가 싱글 스레드를 고집하는 이유는?
    • 한 번에 하나의 작업만 처리하기 때문에 동시성 문제, 즉 여러 스레드가 공유하는 자원에 대한 동시접근 문제, 즉 Race condition 문제를 방지
    • 싱글 스레드 + 이벤트 루프 방식을 사용하면, 동시에 많은 요청을 효율적으로 처리


📌 Tomorrow's Goal

✏️ 개인 사정으로 인한 휴식



📌 Today's Goal I Done

✔️ Node.js 입문 강의 시청하기

  • 어제 강의를 지급받고 오후부터 보기 시작했음

  • 아직은 초반 내용이지만 중요한 내용들이 많았음

  • 특히 이벤트 루프는 면접에서 단골 질문이기에 꼭 자세히 알아야 함

  • 그리고 다음주 월요일에는 개인과제가 발제되기 때문에 못해도 다음주 화요일까지 강의를 끝내야 함

  • 주말에는 일정이 있어서 학습이 어려울 것 같기에 월요일과 화요일에 최대한 학습을 진행할 예정


profile
조금씩 정리하자!!!

0개의 댓글