공부/CS

[CS] HTTP(Hyper Text Transfer Protocol)란?

y_flm 2025. 4. 14. 11:00
반응형

 

HTTP(Hyper Text Transfer Protocol)란?

    웹에서 정보를 주고 받기 위한 프로토콜을 말하는데, 한마디로 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 방법이다.


⚠️ 여기서 잠깐, 프로토콜에 대해 알고 싶다면?

https://y-flm.tistory.com/80

 

[CS] 프로토콜(Protocol)이란? (Feat. OSI 7계층)

프로토콜(Protocol)이란?      기계(컴퓨터)끼리 데이터를 주고 받기 위한 규칙 / 약속 / 표준을 말한다.프로토콜은 어디에 쓰일까?분야예시 프로토콜설명웹HTTP, HTTPS브라우저 - 서버 통신파일 전

y-flm.tistory.com


HTTP의 특징 4가지
  • 특징 ①: 클라이언트 - 서버 구조
    클라이언트(브라우저)요청하는 쪽이고, 서버요청을 받아 응답하는 쪽이다.
    HTTP는 이러한 클라이언트-서버 구조를 가지고 있다.
  • 특징 ②: 무상태(Stateless)
    HTTP에서 서버는 클라이언트의 이전 요청 상태를 기억하지 않는다는 무상태의 특징을 가지고 있다.
    그렇기 때문에 매번 요청할 때 마다 서버는 새로운 사람처럼 대응하고,
    로그인 정보 같은 것을 유지하려면 Cookie, Session, Token 같은 걸 따로 사용해야한다.
  • 특징 ③: 텍스트 기반 프로토콜
    사람이 읽을 수 있는 텍스트 형태로 구성되어 있으며, 개발자 도구 → 네트워크 탭에서 실제 요청/응답 내용을 확인할 수 있다.
  • 특징 ④: URL + Method 조합으로 동작
    GET /users HTTP/1.1 와 같은 HTTP 요청 예시가 있다면,
    여기서 GET무슨 동작을 할지 결정하는 메서드이고,
    /users어떤 데이터를 요청할지에 대한 리소스 경로를 말하고 HTTP/1.1HTTP 버전을 말한다.

그럼 실제 HTTP의 요청/응답 구조는 어떻게 될까?

[HTTP 요청]

GET /products/123 HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

 

  • 무슨 동작인지 (GET)
  • 요청할 리소스 경로 (/products/123)
  • 요청자 정보 (User-Agent)
  • 어떤 형식의 응답을 원하는지 (Accept)

[Method 종류]


* PUT과 PATCH의 차이점

구분 PUT PATCH
의미 전체 자원 교체 일부 자원 수정
데이터 전체 데이터 필요 수정할 필드만 전달
동작 방식 기존 자원을 덮어씀 기존 자원을 부분 업데이트
멱등성 있음 있음 (대부분의 경우)
사용 예시 유저 정보 전체 수정 유저 이메일만 수정

예시로는 아래와 같은 형식의 서버 데이터가 있다고 가정해보자.

{
  "id": 1,
  "name": "Alice",
  "email": "alice@email.com",
  "age": 25
}

PUT을 이용하여 요청을 보내면 아래와 같다.

PUT /users/1
Content-Type: application/json

{   
     "id": 1,
     "name": "Alice B",
     "email": "alice.b@email.com",
     "age": 26
}

기존 데이터를 덮어씌우며, 만약 전달하지 않은 필드가 있다면 사라질 수 있다.


PATCH를 이용하여 요청을 보내면 아래와 같다.

PATCH /users/1
Content-Type: application/json

{
     "age": 26
}

기존 데이터를 유지하면서 일부만 수정하고, 전달하지 않은 필드는 그대로 유지된다.


[HTTP 응답]

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 2730

<html>
  <body>...</body>
</html>

 

  • 200 OK: 성공했단 뜻 (응답 코드)
  • Content-Type: 보내는 데이터의 타입
  • 서버는 요청을 처리한 뒤 상태 코드와 함께 응답을 보내고, 본문(body)에 HTML, JSON, 이미지 등이 들어간다.

 

 

 

응답 코드가 뭘까?

 

응답 코드는 말 그대로 HTTP로 요청을 하고 응답을 받을 때 나타나는 코드이다.

서버가 클라이언트에게 요청을 받으면 응답상태에 따라서 다른 상태코드를 클라이언트에게 돌려준다.

응답 코드는 100 ~ 599까지 숫자로 나뉘고, 앞자리로 의미를 구분한다.

코드 범위 의미 예시 코드 설명
1xx 처리 중 100 임시 응답
2xx 성공 200 OK, 201 Created 요청이 잘 처리됨
3xx 리다이렉션 301, 302 다른 위치로 이동함
4xx 클라이언트 오류 404 Not Found 요청 자체가 틀림
5xx 서버 오류 500 Internal Server Error 서버 문제로 실패

이 중에서 자주 보이는 상태 코드들이 있다.

 

  • 200 OK: 정상 처리
  • 201 Created: POST로 리소스 생성 성공
  • 301 Moved Permanently: 페이지 영구 이동
  • 302 Found: 임시 이동 (리디렉션)
  • 400 Bad Request: 요청 자체가 잘못됨
  • 401 Unauthorized: 로그인 필요함
  • 403 Forbidden: 권한 없음
  • 404 Not Found: 페이지 없음
  • 500 Internal Server Error: 서버 터짐
  • 503 Service Unavailable: 서버 과부하 or 점검 중

 

HTTP도 많이 들어봤을테지만 동시에 HTTPS도 많이 들어봤을 것이다.

그렇다면 둘의 차이는 뭘까?

 

HTTP와 HTTPS

    HTTP는 모든 데이터가 평문으로 전송되기 때문에 보안이 없는데, 그래서 등장한 것이 HTTPS이다.
    HTTPS는 HTTP에 SSL/TLS를 추가한 것이고, 이를 통해 암호화를 할 수 있다.

항목 HTTP HTTPS
보안 암호화 안됨 암호화 됨 (SSL/TLS 사용)
주소 http:// https://
데이터 노출 평문 전송 암호화 전송
브라우저 표시 "주의 요함" 표시 가능 자물쇠 아이콘 표시

중요한 차이점은 HTTP누구든 요청/응답을 볼 수 있고, HTTPSSSL/TLS를 통해 암호화되서 제 3자가 볼 수 없다.

 

 

반응형