1. HTTP (HyperText Transfer Protocol)
HTTP는 인터넷 상에서 데이터를 주고받기 위한 프로토콜로, 웹에서 가장 널리 사용되는 프로토콜이다
1.1 HTTP의 특징
1. 비연결성 (Stateless)
- 각 요청(request)과 응답(response)은 독립적으로 처리된다.
- 서버는 클라이언트의 이전 요청 상태를 기억하지 않는다.
- 상태를 유지하려면 쿠키,세션,JWT 등의 기술을 활용해야 한다.
2. 요청-응답 구조
- 클라이언트가 요청을 보내고 서버가 응답을 반환하는 방식
- 요청에는 데이터를 요청하거나, 서버에 데이터를 전송할 수 있다.
3. 텍스트 기반 프로토콜
- 요청과 응답 메시지는 사람이 읽을 수 있는 텍스트 형식
- 이는 디버깅과 테스트를 쉽게 해준다.
4. URI 사용
- HTTP는 URI (Uniform Resource Identifier)를 사용하여 리소스를 식별한다.
5. 확장 가능성
1.2 HTTP 메시지 구조
1.2.1 요청 메시지 (Request)
클라이언트가 서버에 데이터를 요청할 때 사용된다.
<요청 라인> (예: GET /index.html HTTP/1.1)
<헤더> (예: Host: example.com, User-Agent: ...)
<빈 줄>
<본문> (POST 요청 시 데이터 포함)
- 요청 메서드
- GET: 데이터를 요청
- POST: 데이터를 전송
- PUT: 리소스를 생성 또는 수정
- DELETE: 리소스를 삭제
- HEAD: 헤더만 요청
- OPTIONS: 지원 메서드 요청
- PATCH: 부분적으로 리소스 수정
1.2.2 응답 메시지 (Response)
서버가 클라이언트 요청에 대해 응답할 때 사용 된다.
<상태 라인> (예: HTTP/1.1 200 OK)
<헤더> (예: Content-Type: text/html, Content-Length: ...)
<빈 줄>
<본문> (HTML, JSON 등 응답 데이터)
- 상태 코드
- 1xx (정보): 요청 진행 중 (예: 100 Continue)
- 2xx (성공): 요청 성공 (예: 200 OK, 201 Created)
- 3xx (리다이렉션): 추가 작업 필요 (예: 301 Moved Permanetly, 302 Found)
- 4xx (클라이언트 오류): 요청 실패 (예: 400 Bad Request, 401 Unauthorized, 404 Not Found)
- 5xx (서버 오류): 서버 문제 (예: 500 Internal Server Error, 504 Service Unavailable)
1.3 HTTP의 주요 구성 요소
1. 클라이언트
- 요청을 생성하여 서버로 전송하는 역할.
- 예: 웹 브라우저, 모바일 앱, Postman
2. 서버
- 클라이언트의 요청을 처리하고 응답을 생성하는 역할.
- 예: Apache, Nginx, Node.js
3. 프록시
- 요청과 응답의 중간 단계에서 데이터를 필터링, 캐싱, 로깅 등.
1.4 HTTPS (HTTP Secure)
HTTP에 SSL/TLS 암호화를 추가하여 보안을 강화한 프로토콜이다.
- 데이터 암호화: 전송 중 데이터를 암호화
- 데이터 무결성: 데이터가 수정되지 않도록 보장
- 인증: 서버 또는 클라이언트의 신원 확인
2. HTTP 구조
HTTP는 웹 브라우저와 웹 서버 간에 데이터를 교환하기 위한 프로토콜이다.
요청과 응답으로 구성된 클라이언트-서버 모델을 기반으로 작동하며, 텍스트 기반의 프로토콜이다.
2.1 HTTP 구조의 개념
1. 요청-응답 모델:
- 클라이언트가 서버에 요청을 보내고, 서버는 이에 대한 응답을 반환한다.
2. 비연결성 (Stateless):
- HTTP는 요청 간의 상태를 저장하지 않는다. 각각의 요청과 응답은 독립적으로 처리된다.
3. 구조화된 메시지:
- HTTP는 요청 메시지와 응답 메시지를 특정한 형식으로 전송한다.
2.2 HTTP 메시지의 구조
HTTP 메시지는 크게 요청 메시지와 응답 메시지로 나뉜다.
1. 시작 라인 (Start Line):
- 요청 메시지: 요청의 목적과 메서드가 포함.
- 응답 메시지: 요청에 대한 상태 코드와 메시지가 포함
2. 헤더 (Headers):
- 메시지에 대한 추가 정보를 키-값 쌍으로 전달
3. 본문 (Body)
- 선택적으로 데이터(HTML, JSON 등)를 포함.
2.3 HTTP 요청 메시지 구조
요청 메시지는 클라이언트가 서버로 요청을 보낼 때 사용하는 형식
<요청 라인>
<헤더>
<빈 줄>
<본문>
[source,text]
2.3.1 요청 라인 (Request Line)
- 요청의 세부사항 (메서드, 경로, HTTP 버전)을 정의
- 형식: <메서드> <경로> <HTTP 버전> (예: GET /index.html HTTP/1.1)
2.3.2 헤더 (Headers)
- 요청에 대한 부가 정보 (클라이언트 정보, 인증 등)를 포함.
- 형식: <키>: <값> (예: Host: www.example.com, User-Agent:Mozilla/5.0, Accept: text/html)
2.3.3 본문 (Body)
- POST, PUT 메서드 등에서 클라이언트가 서버로 데이터를 전송할때 사용
- 예:
{
"username": "user123",
"password": "securepassword"
}
2.4 HTTP 응답 메시지 구조
응답 메시지는 서버가 클라이언트의 요청에 대해 반환하는 데이터이다.
<상태 라인>
<헤더>
<빈 줄>
<본문>
2.4.1 상태 라인 (Status Line)
- 요청의 처리 상태를 나타낸다.
- 형식: <HTTP 버전> <상태 코드> <상태 설명> (예: HTTP/1.1 200 OK)
2.4.2 헤더 (Headers)
- 응답에 대한 추가 정보(콘텐츠 유형, 길이 등)를 포함.
- 예:
Content-Type: text/html
Content-Length: 1234
2.4.3 본문 (Body)
- 요청된 리소스나 데이터(HTML, JSON, 이미지 등)를 포함.
- 예:
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Hello, World!</h1></body>
</html>
2.5 HTTP 메서드
HTTP 요청에서 사용하는 메서드는 요청의 목적을 정의 한다.
2.6 HTTP 상태 코드
HTTP 응답 메시지에서 사용되는 상태 코드는 요청의 처리 결과를 나타낸다.
2.6.1 1xx: 정보
- 요청이 처리 중임을 나타냄. 100 Continue: 요청 계속 진행 가능
2.6.2 2xx: 성공
- 요청이 성공적으로 처리됨. 200 OK: 요청 성공, 201 Created: 리소스 생성 성공
2.6.3 3xx: 리다이렉션
- 클라이언트가 요청을 완료하려면 추가 작업 필요. 301 Moved Permanently: 영구적으로 이동. 302 Found: 임시 이동
2.6.4 4xx: 클라이언트 오류
- 클라이언트의 요청에 문제가 있음. 400 Bad Request: 잘못된 요청. 401 Unauthorized: 인증 필요. 404 Not Found: 리소스를 찾을 수 없음.
2.6.5 5xx: 서버 오류
- 서버가 요청을 처리하는 중 문제 발생. 500 Internal Server Error: 서버 내부 오류. 503 Service Unavailable: 서버가 사용 불가능
'🚣활동 > NHN Academy' 카테고리의 다른 글
쿠키와 세션 (Cookie & Session) (0) | 2025.02.17 |
---|---|
HTTP method, HTTP status (0) | 2025.02.17 |
Hypertext, www, html, url (0) | 2025.02.17 |
Java Socket Communication (0) | 2025.02.10 |
UDP (User Datagram Protocol) (0) | 2025.02.10 |