서버(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)
데이터가 많거나 민감할 때 사용한다.
예시:
- 회원가입
- 로그인
- 게시글 작성
'웹 개발 기초' 카테고리의 다른 글
| [Git] 팀 프로젝트에서 Git 협업 흐름 정리 (develop, feature, merge 이해하기) (0) | 2026.07.11 |
|---|---|
| Git & Git Bash 정리 ✍️ (1) | 2026.05.29 |
| REST API (0) | 2026.05.28 |
| 웹개발 기초 정리 - HTML, CSS, JavaScript (0) | 2026.05.27 |
| 웹개발 기초 정리 - 프론트엔드와 백엔드, 그리고 웹의 동작 원리 (0) | 2026.05.26 |