Web Application & Network

2023. 4. 14. 12:29·⚙️ Ops/CS

💡 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의 응답 메시지를 찾아볼 수 있다.
저작자표시 (새창열림)

'⚙️ Ops > CS' 카테고리의 다른 글

Context Switching & Thread Scheduling  (0) 2023.09.29
Race Condition  (0) 2023.04.14
Proxy & Load Balancer & WAS & VPC  (0) 2023.04.14
HTTP  (0) 2023.04.14
Cookie & Session & SQL Injection & CSRF  (0) 2023.04.03
'⚙️ Ops/CS' 카테고리의 다른 글
  • Race Condition
  • Proxy & Load Balancer & WAS & VPC
  • HTTP
  • Cookie & Session & SQL Injection & CSRF
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      React #Markdown
      Lock #Thread #Concurrency
      GStreamer #Pipeline
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Web Application & Network
    상단으로

    티스토리툴바