✅ HTTP 란? (HyperText Transfer Protocol)
- 다양한 형태(TEXT,IMAGE,FILE,HTML,JSON)가 World Wide Web(WWW,웹) 상에서 데이터를 주고받기 위한 프로토콜이다.
- 서버간의 요청과 응답을 통해 작동한다.
- TCP/IP 통신 프로토콜 기반으로 동작한다.
- stateless 프로토콜 : 데이터를 주고받기 위해 행해지는 각각의 데이터들이 서로 독립적으로 관리된다.
- 단방향성이다.
💡 HTTP 는 클라이언트 to 서버 요청 뿐아니라, 서버 to 클라이언트 , 서버 to 서버간의 데이터 통신에도 사용된다.
♐ HTTP 동작 순서

- 클라이언트는 Request(요청)을 보내고 , 응답을 기다린다.
- 서버는 요청에 대한 처리를 수행 후 결과를 Response(응답) 한다.
♐ HTTP 특징
💡 HTTP 는 인터넷 상에서 불특정 다수의 통신 환경을 기반으로 설계되었다.
1.클라이언트와 서버 구조

- 클라이언트, 서버 각자 독립적으로 발전이 가능하다.
2.무상태(Stateless)
- 서버는 클라이언트의 상태를 보존하지 않는다.
- 장점 - 수평 확장성이 높고,갑자기 요청량이 증가해도 서버 증설이 쉽다.
- 단점 - 클라이언트가 데이터를 추가적으로 전송해야한다.
3.비연결(Connectionless)
- 연결을 유지하지 않는다. 즉,서버 자원을 효율적으로 사용할 수 있지만, 추가 요청을 할려면 새로 연결을 해야하고 모든 데이터를 다시 다운해야한다.-> 캐시 브라우저 캐싱으로 해결가능
✅ HTTP Message 구조
💡 HTTP 는 요청,응답 메세지 두가지 종류가 있고 구조가 각각 다르다.

♐ HTTP 요청 메세지
1.Start Line
✔ HTTP Method
- 요청의 의도를 가진 GET,POST,PUT,PATCH,DELETE 가 존재한다.
- Create - POST
Read - GET
Update - PUT(전체), PATCH(일부)
Delete - DELETE
✔ path
- HTTP Request 가 전송되는 대상 ,절대 경로
✔ HTTP Version
- HTTP Version 을 나타낸다.
2.Header
- field-name: OWS field-value OWS (OWS : 띄어쓰기 허용)` 구조를 가진다.
- field-name`은 대소문자 구분을 하지 않는다.
- 임의의 Header를 추가할 수 있다. (단, 서버가 값을 알고 있어야 함)
- 요청의 추가 정보들을 가지고 있다.
3.Empty Line
- 공백 한줄
- 필수 값
4.Message Body
- 실제로 전송하는 데이터

♐ HTTP 응답 메세지
1. Start Line
- HTTP Version
- Status Code - 요청이 성공했는지, 실패했는지 나타내는 코드
- Status Text - 코드와 함께 전달될 메세지
2. Header
- Response에서만 사용되는 Header 값들이 따로 존재한다.
3. Empty Line
- 공백 한줄, 필수값
4. Message Body
- 실제 전송하는 데이터가 담겨 있는 부분
- 만약 전송할 데이터가 없다면, Body가 공백으로 존재한다.
♐ HTTP Status Code
1xx (정보)
2xx (성공)
더보기
- 대표 상태코드
- 200 OK
- 요청 성공
- 201 Created
- 새로운 리소스 생성
- 202 Accepted
- 요청이 수신되었으나 처리가 완료되지 않음
- 주로 Batch 처리에서 사용된다.
- 204 No Content
- 요청은 성공했지만, 응답 데이터가 없음
- 200 OK
3xx (리다이렉션)
4xx (클라이언트 에러)
더보기
- 대표 상태코드
- 400 Bad Request
- 클라이언트가 HTTP 요청 내용을 수정 후 보내야 한다.
- ex) API 스펙과 일치하지 않을 때, 숫자를 문자로, 문자를 숫자로 등
- 401 Unauthorized
- 클라이언트가 리소스에 대한 **인증(Authentication)**이 필요하다.
- 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명한다.
- 403 Forbidden
- 서버가 요청을 받았지만 승인 거부
- 주로 인가(Authorization) 관련문제
- 404 Not Found
- 요청한 리소스가 서버에 없다.
- 이를 이용하여 리소스를 숨겨놓기도 한다. 있지만 없는척 가능
- 400 Bad Request
5xx (서버 에러)
더보기
- 대표 상태코드
- 500 Internal Server Error
- 대부분 500으로 처리한다.
- 503 Service Unavailable
- 서비스 이용 불가
- Retry-After Header를 사용하면 얼마뒤에 복구되는지 응답할 수 있다.
- 500 Internal Server Error
다음은 HTTP Header 에 대해 알아보자
'Spring' 카테고리의 다른 글
[Spring] Controller 와 RestContoller 의 차이 (0) | 2025.04.10 |
---|---|
[Spring] MVC 패턴 (0) | 2025.04.07 |
[Spring]HTTP 란? (2) (0) | 2025.03.31 |
[Spring]DNS,URI,URL이란? (0) | 2025.03.19 |
[Spring] 네트워크에 대해 알아보자 (0) | 2025.03.19 |