컴퓨터 네트워크/모든 개발자를 위한 HTTP 웹 기본지식 정리

HTTP 통신

kimjy 2022. 1. 25. 09:42

본 포스팅은 인프런 김영한 강사님의 HTTP 통신 강의 내용을 정리 및 요약 내용입니다.

 

웹 브라우저 요청 흐름

1. HTTP 요청 메세지 생성2. DNS 조회3. SOCKET 라이브러리를 통해 전달(TCP/IP 연결; 데이터 전달)4. TCP/IP 패킷 생성, HTTP 메세지 포함5. 네트워크 인터페이스를 통해 서버에 메세지 전달

  • 패킷은 HTTP 메세지를 TCP/IP 패킷으로 감싸는 형태

HTTP(HyperText Transfer Protocol)

  • HTML, TEXT, 이미지, 음성, 영상, 파일 등을 전송할 수 있음.
  • JSON, XML 포맷으로 주고받을 수 있음
  • 서버간의 데이터 통신도 대부분 HTTP를 사용
  • HTTP/2까지는 TCP 프로토콜을 사용하였으나, 3부터는 UDP도 사용되기 시작함.

HTTP 특징

  • 클라이언트-서버 구조
  • 무상태 프로토콜(stateless), 비연결성
  • HTTP 메세지로 데이터를 요청/전달하며, 단순하고 확장이 가능함.

클라이언트-서버 구조

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

Stateless

  • 서버가 클라이언트의 상태를 보존하지 않음
  • 서버의 확장성(scale out)이 높음
  • 다만 클라이언트가 통신때마다 추가 데이터를 전송하여야 함

비연결성

  • HTTP는 기본이 연결을 유지하지 않는 모델임
  • 일반적으로 초 단위의 이하의 빠른 속도로 응답
  • 1시간동안 수천명이 서비스를 사용하여도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
  • 서버 자원을 매우 효율적으로 사용할 수 있음
  • 다만 TCP/IP 연결을 통신때마다 새로 맺어야 함(3 way handshake)
  • 지금은 HTTP 지속 연결로 문제를 해결할 수 있음

HTTP 메세지

  • HTML, TEXT, 이미지, 음성, 영상, 파일 등 거의 모든 형태의 데이터를 전송할 수 있음.
  • 일반적으로 JSON이나 XML 포맷으로 전송이 가능.
  • 서버간에 데이터를 주고받을 때도 대부분 HTTP 통신을 사용

 

시작라인: GET /search?q=hello&hl=ko HTTP/1.1

  • HTTP 메서드(GET), 요청대상(/search?q=hello&hl=ko), HTTP 버전

HTTP 헤더

  •  HTTP 전송에 필요한 모든 부가정보
  • 메세지 바디 내용, 크기, 압축, 인증, 요청 클라이언트의 정보, 서버 애플리케이션 정보, 캐시 관리 정보
  • 필요시 임의의 헤드를 추가할 수 있음

HTTP 바디

  • 실제 전송할 데이터
  • HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터를 전송할 수 있음.