HTTP란 무엇인가?
웹 브라우저 열고 인터넷에 정보를 검색하면, 주로 http:// 또는 https://로 시작하는 웹 주소를 볼 수 있다.
웹 서버와 브라우저 간에 데이터를 전송하는 데 사용되는 특별한 프로토콜인 HTTP은, 텍스트 기반 통신 규약으로 인터넷에서 주고받을 수 있는 프로토콜이다.
클라이언트가 서버에 요청을 보내면, 서버는 요청된 정보를 제공하거나 작업을 수행한 후 응답을 보냅니다. 이러한 요청과 응답은 텍스트 기반으로 이루어져 있어 인간이 이해하기 쉽고, 컴퓨터 간에도 효율적으로 데이터를 교환할 수 있다. 또한, 이러한 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰서 개발함으로써 서로 정보를 교환할 수 있게 되었다.
HTTP의 동작 방식
사용자가 브라우저를 통해서 어떤 서비스를 이용하려고 할때, url이나 다른 어떤 방법을 이용하여 요청을 보내면, 서버에서 이 요청에 맞는 결과를 찾아서 사용자에게 응답하는 형태로 동작한다.
클라이언트 요청
사용자가 웹 브라우저를 통해 웹페이지를 요청한다. 이때 클라이언트는 서버에게 요청 메시지를 보낸다.
서버응답
서버는 클라이언트의 요청을 받고, 요청된 웹 페이지나 파일등을 포함한 응답 메시지를 생성하여 클라이언트에게 전송한다.
연결 해제
클라이언트가 응답을 받은후, 연결이 해제된다. HTTP는 기본적으로 연결 상태를 유지하지 않는 프로토콜이기 때문에 각각의 요청은 독립적으로 처리된다.
HTTP의 특징
- HTTP 메시지는 HTTP서버와 HTTP클라이언트에 의해서 해석이 된다.
- TCP/IP를 이용하는 응용 프로토콜이다.
- HTTP는 연결 상태를 유지하지 않는 비 연결성 프로토콜이다.
- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청 응답 방식으로 작동한다.
1. 무상태성
각각의 요청은 독립적으로 처리되며, 이전 요청에 대한 정보를 유지하지 않는다. 이는 서버에 부담을 덜어주고, 빠른 응답이 가능하게 한다.
2. 단순함과 확장성
텍스트 기반이기 때문에 간단하고, 쉽게 읽고 이해할 수 있다. 또한, 다양한 환경과 상황에서 사용될 수 있도록 설계되었다.
3. 요청/응답 모델
클라이언트가 요청을 보내면, 서버는 응답을 반환하는 간단한 모델을 사용한다. 이를 통해 웹 페이지의 빠른 로딩과 데이터 전송이 가능하다.
4. 확장 가능한 프로토콜
HTTP는 계속 발전하고 있으며, HTTP/1.1, HTTP/2, HTTP/3과 같은 새로운 버전이 나와 기능과 성능을 향상 시키고 있다.
요청(Request)
HTTP요청은 클라이언트가 웹 서버에게 특정 동작을 수행하도록 요청하는 방법을 나타낸다.
요청의 종류
GET
웹 서버로부터 정보를 요청할 때 사용된다.
주로 웹 페이지나 이미지, 스크립트와 같은 정적인 컨텐츠를 가지고 오기 위해서 사용된다. GET요청은 URL에 매개변수를 붙여 데이터를 전송한다.
POST
서버로 데이터를 제출할 때 사용된다.
주로 사용자가 폼을 제출할 때, 사용자가 입력한 데이터를 서버로 보낼 때 POST 요청을 사용한다. POST요청은 HTTP 요청 본문(body)에 데이터를 담아 전송한다.
PUT
서버에게 새로운 리소스를 생성하거나 기존의 리소스를 업데이트할 때 사용된다.
DELETE
서버의 특정 리소스를 삭제할 때 사용된다.
PATCH
리소스의 일부를 수정할 때 사용된다.
PATCH는 리소스의 일부만 수정하고, PUT의 경우 리소스 전체를 업데이트한다.
HEAD
GET요청과 유사하지만, 서버는 응답을 본문으로 보내지 않고 응답 헤더만 보낸다.
주로 리소스가 변경되었는지 여부를 확인하기 위해 사용된다.
OPTIONS
서버가 특정 리소스에 대해 어떤 HTTP메서드가 허용되는지 요청할 때 사용된다.
서버는 허용된 메서드를 응답으로 보낸다.
CONNECT
목적지 서버로 네트워크 연결을 설정할 때 사용된다. 주로 프록시 서버와 터널링에 사용된다.
TRACE
클라이언트 요청에 서버에 도달했을 때 그 요청이 어떻게 변화되어 서버에 도달하는지 확인하기 위해 사용된다.
주로 디버깅 목적으로 사용된다.
응답(Response)
클라이언트가 보낸 요청에 따라 서버가 그에 맞는 답변을 클라이언트에 보내는 것이다.
응답의 구조
1. Status Code (상태코드)
2. Response Header (응답 헤더)
3. Response Body (응답 본문)
상태코드
서버의 응답 상태를 나타내는 3자리 숫자이다. 각 상태 코드는 특정한 의미를 가지고 있다.
- 1xx (Informational) - 요청이 수신되었고 처리 중이다.
- 2xx(Success) - 요청이 성공적으로 수행되었다.
- 3xx (Redirection) - 요청을 완료하려면 추가적인 동작이 필요하다.
- 4xx (Client Errors) - 클라이언트 요청이 잘못되었거나. 서버가 요청을 이해할 수 없는 경우
- 5xx (Server Errors) - 서버가 유효한 요청에 대한 처리를 할 수 없는 상태
응답 헤더
서버의 응답에 대한 여러 정보를 포함한다. - 응답의 길이, 데이터 타입, 서버 정보, 쿠기 등
응답 본문
실제 응답 데이터를 포함하는 부분이다 - HTML, JSON, 이미지, 텍스트 등
'Theory' 카테고리의 다른 글
프로그램 명명 규칙 - Naming (0) | 2024.03.15 |
---|---|
호스팅이란? (0) | 2023.11.26 |
웹 브라우저와 동작 원리 (1) | 2023.11.21 |
운영체제(OS) 메모리 관리 (1) | 2023.11.19 |
DNS 서버의 종류 (1) | 2023.11.11 |