HTTP 개념과 작동 원리

한올·2024년 10월 22일
post-thumbnail

HTTP란?

HTTP(Hypertext Transfer Protocol) 는 웹 브라우저(클라이언트)가 서버와 통신할 때 지켜야 하는 일종의 '규칙(프로토콜)'입니다.

개인적으로 이렇게 원론적인 들으면 와닫지가 않더라고요.
아래에 일상생활과 HTTP에 연관성을 간략하게 정리해보았습니다.


일상 생활과 HTTP의 연관성

"인터넷창(웹 브라우저)을 켜고 하는 모든 행위"와 "스마트폰 앱이 데이터를 주고받는 모든 과정"에 HTTP가 사용됩니다.

1. 우리가 매일 쓰는 웹 브라우저(스마트폰&PC)

네이버, 구글, 유튜브 등 우리가 크롬, 사파리, 웨일 같은 브라우저 주소창에 URL을 입력하고 검색 버튼을 누르는 순간 HTTP 통신이 시작됩니다.

웹페이지 조회: 브라우저가 서버에 "네이버 메인 화면(HTML, CSS, JS) 좀 줘" 하고 HTTP GET 요청을 보냅니다.

로그인 및 회원가입: 아이디와 비밀번호를 입력하고 버튼을 누르면, 서버로 계정 정보를 안전하게 보내기 위해 HTTP POST 요청을 보냅니다.

2. 스마트폰 앱

인터넷창을 켜지 않고 배달의민족, 인스타그램, 카카오톡 같은 '앱'을 쓸 때도 내부적으로는 전부 HTTP를 씁니다.

배달 앱: "내 주변 치킨집 목록 보여줘" 하고 서버에 요청하면, 서버가 치킨집 이름, 리뷰, 이미지 주소 등이 담긴 JSON 데이터를 HTTP 응답으로 보내줍니다. 앱은 그 데이터를 받아서 우리 화면에 예쁘게 그려주는 역할만 합니다.

SNS 앱: 인스타그램에서 피드를 아래로 당겨서 새로고침할 때, 새로운 사진 데이터를 HTTP 통신으로 긁어옵니다.


HTTP의 작동 원리


HTTP는 요청(Request)과 응답(Response)이라는 단순한 구조로 작동합니다. 클라이언트가 먼저 행동(요청)을 취해야만 서버가 그에 따른 결과(응답)를 돌려주는 방식입니다.

요청 (Request)

클라이언트가 서버에게 "이 작업을 처리해 줘"라고 요구할 때 사용됩니다. 요청 메시지는 크게 다음과 같은 요소로 구성됩니다.

  • URL: 클라이언트가 접근하고자 하는 자원(데이터)의 위치를 나타냅니다.
  • 메서드(Method): 요청의 종류와 목적을 나타냅니다. (예: 데이터를 가져올지, 새로 저장할지 등)
  • 헤더(Header): 요청에 대한 추가 정보를 담고 있습니다. 예를 들어, 브라우저 정보, 인증 토큰, 콘텐츠 타입 등이 포함됩니다.
  • 본문(Body): 필요할 경우 클라이언트가 서버로 실제 데이터를 실어 보냅니다. 주로 값을 새로 저장하거나 수정할 때 사용됩니다.

응답 (Response)

서버가 클라이언트의 요청을 처리한 후 결과를 돌려줄 때 사용됩니다. 응답 메시지는 다음과 같이 구성됩니다.

  • 상태 코드(Status Code): 요청이 성공했는지 실패했는지를 알려주는 3자리 숫자입니다.
    • 200 (성공)
    • 404 (찾을 수 없음 - 잘못된 주소)
    • 500 (서버 내부 오류)
  • 헤더(Header): 응답 데이터에 대한 추가 정보를 담고 있습니다. (예: 서버가 돌려주는 데이터의 종류, 데이터 길이 등)
  • 본문(Body): 서버가 클라이언트에게 보내는 실제 데이터입니다. 브라우저가 화면에 그려낼 HTML 코드나, 화면을 업데이트할 때 쓰는 JSON 데이터 등이 여기에 담깁니다.

HTTP 메서드 (Method)

HTTP는 다양한 메서드를 지원합니다. 가장 많이 쓰이는 핵심 메서드 5가지를 CRUD 개념으로 분류해 정리해보았습니다.

Create(쓰기)

  • POST : 데이터 생성
    • 서버에 새로운 리소스를 등록하거나 제출할 때 사용합니다.
    • 회원가입, 글쓰기 등이 대표적이며, 저장할 데이터를 본문(Body)에 숨겨서 안전하게 전송합니다.

Read(읽기)

  • GET : 데이터 조회
    • 서버로부터 특정 리소스(웹페이지, 이미지, 데이터 등)를 가져올 때 사용합니다.
    • 본문(Body)을 비워두는 것이 일반적이며, 필요한 데이터는 URL 뒤에 붙여서 보냅니다.

Update(덮어쓰기)

  • PUT : 데이터 전체 수정
    • 서버의 기존 리소스를 새로운 데이터로 통째로 교체(수정)할 때 사용합니다.
    • 만약 요청한 위치에 데이터가 없다면 새로운 리소스를 생성하기도 합니다.
  • PATCH : 데이터 일부 수정
    • 리소스의 전체가 아니라 특정 일부분만 수정할 때 사용합니다.
    • 회원의 비밀번호만 변경하거나, 글의 제목만 바꿀 때 PUT 대신 PATCH를 쓰는 것이 권장됩니다.

Delete(삭제)

  • DELETE : 데이터 삭제
    • 서버에 존재하는 특정 리소스를 삭제할 때 사용합니다.
profile
노션이 터져서 임시로 사용하는 오픈 세컨 브레인

0개의 댓글