HTTP(HyperText Transfer Protocol)
HTTP는 클라이언트와 서버가 서로 데이터를 주고받기 위해 사용되는 통신 규약이다.
클라이언트와 서버 간의 통신을 담당하며, 웹 브라우저와 웹 서버 간의 데이터 전송을 위해 주로 사용된다.
HTTP 특징
비연결성(Stateless)
• HTTP는 비연결성 프로토콜이다. 즉, 클라이언트와 서버 간의 각 요청은 독립적이며, 이전 요청과 상태를 공유하지 않는다. 예를 들어, 사용자가 한 페이지에서 다른 페이지로 이동할 때, 이전 페이지의 상태는 유지되지 않는다. 이로 인해 서버는 클라이언트의 각 요청을 별도로 처리한다.
무상태성(Stateless)
• HTTP는 무상태 프로토콜로, 각 요청 간의 상태를 유지하지 않는다. 즉, 각 HTTP 요청은 독립적이며, 서버는 이전 요청의 정보를 기억하지 않는다. 이를 해결하기 위해 쿠키나 세션과 같은 메커니즘이 사용된다.
표준 포트
• HTTP는 기본적으로 80번 포트를 사용한다 HTTPS(보안 HTTP)의 경우, 기본적으로 443번 포트를 사용한다.
HTTP 메시지 구조
• HTTP는 요청(Request)와 응답(Response)으로 이루어진 메시지를 사용한다.
• 요청 메시지: 클라이언트가 서버에 보내는 메시지로, 주로 메서드(GET, POST 등), URL, HTTP 버전, 헤더, 바디로 구성되어 있다.
• 응답 메시지: 서버가 클라이언트에 보내는 메시지로, 주로 상태 코드(예: 200, 404), HTTP 버전, 헤더, 바디로 구성된다.
Request-Response 모델
HTTP는 클라이언트가 요청을 보내고 서버가 응답을 반환하는 형태의 모델을 따른다. 클라이언트는 요청 메서드(GET, POST, PUT, DELETE 등)를 사용하여 원하는 동작을 서버에 전달하고, 서버는 상태 코드와 데이터를 포함한 응답을 반환한다.
URI(Uniform Resource Identifier)
HTTP는 리소스를 식별하기 위해 URI를 사용한다. 클라이언트는 URI를 통해 서버에 요청할 리소스를 지정한다. URI는 URL(Uniform Resource Locator)이라는 특정한 형태의 식별자로 표현된다.
HTTP 요청 메서드
HTTP는 다양한 요청 메서드를 통해 클라이언트가 서버에 수행할 작업을 정의고 있으며, 주요 메서드는 아래와 같다.
1. GET: 서버에서 리소스를 요청하고 주로 데이터를 가져오는 데 사용된다.
2. POST: 서버에 데이터를 전송하여 리소스를 생성하거나 업데이트 한다.
3. PUT: 서버에 데이터를 보내 특정 리소스를 업데이트할 때 사용한다.
4. DELETE: 서버에서 특정 리소스를 삭제한다
5. HEAD: GET 요청과 동일하지만, 응답에 본문을 포함하지 않으며 리소스의 메타데이터만 요청할 때 사용한다.
6. OPTIONS: 서버에서 사용할 수 있는 HTTP 메서드를 확인한다.
7. PATCH: 리소스의 부분적인 업데이트를 수행한다.
HTTP 상태 코드
HTTP 상태 코드는 클라이언트의 요청에 대한 서버의 응답 상태를 나타내며, 주요 상태 코드는 아래와 같다.
1. 1xx (정보): 요청을 받았으며 처리가 진행 중.
2. 2xx (성공): 요청이 성공적으로 처리된 경우
• 200 OK: 요청이 성공적으로 처리됨.
• 201 Created: 요청이 성공적으로 처리되었으며, 리소스가 생성됨.
3. 3xx (리다이렉션): 클라이언트는 요청을 완료하기 위해 추가적인 작업이 필요함.
• 301 Moved Permanently: 요청된 리소스가 영구적으로 이동됨.
• 302 Found: 요청된 리소스가 임시적으로 다른 위치에 있는 경우.
4. 4xx (클라이언트 오류): 클라이언트의 요청에 오류가 있는 경우
• 400 Bad Request: 잘못된 요청.
• 401 Unauthorized: 인증 필요.
• 403 Forbidden: 요청된 리소스에 접근할 권한이 없음.
• 404 Not Found: 요청된 리소스를 찾을 수 없음.
5. 5xx (서버 오류): 서버가 요청을 처리하는 도중 오류가 발생.
• 500 Internal Server Error: 서버 내부 오류.
• 503 Service Unavailable: 서버가 현재 요청을 처리할 수 없음.
HTTP 버전
1. HTTP/0.9: 초기 버전으로, 단순 텍스트만 데이터로 전송함.
2. HTTP/1.0: 첫 번째 공식 버전으로, 메타데이터를 포함한 메시지 헤더 도입.
3. HTTP/1.1: 가장 널리 사용되는 버전으로, 연결 지속(Keep-Alive) 및 파이프라이닝 기능 추가.
4. HTTP/2: 성능 개선을 위해 멀티플렉싱, 헤더 압축, 서버 푸시 등의 기능이 추가됨,.
5. HTTP/3: HTTP/2의 문제점을 해결하고, QUIC 프로토콜을 사용하여 성능을 크게 개선한 최신 버전.
HTTPS (HTTP Secure)
HTTPS는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터를 암호화하여 전송하는 방식이다. 이를 통해 데이터를 안전하게 전송할 수 있으며, 특히 금융 거래나 개인 정보가 포함된 통신에서 널리 사용된다.
'개발 > 프론트엔드 지식' 카테고리의 다른 글
프론트엔드 성능 최적화 (1) | 2024.03.07 |
---|