HTTP 기본

enjoy89·2022년 6월 15일
3

HTTP 웹 기본 지식

목록 보기
3/7
post-thumbnail

모든 개발자를 위한 HTTP 웹 기본 지식 강의를 공부하고 정리한 글입니다.

HTTP(Hyper Text Transfer Protocol)

  • 문서를 전송하는 프로토콜
  • 이제는 문서뿐 아니라 HTML, TEXT, 이미지 , 음성, 영상, 파일, JSON 등 모든 형태의 데이터를 전송할 수 있다.

HTTP 특징

  • 클라이언트 서버 구조로 동작한다.
    • 클라이언트는 서버에 요청(Request)를 보내고 응답을 올 때까지 기다린다.
    • 서버에서는 요청에 대한 결과를 만들어서 응답(Response)한다.
    • 클라이언트는 다시 응답 결과를 열어서 동작한다.
  • 무상태 프로토콜(Stateless) 지향
    • 서버가 클라이언트의 상태를 보존하지 않는다. 중간에 서버가 변경되어도 통신 가능하다.
    • 요청에 매번 이전의 모든 상태값들을 전달해줘야 한다.
    • 클라이언트의 수가 폭증해도 서버를 대거 늘리면 해결할 수 있다. (서버의 수평 확장 유리)
  • 비연결성(Connectionless)
    • 클라이언트와 서버는 요청을 주고 받을때만 연결을 유지한다.
    • 기본적으로 연결을 유지하지 않으므로 서버의 자원을 매우 효율적으로 사용할 수 있다.
  • HTTP 메시지를 통해서 통신한다.
  • 단순하고 확장이 가능하다.

HTTP 메시지

  • start-line
    • 요청: request-line
    • 응답: status-line
  • header
    • 전송에 필요한 모든 부가 정보
  • body
    • 실제 전송할 데이터
    • HTML, 이미지, 영상, JSON 등 바이트로 표현할 수 있는 모든 데이터 전송이 가능하다.

HTTP 메시지 예시

  • HTTP 요청 메시지

    • request-line = method SP(공백) request-target(PATH=요청하는대상) SP HTTP-version CRLF(엔터)
    • HTTP 메서드 = GET(리소스 조회)
    • 요청 대상: /search?q=hello&hl=ko
    • HTTP 버전: HTTP/1.1
  • HTTP 응답 메시지

  • status-line = HTTP-version SP(공백) status-code SP(공백) reason-phrase CRLF(엔터)
    • HTTP 상태 코드: 200 (성공)
      • 400 (클라이언트 요청 오류)
      • 500 (서버 내부 오류)
profile
Backend Developer 💻 😺

0개의 댓글