이론 적인 내용 정리

Lumi·2021년 11월 1일
0

이론적인 내용

목록 보기
5/13
post-thumbnail

코드스테이츠 부트캠프를 진행하면서 배웠던 부분중 컴퓨터, 네트워크 등등 에 대한 이론 적인 내용을 정리하는 글이다.

글이 얼마나 길어 질지는 모르겠다..

  • 짧게 끝날수 도 있다고 생각

정리를 하면서 차근차근 정리를 해보자!!

🔥 기본 과정

HTTP

일단 기본적으로 우리는 2티어 아키텍처 부터 알아봐야 한다.

  • 그냥 단순히 서버와 클라이언트로만 구성이 되어 있는 아키텍처를 말한다.

그러면 3티어 아키텍처는

  • 서버 + 클라이언트 + DB까지 구성되어 있는 것을 말한다.

우리는 DB에서 값을 꺼내오기 위해서는 서버와 우선적으로 통신을 해야한다.

이떄 사용되는 것이 프로토콜이라는 통신 규약이다.

  • 서버와 통신을 하는데에 사용 되는 것이다.

즉 둘은 모두 HTTP프로토콜 이라는 것으로 통신을 하게 된다.

  • 이걸 HTTP메시지 라고도 한다.

일종의 통신을 위한 도로 라고 생각을 하면 된다.

그러면 우리가 도로가 있고 이곳을 통하면 서로 통신을 할 수 있다는 것을 알수가 있다.

  • 메일전송, 파일전송 등등 상황에 맞는 도로가 따로따로 있다.

하지만 우리가 서버에 요청을 할때에 서버가 어떻게 구성되어있는지, 어떠한 정보를 응답해줄수 있는지를 알아야 한다.

  • 이럴때에 사용 하는 것이 API이다.

즉 우리는 API를 통해서 서버에 어떠한 값이 있는지를 확인할수 있고 응답에 활용할수도 잇다.

  • URI이라는 API디자인을 통해서 서버와 통신을 한다.

HTTP프로토콜의 종류에는 GET,POST,PUT,DELETE 등등이 있다.

요약

우리는 HTTP라는 프로토콜을 이용해 통신하고 서버에 어떠한 값이 있는지 확인을 할떄에는 API라는 것을 이용한다.

그리고 통신을 하는 방법에는 URI이라는 디자인을 형성한뒤

HTTP프로토콜 메서드를 활용한다

  • GET,POST,PUT,DELETE

URL과 URI

일단 기본적으로 둘은 서로 비슷하다.

  • 비슷하지만 사실 URI는 URL을 포함하는 상위 개념이다.

URL같은 경우에는 쿼리문이 들어가 있지 않는 주소를 말하며

URI는 그냥 모든 주소를 통틀어서 말하게 된다.

IP와 포트

우리가 대개 알고 있는 숫자로 이루어진 주소를 IP주소 라고 한다.

PORT는 PC에 접속할 수 있는 통로를 의미한다.

이미 사용중인 port는 중복해서 사용을 할수가 없다.

포트는 임의로 정할수 있지만 통신 규약에 따라서 정해져 있는 포트 번호가 있다.

  • 80 : HTTP
  • 443 : HTTPS
  • 22 : SSH

도메인과 DNS

IP주소와 같이 컴퓨터의 주소를 사용자가 알아보기 쉽게 표시하는 것을 도메인 주소 라고 한다.

DNS는 IP주소와 도메인 주소를 매칭해주는 서버를 말한다.

  • 즉 서로 변환 시켜주는 주소를 말한다.

SPA : AJAX

새로운 페이지를 렌더링 하는 것이 아니라 페이지의 일부분만을 렌더링 하는 것이다.

  • 이렇게 하면 새로운 파일 자체를 내려받는 것이 아니기 떄문에 빠르다.

React에서 컴포넌트만으로 다루는 것과 동일하다고 생각한다.

주로 JS와 DOM을 활용하며 서버와 자유롭게 통신할수 있게 XHR을 활용한다.

  • 이를 합쳐서 AJAX라고 한다.

이러한 것을 활용하기 위해서 우리는 fetch를 활용하게 돈다.

SSR과 CSR

어디서 요청,응답에 대한 결과를 처리하냐에 대한 차이점이다.

결론 부터 말하자면 SSR은 서버에서 처리를 하여 완성된 것을 브라우저에 보내주고

CSR은 서버의 응답으로 받은 것을 조립하여 브라우저에서 렌더링 하게 된다.

SSR같은 경우에는 사용자가 다른 페이지로 이동을 할떄마가 새로운 페이지 파일을 보내게 된다.

  • 왜냐하면 서버측에서 js와 모든것을 처리하여 보내주어야 하기 떄문에

반대로 CSR같은 경우에는 브라우저 측에서 처리를 하기 떄문에 새로운 페이지로 이동시에 골격은 유지하고 js파일만을 받아서 처리를 한다.

상황에 따라 효율적인 것이 다르다.

SSR같은 경우에는 검색 엔진에서 사용

CSR같은 경우에는 상호작용이 많은 어플리케이션에서 사용

CORS

하나의 사이트에서 각각의 서버에 요청을 보내는 것이다.

즉 처음 요청을 보내는 도메인과 다른 도메인으로부터 리소스가 요청될 경우를 CORS요청 이라고 한다.

fetch같은 경우에는 같은 도메인으로부터의 정보만을 허용하기 떄문에

  • 따로 옵션으로 추가해 주지 않는 이상 따른 도메인 요청을 사용할 수 없다.

사용자 입장에서는 이러한 CORS요청을 막을 이유가 없다;;

simple-requestspreflighted request이렇게 두가지가 있다.

심플 같은 경우에는 단순히 요청 + 응답으로만 이루어져 있지만

프리플라이트 같은 경우에는 하나의 요청에 요청2개+ 응답2개로 이루어져 있다.

  • 처음에 내가 전송하는 데이터를 받을수 있는지를 요청+응답으로 이루어 지고
  • 그후 데이터를 전송을 한다.

이 외에도 인증정보를 포함하는 요청을 보낼떄에는(쿠키)

  • withCredentials 이라는 설정을 하기도 한다.

운영체제

시스템의 운영을 관리하는 것을 말한다.

응용 프로그램에 실행될떄 메모리를 할당하고 관리하는 주체가 운영 체제 이다.

  • 즉 시스템의 자원을 관리를 한다.

운영 체제는 메모리 뿐만 아니라 시스템의 자원을 활용할수 있도록 다양한 함수를 제공하게 되는데 이러한 것을 시스템 콜이라고 한다.

프로세스

실행중인 하나의 프로그램을 말한다.

만약 두개의 크롬을 실행 시키면 하나의 크롬이라는 프로그램에 두개의 프로세스가 존재 하는 것이다.

멀티 스레드

기본적으로 스레드는 프로세스에서의 코드의 실행 흐름이다.

우리가 멀티 태스킹과 비슷하게 생각을 하여 이해를 할 수가 있다.

크롬 하나를 실행시키면 하나의 프로세스가 나타날꺼고 그 프로세스(크롬)에서 음악을 틀며 웹툰을 보는 행위를 할떄

멀티 스레드가 작동이 된다.

  • 처리시간을 줄이기, 여러 요청을 처리하는 서버 에서 사용 가능하다.

캐시

자주 사용하는 또는 많은 시간이 필요한 결과를 저장해 두는 공간을 말한다.

고속의 데이터 저장공간이며 이전에 사용했던 데이터를 효율적으로 재사용할 수 있다.

일반적으로 하드웨어에 저장이 되며 소프트 웨어 구성요소와 함께 사용 된다.

  • 영구적인 DB와는 반대되는 저장소 이다. = 일시적이다.

🔥 심화 과정

IP패킷

수많은 네트워크 통신망 중에서 우리가 원하는 컴퓨터에 도달하기 위해서는 IP주소가 필요하다.

  • 왜냐하면 일종의 컴퓨터 주소 이기 떄문에

IP패킷에서 패킷은 데이터가 무사히 도달하기 위해서 IP, 목적지 IP와 같은 정보가 포함되어 있다.

  • 응답 또한 패킷을 이용 하여 전달을 하게 된다.

이러한 점은 별다른 문제점이 없다고 생각이 들 수 있지만 몇가지 문제점이 있다.

패킷이 사라질수 있음

도착하는 순서를 보장할 수 없음

받는 대상이 없어도 패킷을 전송

이러한 점을 보완하기 위해 패킷 안에 TCP세그먼트 라는 것을 담아서 전송을 하게 된다.

  • IP패킷에 저장된 내용 + PORT, 전송 순어,제어 등등이 담겨 있다.

TCP는 기본적으로 클라이언트 연결을 위해서 3 way handshake를 사용한다.

1. SYN패킷을 먼저 보낸다.

2. 서버에서 SYN패킷과 ACK패킷을 보낸다.

3. 클라이언트에서 ACK를 전송함으로써 연결이 완료가 된다.

- 이 과정중 하나라도 이루어 지지 않는다면 연결이 되지 않는다.

UDP는 IP프로토콜에서 PORT정보 정도만 추가된 것이다.

순서를 보장하지 않는다.

데이터가 전달되지 않을 수도 있다.

이렇게 IP패킷에 대한 단점을 해결하지는 못했지만 TCP에 비해서 빠른 속도를 자랑한다.

CDN

데이터 센터를 말한다.

원복을 복사하여 여러개의 캐시 서버에 저장을 하고 요청을 받은경우 가장 가까운 서버에서 응답을 보내준다.

일단 기본적으로 여러개의 데이터 센터에 데이터를 저장하기 떄문에 센터 한개가 작동이 불가능해도 다른곳의 센터에서 데이터를 가져 올수가 있다.

또한 여러개의 서버를 다루기 떄문에 비용이 절감이 된다.

  • 고성능의 서버를 다루는 것보다는 비용이 적다.

Scattered 방식

  • 작은 데이터 센터를 여러개 두는 것이다.
  • 빠른 속도를 자랑하지만 센터 유지비용으로 인해서 가격이 비싸다.
  • 연결 수요가 적은 지역에서 유리하다.

Consolidated 방식

  • 다수의 고성능 서버를 통합하여 운영을 한다.
  • 센터 유지비용이 적기 떄문에 가격이 저렴하다.
  • 수요가 많은 지역에서 유리하다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글