4.요청과응답

4.1 요청과 응답 이해하기

  • 서버와 클라이언트
    • 클라이언트 요청-> 서버 응답 -> 클라이언트
  • http 서버 만들기
    • createServer로 요청 이벤트 대기
    • req는 요청 res는 응답 정보 저장

4.2 REST API와 라우팅

  • REST API (Representaional State Transfer)
    • 서버에 요처응ㄹ 보낼 때 주소를 통해 요청의 내용을 표현
    • 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법
  • HTTP 프로토콜
    • 언어 상관없이 클라이언트가 누구든 서버와 HTTP 프로토콜로 소통 가능
    • 서버와 클라이언트의 분리

      4.3 쿠키와 세션 이해하기

  • 로그인 로그아웃시 필수로 알아야 하는 것
  • 요청의 단점
    • 누가 요청을 보냈는지 모름
    • 로그인 구현 필욯 (쿠키와 세션)
  • 쿠키: 키 = 값의 쌍
    • 매 요청마다 서버에 동봉해서 보냄
    • 서버는 쿠키를 읽어 누구인지 파악
    • 클라이언트 요청 -> 서버(쿠키와 함께 응답) 이후 클라이언트 요청(쿠키와 함께) -> 서버(응답)
    • writeHead로 쿠키를 설정 가능 Set-Cookie: key=value
    • session쿠키는 브라우저를 닫으면 사라진다.
    • favicon.ico 는 크롬 브라우저에서 기본적으로 요청
  • 헤더와 본문
    • 헤더는 요청 또는 응답에 대한 정보를 가짐
    • 본문은 주고 받는 실제 데이터
    • 쿠키는 부가적인 정보로 헤더에 저장
    • 요청
      • header와 body(payload)
    • 응답
      • header와 data
  • 쿠키
    • Expires - 쿠키 만료 시간
    • HttpOnly - 자바스크립트로 쿠키에 접근하지 못하도록
    • Path=/ - /아래 주소에 있는 곳에서 쿠키를 사용할 수 있다.
  • 세션
    • 쿠키는 노출되거나 수정될 위험이 있음
    • 중요한 정보는 서버에서 관리하고 클라이언트는 세션 키만 제공
    • 서버에 세선 객체 생성후 키를 만들어 속성명으로 사용
    • 속성 값에 정보를 저장하고 클라이언트로 키를 보냄

4.4 https와 http2

  • https
    • 웹 서버에 SSL 암호화를 추가하는 모듈 (필수)
    • 오고 가는 데이터를 암호화 해서 전달 함
    • https모듈을 사용하기 위하여 createServer에 발급 받은 인증서를 전달해야 한다
    • 포트는 443으로 해야 생략이 가능하다
  • http2
    • 현재 보통 http1.1을 쓰고 있다.
    • SSL 암호화와 더불어 최신 HTTP 프로토콜인 http/2를 사용하는 모듈
    • 요청및 응답이 1.1보다 개선됨
    • 속도도 개선
    • 작은 이미지가 많은 경우 http2가 1.1에 비해 매우 빠르다.
    • http2는 https를 같이 해야 한다.
    • 포트는 https와 동일하게 443

4.5 cluster

  • 기본적으로 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈
    • 포트를 공유하는 노드 프로세스를 여러 개 둘수 있음.
    • 벙렬로 실행된 서버 개수만큼 요청 분산
    • 서버에 무리가 덜감
    • 성능이 배수가 되는것은 아니다
    • cluster로 코어 하나당 노드 프로세스 하나를 배정 가능
    • 컴퓨터 자원(메모리, 세션)등 공유 못함
    • redis등을 별로도 구비하여 해결
  • 서버 클러스터링
    • require(cluster)
    • 라운드 로빈으로 부하 분산

Comments