HTTP 웹 기본 지식[HTTP 특징]

이상훈·2022년 8월 19일
0

CS

목록 보기
25/27

김영한님의 인프런 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 참고했습니다.

지금은 HTTP 시대

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

HTTP 특징

1. 클라이언트 서버 구조

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

2. 무상태 프로토콜(Stateless)

HTTP는 무상태 프로토콜이다. 따라서 서버에서 상태를 보관하지 않으므로 중간에 서버가 장애나도 다른 서버들로 쉽게 대체 가능하여 수평 확장에 유리하다는 장점이 있다. 반면 상태 유지(Stateful)는 상태를 유지해야 하기 때문에 클라이언트에 항상 같은 서버가 유지되어야 하며 따라서 만약 중간에 서버가 장애나면 대체 할 수가 없다.

상태 유지는 최소한만 사용해야 한다. 상태 유지의 예로 로그인이 있다. 로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지해야 한다.

3. 비연결성

연결을 유지하는 모델

  • 장점 : 서버가 연결되어 있으므로 재요청 시 빠르다.
  • 단점 : 연결을 계속 유지해야 하므로 서버 자원이 계속 소모된다.

연결을 유지하지 않는 모델

  • 장점 : 사용한 서버는 바로 연결을 끊으므로 서버 자원을 매우 효율적으로 사용할 수 있다.
  • 단점 : 매번 TCP/IP 연결을 새로 맺어야 하므로 연결을 유지하는 모델보다 느리다.

    HTTP는 기본이 연결을 유지하지 않는 모델이다. 지금은 HTTP 지속 연결로 단점을 해결한다.

지속 연결 적용 전

지속 연결 적용 후

내부 매커니즘에 따라 일정 시간동안 지속 연결을 유지한다.

HTTP 메시지

HTTP 메시지에는 HTTP 요청 메시지와 HTTP 응답 메시지가 있으며 구성 요소는 조금씩 차이가 있지만 구조는 같다. 둘 다 start-line, header, empty line, message body로 이루어져 있다.

시작 라인(요청 메시지)

  • HTTP 메서드 : 서버가 수행해야 할 동작 지정.
    ex) GET
  • 요청 대상 : 요청 대상으로써 절대 경로= "/"로 시작하는 경로.
    ex) /search?q=hello&hl=ko
  • HTTP 버전
    ex) HTTP/1.1

시작 라인(응답 메시지)

  • HTTP 버전
    ex) HTTP/1.1
  • HTTP 상태 코드 : 요청 성공, 실패 등을 나타냄.
    ex) 200
  • 이유 문구 : 사람이 이해할 수 있는 짧은 상태 코드 설명 글.
    ex) OK

HTTP 헤더

HTTP 헤더는 HTTP 전송에 필요한 모든 부가정보를 담는다. 예를 들어 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등등.

HTTP 메시지 바디

  • 실제 전송할 데이터
  • HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글