HTTP

ezi·2024년 1월 27일

네트워크

1장

  • WWW (World Wide Web)
    • 인터넷에 연결된 컴퓨터들이 서로 정보를 공유하고 찾아볼 수 있는 공간
  • 하이퍼텍스트
    • 하이퍼링크(한 문서에서 다른 문서로 넘어갈 수 있는 연결 고리) 를 포함한 문서
    • 하이퍼텍스트 형식으로 작성된 문서 = 웹 페이지
  • 웹의 구성 요소
    • URL, HTTP, HTML
    • 하이퍼텍스트 형식으로 이루어진 문서들을 연결
  • 웹브라우저
    • (ex 크롬) 웹 문서를 열기 위해 사용하는 응용 소프트웨어

웹 어플리케이션 아키텍처

  • 웹 동작에 필요한 각 요소와 그 사이 상호 작용을 정의해 놓은 것
  • 웹 클라이언트, 웹 서버
  • WAS
    • 웹서버로 부터 동적 콘텐츠를 받아 이를 처리한 뒤 그 결과를 다시 웹 서버에 전달하는 중간자 역할
    • 톰캣, 제우스, IBM 웹스피어
  • 브라우저 삼대장
    • HTML, CSS, JS

2장

  • LAN (Local Area Network)
    • 지리적 가까운 기기들이 연결된 소규모 네트워크
    • 기기가 물리적으로 가까이 연결, 구현 간단, 속도빠름
  • WAN (Wide Area Network)
    • 광역 네트워크
  • OSI 7 계층
    • 개방 시스템 상호 연결 , 서로 다른 시스템이 잘 연결될 수 있게 하는 표준안

      Untitled

  • TCP/IP 4계층 Untitled
  • 캡슐화 & 역캡슐화
    • 헤더정보
      • 보내는 쪽의 계층이 받는 쪽의 계층에 전달하는 관련 정보
    • 캡슐화
      • 보내는 쪽에서 헤더를 덧붙이면서 데이터를 하위 계층으로 보내는 과정

3장

  • URL
    • 웹에서 주어진 고유 리소스 주소 Untitled
  • port
    • 웹 서버 안에서 특정 자원에 접근하기 위해 사용하는 관문
  • URI
    • 자원을 구분할 수 있는 유일한 식별자
  • DNS Domain Name System
    • IP주소 ↔ 도메인(IP 주소보다 기억하기 쉬운 형태의 호스트 이름) 변환 Untitled
    • 보통 한 번 IP 주소를 찾고 나면 로컬 DNS 서버에서 해당 도메인 정보를 임시로 저장하고 사용자의 PC에 전달해, 다음부터는 미리 PC에 저장한 IP주소로 연결할 수 있게 설계

4장

  • IP(Internet Protocol)
    • 인터넷에서 데이터를 주고받을 때 사용하는 통식 규약
    • 패킷을 정해진 목적까지 운반하기 위해 사용
    • 외부에서 패킷이 들어오면 내 IP주소와 맞는지 비교, 일치하지 않으면 다른 호스트로 전달
    • 패킷의 손실, 중복같은 상태 이상은 확인X = 비연결성, 비신뢰성
  • IP4 Untitled
    • 네트워크 : 데이터를 통신하는 과정에서 같은 공유기를 사용하는 범위
    • 호스트 : 이 네트워크테 연결된 각각의 장치
  • 브로드캐스트 주소
    • 특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야 할 때 사용하는 주소
  • 클래스 A(0-127), B(128-191), C(192-223) Untitled

IP4 부족

  • CIDR
    • 클래스 없는 도메인 간 라우팅 기법, 클래스 없이도 IP주소를 할당할 수 있는 방식
    • 네트워크와 호스트 구분점을 2진수의 한 자릿수, 1비트 단위까지 가능하게 해 호스트 주소를 더 유연하게 할당 가능
  • 서브넷 마스크
    • 네트워크와 호스트 부분을 구분해주는 역할 Untitled
  • DHCP
    • IP가 필요한 컴퓨터에 자동으로 IP주소를 할당해서 사용하게 해주고, 사용하지 않으면 IP주소를 반환받아 다른 컴퓨터가 사용할 수 있게 해주는 프로토콜
  • NAT
    • 네트워크 주소 변환
    • 공인IP
      • 인터넷상에서 유일한 주소이자 ISP에서 공식으로 할당하는 주소
    • 사설IP
      • 상세주소, 특정 네트워크 내에서 사적인 용도로 이용하는 주소

5장

  • TCP

    • 전송 제어 프로토콜, 연결형 프로토콜

    • 신뢰성 있는 데이터 통신을 위한 프로토콜

    • 패킷마다 번호 부여

    • 헤더

      • 시퀀스번호(패킷의 번호)
      • 플래그(패킷의 상태)
        • ACK : 앞서 받은 데이터 잘 처리
        • SYN : 연결을 요청하는 플래그
        • FIN : 통신이 잘 마무리되어 연결의 해제를 요청
    • 3-way handshake

      Untitled

    • 4-way handshake

      Untitled

  • 혼잡제어

    • 네트워크 내 패킷의 수가 과도하게 증가하는 현상
    • 합증가/곱감소
      • 전송자가 수신자에게 패킷을 하나씩 보낸뒤 잘 도착했다는 응답을 받으면 윈도 크기 +1 증가하면서 전송
      • 혼잡 발생하면 윈도 크기 절반으로 줄임
    • 느린시작
      • 윈도크기 1로 시작, 2배씩 증가
      • 혼잡 발생하면 윈도크기 1로 줄임
  • UDP

    • 신뢰성 x, 빠름

      Untitled

6장 HTTP

  • HTTP (Hypertext Transfer Protocol)
    • 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위해 사용하는 프로토콜
    • 웹 통신을 위한 프로토콜
    • 클라이언트-서버 모델
    • HTTP 메세지
      • 요청 메세지 Untitled
      • 응답 메세지 스크린샷 2024-03-19 오후 4.36.43.png
    • stateless
      • 데이터 유지 x
    • 비연결성 프로토콜
      • 한 번 통신을 주고 받으면 연결을 끊음
    • 안정성
      • 클라이언트가 요청을 해도 서버의 자원이 변하지 않는 특성 스크린샷 2024-03-19 오후 4.45.48.png
    • 멱등성
      • 연산을 여러 번 적용해도 결과가 달라지지 않는 현상 스크린샷 2024-03-19 오후 4.47.43.png
  • 헤더의 정류 스크린샷 2024-03-19 오후 4.52.03.png
  • 상태코드
    • 1XX
      • 웹 서버가 현재 요청을 받았으며 작업을 진행하고 있다는 의미
      • 100 : 서버가 첫번째 요청을 받았으며 추가 요청을 기다리고 있음
    • 2XX
      • 클라이언트가 요청한 작업을 서버가 성공적으로 처리했음
      • 200 OK
      • 201 Created
      • 204 No content
    • 3XX
      • 리다이렉션 응답 완료, 요청을 완료하기 위해 재전송이 필요하다는 의미
    • 4XX
      • 클라이언트 측 오류
      • 400 Bad Request : 클라이언트 요청 내용 문제
      • 401 Unauthorized : 인증되지 않는 사용자
      • 404 Not Found
    • 5XX
      • 서버 오류
      • 500 Internal Server Error : 서버 내부적으로 오류 발생
      • 502 Bad GateWay : 서버간 네트워크 문제
  • 보안 : SSL, TLS, HTTPS
    • 중간자 공격
    • HTTPS
      • 통신하는 당사자만 볼 수 있게 암호화
    • 암호화를 담당하는 곳 : SSL (Secure Sockets Layer)
      • 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있게 돕는 보안 계층 스크린샷 2024-03-19 오후 5.03.24.png
        • 각 계층이 서로 독립적이기 때문에 SSL은 HTTPS 뿐만 아니라 다른 프로토콜과도 조합해서 사용 가능 ex) FTP(파일전송), SMTP(이메일 전송), RedisProtocl
    • TLS (Transport Layer Security)
      • SSL 3.0
    • SSL 동장 방식
      • 대칭키(하나의 키로 암호화, 복호화) + 공개키(서로 다른 키 두개로 암호화, 복호화) 스크린샷 2024-03-19 오후 5.12.41.png
  • HTTP/1.1
    • 지속성 연결 상태
      • 한번 TCP 연결을 맺으면 따로 연결을 끊지 않는 이상 기본적으로 연결을 유지하는 지속적 연결 상태 지원
    • 파이프라이닝
      • 이전 응답과 상관 없이 여러개의 요청을 보낼 수 있음
  • HTTP/2
    • 스트림 다중화
      • 응답의 순서와 상관없이 한 연결 안에서 여러 개의 메세지를 주고 받을 수 있게 개선
    • 서버 푸시
      • 클라이언트가 굳이 요청하지 않아도 서버에서 미리 필요한 리소스를 푸시할 수 있게 됨
    • 바이너리 프레이밍
      • 텍스트 형식이었던 HTTP 메세지를 더 작은 단위로 쪼개 바이너리 형태로 캡슐화한 것

7장 HTTP 특징과 데이터 저장 방식

  • 무상태 프로토콜
    • HTTP, IP, UDP
    • 모든 요청과 응답은 서로 독릭접

HTTP - (외부에 저장소를 따로 두어 그곳에 상태를 저장하게끔 하고 필요에 맞게 서버에 상태를 전달함)

스크린샷 2024-03-19 오후 5.36.10.png

[ 브라우저에서 데이터 저장 ]

  • 쿠키

    • 브라우저에 데이터를 저장하는 방식 중 하나
    • 서버의 데이터베이스에 저장하지 않고 클라이언트(브라우저)에서 해당 웹 사이트의 데이터를 일부 저장하여 바로 값을 받아옴 → 속도 up, 비용 down
    • 데이터 : 키-값 형태, 문자열만 저장 가능
    • 세션쿠키
      • 따로 만료 기간이 정해져 있지 않은 쿠키, 브라우저가 종료될 때 같이 사라짐
    • 영구 쿠키
      • 만료 기간 존재, 해당 기간이 끝나면 사라지는 쿠키
    • 단점
      • 보안 취약
  • 웹 스토리지

    • 클라이언트 상에서 데이터를 저장할 수 있는 방법 중 하나
    • 데이터 : 키-값 형태, 문자열만 저장 가능
    • 장점
      • 저장할 수 있는 용량 큼
      • 클라이언트에서만 접근 가능
      • 서버 사용x
    • 로컬 스토리지
      • 한 번 브라우저에 저장되면 의도적으로 삭제하지 않는 이상 데이터가 유지됨
    • 세션 스토리지
      • 클라이언트와 서버 간의 연결이 끊어지면 데이터도 함께 삭제됨
  • IndexedDB

    • 브라우저에 내장된 데이터베이스
    • 웹 스토리지보다 더 강력하게 데이터 저장
    • 데이터 : 다양한 타입 지원, 데이터 조회 용이, 용량제한 x
    • 클라이언트 단?

[ 서버에서 데이터 저장 ]

  • 세션
    • 서버에서 일시적으로 데이터를 저장할 수 있는 기술

      → 정보를 서버에서 관리하기 때문에 쿠키만 사용했을 때보다 보안이 우수
      클라이언트 별로 고유 ID를 부여해 관리하기 때문에 각 클라이언트의 요구에 맞는 맞춤형 서비스 제공 가능

      JWT 세션

profile
차곡차곡

0개의 댓글