웹 개발 기초

서버와 HTTP 정리 - 백엔드 개발자의 핵심 개념

chungmani 2026. 5. 27. 17:40

 

서버(Server)란?

서버는 크게:

  • 하드웨어 서버
  • 소프트웨어 서버

두 가지로 나뉜다.

 

백엔드 개발자는 소프트웨어 서버를 만드는 사람이라고 볼 수 있다.

 


1. 하드웨어 서버

하드웨어 서버는 실제 물리적인 컴퓨터이다.

 

 

쉽게 말하면:

  • 고성능 컴퓨터 본체
  • 24시간 켜져 있는 컴퓨터

라고 이해하면 된다.

특징

  • 항상 켜져 있어야 함
  • 고정 IP 주소 사용
  • 인터넷 어디서든 접근 가능해야 함

 

1) 고정 IP란?

고정 IP는 서버의 고유 주소같은 개념이다.

 

택배 주소처럼:

  • 주소가 계속 바뀌면 찾기 어렵다.
  • 서버도 주소(IP)가 고정되어 있어야 사람들이 찾아올 수 있다.

2) 클라우드 서비스란?

클라우드 서비스는 서버를 빌려주는 서비스이다.

 

대표적으로:

  • Amazon Web Services
  • Naver Cloud

같은 회사들이 제공한다.

직접 서버 컴퓨터를 구매하지 않아도 인터넷으로 가상 서버를 빌려 사용할 수 있다.

 


2. 소프트웨어 서버

소프트웨어 서버는 컴퓨터 안에서 실행되는 프로그램이다.

 

 

클라이언트의 요청을 듣고:

  • 데이터 조회
  • 저장
  • 수정
  • 삭제

등의 작업을 수행한다.

 

1) 포트(Port)란?

서버에는 수많은 문(Port)이 존재한다.

쉽게 말하면 건물의 여러 출입문같은 개념이다.

 

대표 포트:

HTTP

Port 80 // 일반 웹통신

 

HTTPS

Port 443 // 암호화된 보안 통신

 

 

현재 웹에서는 HTTPS가 사실상 표준이라고 한다.

 

2) 서버의 역할

서버는 크게 2가지 역할을 한다.

 

2-1) 정적 파일 제공

정적 파일이란 요청해도 항상 같은 파일을 의미한다.

 

예시:

  • HTML
  • CSS
  • JavaScript 파일

즉, 누가 요청하든 같은 결과를 전달한다.

 

2-2) API 제공 (동적 데이터)

API는 요청에 따라 다른 데이터를 제공하는 기능이다.

 

예시:

  • 로그인
  • 게시글 조회
  • 상품 추가
  • 댓글 저장

 

요청 내용에 따라 결과가 달라지기 때문에 동적(Dynamic)이라고 부른다.

 

그리고 이것이 백엔드 개발자의 핵심 역할이라고 볼 수 있다.

 


3. 웹 서버와 애플리케이션 서버

1) 웹 서버

정적 파일 담당

 

예시:

  • HTML
  • CSS
  • 이미지 파일

2) 애플리케이션 서버

동적 처리 담당

 

예시:

  • 로그인
  • 데이터 저장
  • API 처리

4. HTTP란?

HTTP는 HyperText Transfer Protocol의 약자이다.

웹에서 데이터를 주고받는 규칙(프로토콜)이다.

HyperText란?

하이퍼링크를 통해 다른 페이지로 이동할 수 있는 텍스트를 의미한다.

예시:

네이버

 

Transfer Protocol이란?

데이터를 주고받기 위한 약속이다.

즉, 웹에서 요청과 응답을 어떻게 보낼지 정해놓은 규칙이라고 이해하면 된다.

 

1) HTTP 동작 원리

HTTP는 항상:

클라이언트 요청(Request)
→ 서버 응답(Response)

방식으로 동작한다.

 

2) HTTP 특징

2-1) 무상태성(Stateless)

서버는 사용자의 상태를 계속 기억하지 않는다.

즉, 요청이 끝나면 이전 정보를 잊어버린다.

 

왜냐하면 서버는:

  • 수많은 사용자
  • 수많은 요청

을 동시에 처리해야 하기 때문이다.

2-2) 비연결성(Connectionless)

요청과 응답이 끝나면 연결을 끊는다.

요청
→ 응답
→ 연결 종료

방식이다.

서버 자원을 효율적으로 사용하기 위한 특징이다.

3) HTTP 구조

HTTP는 크게 3부분으로 구성된다.

1. 시작줄(Start Line)
2. 헤더(Header)
3. 본문(Body)

 

3-1) 시작줄(Start Line)

헤더와 본문을 해석하기 전 가장 먼저 전달되는 정보이다.

Method

무슨 작업을 할지 지정한다.

GET - 조회(Read)

데이터를 보여주세요

POST - 추가(Create)

새 데이터를 만들어주세요

PUT / PATCH - 수정(Update)

DELETE - 삭제(Delete)

 

URL - 어디로 요청할지 지정하는 주소

예시:

/items

→ items API로 요청

 

3-2) Header

헤더는 요청의 상세 정보를 담는다.

예시:

Content-Type: application/json

→ 본문 데이터가 JSON 형식이라는 의미

JSON이란?

JSON은 데이터를 저장하고 전달하기 위한 텍스트 형식이다.

예시:

{
  "name": "새우깡",
  "price": 1500
}

현재 API 통신에서 거의 표준처럼 사용된다고 한다.

3-3) Body

본문(Body)은 실제 데이터가 담기는 공간이다.

예시:

{
  "name": "새우깡",
  "price": 1500
}

 

진짜 보내고 싶은 데이터가 들어간다.

 

4) fetch()와 HTTP 연결

JavaScript의 fetch() 함수는 서버와 통신할 때 사용된다.

예시:

fetch(API_URL, {
    method: "POST",
    headers: {
        "Content-Type": "application/json"
    },
    body: JSON.stringify(newItem)
});

여기서:

  • method → 요청 방식
  • headers → 데이터 정보
  • body → 실제 데이터

를 의미한다.


5) HTTP 응답(Response)

서버도 요청을 받으면 응답을 보낸다.

응답도:

상태줄
→ 헤더
→ 본문

구조를 가진다.

 

5-1) 상태 코드(Status Code)

상태 코드는 요청 결과를 숫자로 표현한 것이다.

 

코드 범위의미설명 : 

2xx Success (성공) 요청이 정상적으로 처리됨
4xx Client Error (클라이언트 오류) 사용자의 요청에 문제가 있음
5xx Server Error (서버 오류) 서버 내부 로직에서 문제가 발생함

 

상태 코드 의미설명 :

200 OK 요청 성공 요청한 데이터를 정상적으로 반환했을 때
201 Created 생성 성공 새로운 데이터 생성이 완료되었을 때
400 Bad Request 잘못된 요청 요청 형식이 잘못되었거나 데이터가 올바르지 않을 때
401 Unauthorized 인증 필요 로그인 또는 인증이 필요한 경우
404 Not Found 페이지 없음 요청한 URL 또는 API가 존재하지 않을 때
500 Internal Server Error 서버 오류 백엔드 서버 내부에서 에러가 발생했을 때

 

 

백엔드 개발자는 상태 코드의 앞자리만 보고도 대략 어떤 문제가 발생했는지 빠르게 파악할 수 있어야 한다고 한다.

5-2) response.json()

const data = await response.json();

 

이 코드는 JSON 텍스트를 JavaScript 객체로 변환하는 역할을 한다.

 

즉:

JSON 문자열
→ JS 객체 변환

과정이다.

 


5. HTTP 데이터 전송 방법

1) URL에 붙여 보내기 (GET)

예시:

/search?keyword=새우깡

 

여기서:

?keyword=새우깡

부분을 쿼리 스트링(Query String)이라고 부른다.

조회할 때 자주 사용한다.

2) Body에 담아 보내기 (POST, PUT, PATCH)

데이터가 많거나 민감할 때 사용한다.

예시:

  • 회원가입
  • 로그인
  • 게시글 작성