웹개발/SpringBoot

HTTP 통신

bergerac 2025. 5. 17. 09:11

1. 인터넷과 HTTP의 기원

인터넷의 시초는 **1960~70년대 미국 국방부에서 개발한 아르파넷(ARPANET)**이다. 이는 군사적 목적과 컴퓨터 간 통신을 위해 고안되었고, 결국 우리가 오늘날 사용하는 인터넷의 뿌리가 되었다.

이후, 인터넷에서 정보를 주고받기 위해 어떤 규칙이 필요해졌고, 1989년 팀 버너스 리에 의해 **HTTP(HyperText Transfer Protocol)**라는 규약이 등장했다. 이 프로토콜은 단순한 글자 전달이 아닌, 문서 간의 연결과 전송을 정의하는 약속이었다.


2. HTTP 통신이란?

**HTTP(HyperText Transfer Protocol)**는 하이퍼텍스트(링크를 통해 다른 문서로 이동 가능한 문서)를 서버와 클라이언트 사이에서 주고받는 규칙이다.

  • 클라이언트(Client): 요청을 보내는 쪽 (브라우저, 모바일 앱 등)
  • 서버(Server): 요청을 받아 처리하고 응답하는 쪽 (Spring Boot 앱이 동작하는 곳)

이 둘 사이에서 일어나는 모든 흐름이 HTTP 통신이다.


3. 요청과 응답의 구성

HTTP 통신은 크게 **요청(Request)**과 **응답(Response)**으로 나뉜다.

📥 요청(Request)

클라이언트 → 서버로 보내는 메시지

  • URL: 어디에 요청을 보낼지 (주소)
  • Method: 어떤 요청인지 (GET, POST 등)
  • Header: 브라우저 종류, 인증 정보 등 부가 정보
  • Body: 전송할 데이터 (주로 POST에서 사용)

📤 응답(Response)

서버 → 클라이언트로 돌아오는 메시지

  • Status Code: 요청 처리 결과 (200, 404 등)
  • Header: 응답의 부가 정보 (데이터 형식 등)
  • Body: 실제 데이터 (HTML, JSON 등)

4. 인터넷 기본 개념 (HTTP를 이해하는 데 필수)

  • IP 주소: 각 컴퓨터의 고유한 주소 (ex. 192.168.0.1)
  • DNS: 도메인 이름을 IP로 변환 (ex. google.com → 172.217.161.78)
  • PORT: 하나의 IP에서 여러 앱을 구분하는 단위 (ex. 8080)
  • localhost = 127.0.0.1: 자기 자신의 IP 주소
  • HTTP 기본 포트: 80
  • HTTPS 기본 포트: 443
  • Tomcat 기본 포트: 8080 (Spring Boot 내장 서버)

5. HTTP 메서드(Method)

요청이 무엇을 하려는지를 정의하는 키워드. 대표적인 것들은 다음과 같다:

  • GET: 데이터 조회 (ex. 게시글 목록 보기)
  • POST: 데이터 생성 (ex. 회원 가입)
  • PUT: 데이터 수정 (ex. 글 수정)
  • DELETE: 데이터 삭제 (ex. 글 삭제)

✏ 예시 (게시판 URL)

plaintext
복사편집
GET /board → 게시글 전체 조회 POST /board → 새 게시글 등록 PUT /board/1 → 1번 글 수정 DELETE /board/1 → 1번 글 삭제

6. HTTP 상태 코드(Status Code)

클라이언트의 요청에 대해 서버가 어떻게 응답했는지를 숫자로 알려준다. 가장 자주 쓰는 코드만 정리해 보면:

  • 200 OK: 정상 처리 완료
  • 201 Created: 생성 완료
  • 400 Bad Request: 잘못된 요청 (ex. 주소 오류)
  • 401 Unauthorized: 인증 필요 (로그인 안 됨)
  • 403 Forbidden: 권한 없음 (접근 제한)
  • 404 Not Found: 요청한 자원 없음
  • 500 Internal Server Error: 서버 내부 에러

 

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

Jpa Repository  (0) 2025.05.22
ORM (Object-Relational Mapping)  (4) 2025.05.21
SpringBoot 활용  (0) 2025.05.20
IoC(제어의 역전),DI(의존성 주입)  (1) 2025.05.19
서블릿(Servlet)vs 스프링부트(SpringBoot)  (1) 2025.05.18