⚙️ Ops/CS

Web Application & Network

신건우 2023. 4. 14. 12:29

💡 Native Application


장점

  • 웹앱보다 빠르고, 설치된 기기의 시스템/리소스 접근 용이 (ex: GPS , Camera)
  • 오프라인 환경에서 사용가능, 웹앱에 비해 보안성 ↑ , 임베디드와는 조금 다른 개념

단점

  • 느린 업데이트, 앱스토어에 승인이 까다롭고 비용발생
  • 웹앱에 비해 개발비용 증가 (플랫폼 호환성)

💡 TCP/IP

  • OSI 7 계층에선 3계층인 IP와 4계층인 TCP를 합친 통신규약의 모음(프로토콜 스택)
  • TCP/IP 4계층은 데이터가 계층이동을 할때마다 헤더를 추가하고(캡슐화),
    추가된 헤더를 읽고 알맞은 행동을 취한 후 ,헤더 제거(역캡슐화)

TCP 3 Way HandShaking

  • Listen - Received - Established
  • SYN Flag - SYN/ACK Flag - ACK Flag

IP Address

  • 크게 공인,사설 아이피가 있으며 대역마다 정해진 IP range가 존재한다 (WAN = 공인, LAN=사설)
  • 사설 IP 대역 (사설 대역을 제외한 나머지 대역은 공인IP 대역)
    • 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255
  • 보통 1개의 대역당 네트워크, 브로드캐스트, 게이트웨이 주소를 제외한 나머지 주소를 서브넷에 따라 IP 가용 가능
    • 보통 통상적으로 네트워크 당 IP 할당을 0번,게이트웨이 1번,브로드캐스트 255번을 사용한다.
    • 게이트웨이 주소는 임의로 변경 가능 보통 1,254 번 사용
    • ex) prefix가 25일 경우는 0~127 에서 0(network) 127(broadcast)를 제외한 1 or 126번이 보통 게이트웨이 IP로 씀

Subnet Mask

  • 서브넷은 2진수로된 4개의 8비트필드이며 1필드당 옥텟이라고 부르고, 4개의 옥텟 으로 이루어져있다
  • 2진수 필드에서 1 = 네트워크, 0 = 호스트
  • prefix가 몇이냐에 따라 네트워크의 개수와 호스트의 가용 가능 수를 알 수 있음
    • ex) prefix가 26인 255.255.255.192 의 비트를 보자.11111111.11111111.11111111.11000000 이며
      1 부분이 네트워크 0 부분이 호스트임
    • 아주 간단히 설명하면 네트워크 개수 = 2^n (n=추가된 비트 수) 이며 프리픽스가 26이면,
      24에서 26으로 2가 증가했으니 2^2=4 4개의 네트워크로 서브넷팅 된것이며,
      네트워크를 4개로 분리했으니 1개의 네트워크당 063,64127,128191,192~255 의 IP대역을 가짐
    • prefix가 30이면? 네트워크가 64개로 분리된것이고 1개의 네트워크당 4개의 호스트를 가지며,
      네트워크당 네트워크,브로드캐스트,게이트웨이 주소를 할당하면 가용가능한 IP는 1개일 것임.
      0~3 : 0=네트워크주소 1=게이트웨이주소 3=브로드캐스트주소, 그럼 남는건 2번 하나로 사용가능 IP는 1개이다

Wild Mask

서브넷의 10진주소를 반전시켜 놓은 것, 라우터의 OSPF 라우팅테이블 설정,방화벽 등 서버의 각종 설정에 쓰인다


URL

:scheme: :host: :url-path: :query:

img


Domain

img


nslookup

  • set type=a(a record) = ip에 매핑될 도메인 (ipv4)
  • set type=aaaa(aaaa record) = ipv6
  • set type=mx(mx record) = 메일서버
  • set type=txt(spf record) = 도메인 질의(접근제어, whitelist 개념)
  • set type=ptr([tr record) = 역방향 질의(접근제어, 보통 해외메일 체크시 사용)

쿠키 & 세션

  • 쿠키 = 웹앱에서 유저가 설정했던 항목들에 대해 저장
  • 세션 = 서버에 Session-id를 할당해서 유저 식별, 세션정보는 쿠키에서 관리하며, 실제매칭값은 서버에서 관리

Server Side Rendering vs Client Side Rendering

  • SSR = 서버내에서 렌더링상태로 웹에 전송, SEO 최적화
  • CSR = 클라이언트에서 렌더링, DB데이터를 가져올떈 API 호출

Web Security

  • Cross-Origin Resource Sharing (CORS)
  • XSS
  • CSRF

HTTP Message

  • HTTP의 특징: Stateless(무상태성)

HTTP Message의 구조

  • start line : start line에는 요청이나 응답의 상태를 나타냅니다. 항상 첫 번째 줄에 위치함
         응답에서는 status line이라고 부름
  • HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합임
  • empty line : 헤더와 본문을 구분하는 빈 줄이 있음
  • body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함함.
      요청과 응답의 유형에 따라 선택적으로 사용

이 중 start line과 HTTP headers를 묶어 요청이나 응답의 헤드(head)라고 하고, payload는 body라고 이야기함


HTTP Request

  • 수행할 작업(GET,PUT,POST 등)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP Method를 나타냄
    ex) GET Method는 리소스를 받아야하고, POST method는 데이터를 서버로 전송
  • 요청 대상(일반적으로 URL이나 URI) 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성됨
    이 요청 형식은 HTTP method 마다 다름
  • HTTP 버전에 따라 HTTP message의 구조가 달라짐, 따라서 start line에 HTTP 버전을 함께 입력

Chrome Error Message

img


자가 점검 리스트

  • 웹 애플리케이션 네이티브 애플리케이션의의 기본 개념에 대해 이해할 수 있다.
  • 네트워크를 만드는 기술을 이해할 수 있다.
    • TCP/IP의 기본에 대해 이해할 수 있다.
    • IP의 기본개념에 대해 이해할 수 있다.
    • TCP와 UDP 개념과 그 차이를 이해할 수 있다.
    • PORT의 개념과 그 차이를 이해할 수 있다.
    • URL, DNS의 기본에 대해 이해할 수 있다.
    • DNS 기본적인 작동원리를 이해할 수 있다.
  • 웹을 구성하는 기술을 이해할 수 있다.
    • 웹의 기본적인 개념에 대해 이해할 수 있다.
    • 클라이언트-서버 아키텍처에 대해 이해할 수 있다.
    • 웹 애플리케이션 아키텍처에 대해 이해할 수 있다.
    • 웹 애플리케이션 아키텍처 요청흐름에 대해 이해할 수 있다.
    • 웹 애플리케이션을 구현하는 방식과 기술들에 대해 이해할 수 있다.
    • SSR 과 CSR의 기본 개념과 그 차이를 이해할 수 있다.
    • CORS 의 기본 개념에 대해 이해할 수 있다.
    • SPA 를 가능하게 하는 AJAX에 대해 이해할 수 있다.
  • HTTP messages의 구조를 설명할 수 있다.
    • HTTP의 동작 방식을 이해할 수 있다.
    • HTTP requests와 responses를 구분할 수 있다.
    • HTTP의 응답 메시지를 찾아볼 수 있다.