HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
모든 개발자를 위한 HTTP 웹 네트워크
모든 개발자를 위한 HTTP 웹 네트워크
/
3. HTTP 기본
3. HTTP 기본
3. HTTP 기본

3. HTTP 기본

모든 것이 HTTP

  • HTML, TEXT
  • IMAGE, 음성, 영상, 파일
  • JSON, XML (API)
  • 거의 모든 형태의 데이터 전송 가능
  • 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용
 

HTTP 버전

  • HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전
 
기반 프로토콜
  • TCP: HTTP/1.1, HTTP2
  • UDP : HTTP/3
 
HTTP의 특징
  • 클라이언트 서버 구조
  • Stateless, Connectionless
  • Http Message
  • 단순함, 확장가능
 

클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고, 응답을 대기
  • 서버는 요청에 대한 결과를 만들어서 응답
클라이언트 서버 구조
클라이언트 서버 구조

클라이언트와 서버의 독립적인 진화

  • 클라이언트 - UI
  • 서버 - 데이터
 

Stateless Protocol

  • 서버가 클라이언트의 샅애를 보존하지 않음
  • 장점 - 서버 확장성 높음 (Scalablity)
  • 단점 - 클라이언트가 추가 데이터 전송
 
Stateful
장애에 취약한 Stateful 구조
장애에 취약한 Stateful 구조
Statelss - 아무 서버나 호출해도 됨
장애에 대응 가능함, 수평 확장 유리
장애에 대응 가능함, 수평 확장 유리
Stateless의 한계
  • 모든 것을 무샅애로 설계 할 수 없는 경우도 있다.
  • 로그인???
    • 브라우저의 쿠키와 서버의 세션을 사용하여 상태 유지
    •  
       
 

Connectionless 비 연결성

Connection based model
Connection based model
 
Connectionless model
Connectionless model
 
  • HTTP는 기본적으로 연결을 유지하지 않음
  • 일반적으로 초 단위 이하의 빠른 속도로 응답
  • 1 시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
  • 서버의 자원을 매우 효율적으로 사용할 수 있음
 

비 연결성 - 한계와 극복

  • TCP/IP 연결을 새로 맺어야 함 - handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 js, css, image 등 수많은 자원들이 함께 다운로드
  • 지금은 HTTP 지속 연결 (Persistent Connections)로 문제 해결
  • HTTP/2, HTTP/3에서 더 많은 최적화
 
HTTP 초기 - 연결,종료의 낭비
HTTP 초기 - 연결,종료의 낭비
HTTP Persistent Connections
HTTP Persistent Connections
 
 

HTTP 메시지

GET /serach?q=hello?hl=ko HTTP/1.1 Host: www.google.com
HTTP 요청 메시지
HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 <html> <body> ... </body> </html>
HTTP 응답 메시지
 
HTTP 메시지 구조
  • start-line
  • header
  • empty line
  • message body
 

시작 라인

요청 메시지
  • start-line = request-line
  • request-line = methodSP request-target SP HTTP-version CRLF
 
응답 메시지
  • start-line = status-line
  • status-line = HTTP-version SP status-code SP reason-phrase CRLF

헤더

  • header-field = field-name OWS field-value OWS
  • HTTP 전송에 필요한 모든 부가정보
  • 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 캐시 관리 정보 ...
  • 표준헤더가 있지만 임의 헤더도 추가 가능
 

메시지 바디

  • 실제 전송할 데이터
  • HTML, 이미지, 영상, JSON, byte로 표현할 수 있는 모든 데이터 전송 가능