본문 바로가기
Network

네트워크 01 기초 / HTTP

by growingTangerine 2022. 12. 4.

1. 현재의 무드: 낯선 용어 천지이지만...! 저번 주에 붙캠에서 배운 파트는 다시 복습하고 80% 이상 이해하고 넘어가자! 

2. 오늘 학습한 내용 중 키워드: 웹 애플리케이션 아키텍쳐 / API / URL, URI / IP, PORT / 도메인, DNS / HTTP

3. 오늘 학습한 내용 요약

 

  • 웹 애플리케이션 아키텍처
    • 클라이언트 - 서버 아키텍처 (2-tier architecture) 
      • 서버 (server) - 제공(serve) 하는 주체 (리소스가 존재하는 곳) <-> 클라이언트 (client) - 리소스를 사용하는 앱 
      • 리소스가 존재하는 곳 (서버) 과 리소스를 사용하는 앱 (클라이언트) 를 분리시키는 것이 유리함. 왜냐하면, 분리되지 않은 경우 데이터를 업데이트 할 때마다 앱을 계속 업데이트해야하는 비효율을 초래함! 
      • 서버와 클라이언트는 요청과 응답을 주고받는 관계이며, 요청이 선행되고 그 후에 응답을 제공함. 
      • +a) 3-tier architecture: 기존 2티어에 데이터베이스가 추가된 형태. 서버는 리소스를 전달해주는 역할이며, 리소스를 데이터베이스라는 공간에 저장한다. 
      • 보통 클라이언트가 프론트엔드, 서버와 데이터베이스는 백엔드로 분리된다. 
    • 클라이언트 - 서버 통신과 API 
      • 포로토콜: 통신 규약 -> 정보 요청과 응답을 위해서 지켜야하는 약속
        • ex) HTTP: 웹 애플리케이션 아키텍처에서 클라이언트와 서버가 HTTP 메세지를 주고받음. 
        • OSI 7 layers: 프로토콜을 7개의 레이어로 나누어 분리한 개념. 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 
          •  

  • API (Application Programming Interface) 
    • 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 제공하는 인터페이스
    • HTTP API 디자인의 best practice 가 존재함. 
      • CRUD 각각에 맞는 HTTP 메서드: GET, POST, PUT/PATCH, DELETE
  • 브라우저의 작동 원리
    • URL / URI
      • URL (Uniform Resource Locator): 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보 
        • scheme, hosts, url-path 
      • URI (Uniform Resource Identifier) 
        • scheme, hosts, url-path + query, fragment 
    • IP / PORT
      • IP (Internet Protocol): 인터넷상에서 사용하는 주소체계
        • IPv4 / IPv6
          • localhost, 127.0.0.1 -> 현재 사용중인 로컬PC
          • 0.0.0.0, 255.255.255.255 -> broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소 
      • PORT: http://localhost:3000  -> :3000 이 숫자 부분! IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널) 을 의미함. 
        • 0~65535까지 사용할 수 있음. 그 중 0~1024번까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있음!
          • 22: SSH / 80: HTTP / 443: HTTPS
    • 도메인 / DNS 
      • 도메인: IP 주소를 대신하여 사용하는 주소! nslookup 명렁어로 터미널에서 조회 가능
      • DNS(Domain Name System): 일정 기간 대여하여 사용하는 도메인 이름과 매칭된 IP 주소를 확인할 수 있는 데이터베이스 시스템 
  • HTTP
    • HyperText Transfer Protocol. HTML과 같은 문서를 전송하기 위한 프로토콜. 웹 브라우저와 웹 서버의 소통을 위해 디자인되었음.  / 무상태성 (stateless)
    • HTTP Messages: 클라이언트와 서버 사이에서 데이터가 교환되는 방식 
      • start line / status line : 요청이나 응답의 상태
      • HTTP headers: 요청을 지정하거나, 메세지에 포함된 본문을 설명하는 헤더의 집합
      • empty line
      • body: 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서 포함 
    • HTTP Requests (요청)
      • Start line: HTTP 메서드를 나타냄 / 절대 경로를 다양한 형식으로 표현 / HTTP 버전 
      • Headers: "헤더 이름: 값" 의 기본 구조로 표현. 
        • general headers
        • request headers 
        • representation headers
      • Body: POST, PUT 과 같은 일부 요청에서 데이터를 업데이트하기 위해 사용
        • single-resource bodies
        • multiple-resource bodies 
    • HTTP Responses (응답)
      • Status line: 
        • 현재 프로토콜의 버전 / 상태 코드 - 요청의 결과 / 상태 텍스트 
          • ex) HTTP/1.1 404 Not Found 
      • Headers: 요청 헤더와 동일한 구조! 
        • general headers
        • response headers
        • representation headers 
      • Body: 
        • single-resource bodies
        • multiple-resource bodies