본문 바로가기
웹 개발

HTTP 개념

by heosj 2024. 5. 22.

HTTP; Hypertext Transfer Protocol

  • 웹에서 다양한 형태의 데이터를 주고 받을 수 있는 프로토콜이다
  • 클라이언트-서버 구조로, 데이터를 주고받을 때 지켜야하는 규칙이다

HTTP 특징

클라이언트-서버 구조

  • 클라이언트가 서버에 요청(Request)을 보내면, 서버가 적절한 응답(Response)을 보내는 구조이다

Stateless; 무상태성

  • HTTP는 클라이언트나 서버의 상태를 저장하지 않기 때문에 응답과 요청이 독립적이다
  • 응답 서버를 쉽게 바꿀 수 있어서 서버 확장성이 높지만, 클라이언트가 추가 데이터를 전송해야 한다
  • 로그인과 같이 유저의 상태를 유지해야 하는 경우에는 클라이언트의 쿠키, 서버의 세션 또는 토큰을 이용해 상태를 유지해야 한다

Connectionless; 비연결성

  • HTTP는 실제로 요청을 주고받을 때만 연결을 유지하므로, 응답을 주고나면 TCP/IP 연결을 끊어서 최소한의 자원으로 서버를 유지할 수 있다
  • HTTP 1.0을 기준으로 HTTP는 연결을 유지하지 않는 모델인데, 트래픽이 많거나 큰 규모의 서비스를 운영할 때 비연결성이 한계를 보인다
한계
  • 새로운 요청이 올 때마다 TCP/IP 연결을 새로 맺어야 하기 때문에 3 way handshake 시간이 소요된다
  • 웹 브라우저로 사이트를 요청하면 HTML, CSS, JavaScript, 이미지 등 수많은 자원이 함께 다운로드 되는데, 자원을 각각 보낼 때마다 연결을 끊었다 연결하는 것을 반복해야 한다
Persistant Connections; 지속 연결
  • HTTP 1.1에서 HTTP 지속 연결이 가능하게 되어 위의 한계점이 해결되었다
  • 연결이 이루어지고 난 뒤 각각의 자원을 요청하고, 모든 자원에 대한 응답에 돌아온 후에 연결을 종료한다

HTTP Messages

HTTP의 요청과 응답은 Messages의 양식에 맞게 전달된다

start line 요청/응답의 상태
headers 전송에 필요한 모든 부가 정보
empty line 헤더와 본문을 구분하는 빈 줄
body payload, 요청/응답과 관련된 데이터 또는 문서

 


HTTP Requests

요청 Method
  • GET : 서버로부터 리소스를 가져온다
  • POST : 서버로 리소스를 전송한다
  • PUT : 서버로 리소스를 전송해 기존 리소스를 변경(전체)한다
  • PATCH : 서버로 리소스를 전송해 기존 리소스를 변경(일부)한다
  • DELETE : 서버에서 리소스를 삭제한다
  • HEAD : GET 메소드와 유사하지만, body를 제외하고 가져온다
  • CONNECT : 클라이언트가 프록시를 통해 서버와 SSL 통신할 때 사용한다
  • OPTIONS : 어떤 HTTP 메소드에 응답해줄 수 있는지 물을 때 사용한다
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 할 때 사용한다

 

HTTP Response

상태 코드
  • 1xx: 정보, 요청을 받았으며 프로세스를 계속 처리중임
  • 2xx: 성공, 요청을 성공적으로 처리함
  • 3xx: 리다이렉트, 요청을 완료하기 위해 웹 브라우저에서 추가 작업이 필요함
  • 4xx: 클라이언트 오류, 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
  • 5xx: 서버 오류, 서버가 정상 요청을 처리하지 못함

'웹 개발' 카테고리의 다른 글

TCP와 UDP  (0) 2024.05.22
HTTP와 TCP/IP  (0) 2024.05.22
DNS  (0) 2024.05.22
웹의 작동 원리  (0) 2024.05.22
인터넷의 작동 원리  (0) 2024.05.21