🌐web/HTTP 웹 기본 지식

[HTTP 웹 지식] HTTP 기본

2023. 2. 20. 02:00
반응형

인프런 김영한님의 모든 개발자를 위한 HTTP 웹 지식 강의를 듣고 정리했습니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

 

 

 

 

모든 것이 HTTP

 

 

HTTP (HyperText Transfer Protocol)

HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML, 거의 모든 형태의 데이터를 전송하고 서버간의 데이터를 주고 받을 때도 대부분 HTTP를 사용한다. 

 

HTTP 역사

HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더 X

HTTP/1.0 1196년 : 메서드, 헤더 추가

HTTP/1.1 1997년 : 가장 많이 사용, 우리에게 가장 중요한 버전

HTTP/2 2015 : 성능 개성

HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선

 

윈도우에서 f12를 누르면 어떤 프로토콜을 사용하는 지를 알 수 있다. 

 

HTTP 특징

- 클라이언트 서버 구조

- 무상태 프로토콜, 비연결성

- HTTP 메시지 

- 단순함

 

 

 

클라이언트 서버 구조

 

 

- Request Response 구조

- 클라이언트는 서버에 요청을 보내고, 응답을 대기한다. 

- 서버가 요청에 대한 결과를 만들어서 응답한다. 

클라이언트와 서버를 완전히 분리하여 설계하면 각자 발전이 가능하다. 비즈니스 로직과 복잡한 것은 서버가 담당. 클라이언트는 오직 뷰만 담당.

 

 

Stateful, Stateless

 

 

stateful (상태 유지)

- 중간에 다른 점원으로 바뀌면 안된다. 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다. 

stateless (무상태)

- 중간에 다른 점원을 바뀌어도 된다. 갑자기 고객이 증가해도 점원을 대거 투입 가능하고, 이는 클라이언트 요청이 많아져도 서버를 대거 투입이 가능하다는 뜻이다. 

 

무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설이 가능하다. 

 

 

stateful 

서버1에서 문제가 생기면 클라이언트에서 요청을 다시 해야한다. 

 

stateless

클라이언트가 이미 요청할 때 필요한 정보를 함께 보내기에 서버는 응답만 한다. 서버1에서 문제가 생겨도 서버2에서 처리한다. 

이는 스케일 아웃 (수평 확장)에 유리하다.

 

한계

- 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다. (로그인 기능은 상태 유지)

- 일반적으로 쿠키와 서버 세션 등을 사용해서 상태를 유지한다. 

 

 

비연결성

- 서버에서 응답을 보내면 TCP/IP 연결을 끊는다. 

 

특징

- HTTP는 기본이 연결을 유지하지 않는 모델이다.

- 일반적으로 초 단위의 이하의 빠른 속도로 응답한다. 

- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요펑은 수십개 이하로 적음 (웹 브라우저에서 연속적으로 검색 버튼을 누르지 않는다.)

- 서버 자원을 효율적으로 사용할 수 있다. 

 

한계

- TCP/IP 연결을 새로 맺어야 한다. => 3way handshake 시간이 추가된다.

- 웹 브라우저로 사이트를 요청하면 HTML 뿐 아니라 js, css 등 수 많은 자원이 함께 다운로드된다. 

- 지금은 HTTP 지속 연결로 문제 해결했다. (HTML 문서가 다 받을 때까지는 지속 연결)

 

 

 

HTTP 메시지

 

 

요청 메시지도 body 본문을 가질 수 있다. 

 

시작 라인 (요청 메시지)

- start-line = request- line / status-line

- HTTP 메서드 종류 : GET, POST, PUT, DELETE (GET: 리소스 조회, POST: 요청 내역 처리)

- 요청 메시지 - 요청 대상 절대경로로 시작하는 경로

- HTTP 버전

 

시작 라인 (응답 메시지)

- HTTP 버전

- HTTP 상태 코드

- 이유 문구

 

HTTP Header 

- header-field = field-name ":" OWS field-value OWS (OWS 는 띄어쓰기 허용)

- HTTP 전송에 필요한 모든 부가정보 

 

HTTP message body

- 실제 전송할 데이터

- 모든 데이터 전송 가능하다.

 

 

HTTP는 단순하고 메시지도 단순하다. 

반응형
저작자표시 (새창열림)

'🌐web > HTTP 웹 기본 지식' 카테고리의 다른 글

[HTTP 웹 지식] HTTP 헤더2 - 캐시와 조건부 요청  (0) 2023.02.27
[HTTP 웹 지식] HTTP 헤더1- 일반 헤더  (0) 2023.02.23
[HTTP 웹 지식] HTTP 상태 코드  (0) 2023.02.22
[HTTP 웹 지식] HTTP 메서드, 메서드 활용  (0) 2023.02.21
[HTTP 웹 지식] 인터넷 네트워크와 URL, 웹 브라우저 요청 흐름  (0) 2023.02.17
'🌐web/HTTP 웹 기본 지식' 카테고리의 다른 글
  • [HTTP 웹 지식] HTTP 헤더1- 일반 헤더
  • [HTTP 웹 지식] HTTP 상태 코드
  • [HTTP 웹 지식] HTTP 메서드, 메서드 활용
  • [HTTP 웹 지식] 인터넷 네트워크와 URL, 웹 브라우저 요청 흐름
pkyung
pkyung
pkyung
성장하는 중
pkyung
전체
오늘
어제
  • 분류 전체보기
    • 🏆토이 프로젝트에서 생긴 일
    • 🤿백엔드 내실 채우기
    • 🍫카카오 테크 캠퍼스 2기 BE
    • 🍀spring
      • 스프링 입문
      • 스프링 핵심원리 기본
      • 스프링 jpa
      • 🐛debug
    • 🔒보안
    • 🌎infra
      • docker
      • kubernetes
      • cloud
    • 🌐web
      • HTTP 웹 기본 지식
    • 🔑알고리즘
      • baekjoon
      • programming language
    • 🎞️프로젝트
      • android
      • flutter
    • 📚수업
      • 교양과목
    • 💾database
    • ⚙settings
    • 2023 여름 모각코 - 절개와지조
    • 2024 겨울 모각코 - 내 장점은 algorit..

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링기본
  • python
  • 자바문자열
  • 스프링
  • spring
  • 문자열
  • Docker
  • nginx
  • 객체지향
  • JPA
  • 소수
  • mysql
  • Security
  • HTTP
  • 파이썬
  • 스택
  • 백준
  • 카테캠
  • BFS
  • 스프링부트
  • 김영한
  • 자바
  • 카카오테크캠퍼스
  • sql
  • 데이터베이스
  • 코드리뷰
  • Java
  • 객체지향의사실과오해
  • springboot
  • be

최근 댓글

최근 글

hELLO · Designed By 정상우.
pkyung
[HTTP 웹 지식] HTTP 기본
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.