Computer Science/NetWork

HTTP란?

HTTP(HyperText Transfer Protocol)는 인터넷에서 웹 페이지를 전송하는 데 사용되는 프로토콜입니다. 
이번 포스팅에서는 HTTP의 개념과 동작 방식, 그리고 HTTP 메서드와 상태 코드 등에 대해 알아보겠습니다.

HTTP의 개념과 동작 방식

HTTP는 클라이언트-서버 모델을 기반으로 합니다.

 클라이언트는 서버에 요청을 보내고, 서버는 요청을 처리하고 클라이언트에 응답을 보냅니다.

 HTTP 요청과 응답은 일반적으로 TCP/IP 프로토콜을 기반으로 하며,

 HTTP 요청과 응답은 일반적으로 TCP/IP 포트 80을 사용합니다.

 최근에는 HTTPS라는 보안 프로토콜이 발전되어서, HTTP 요청과 응답을 암호화하여 전송하는 방식으로 보안성을 향상시켰습니다.

HTTP는 다양한 메서드를 제공하여 클라이언트와 서버 간의 통신을 가능하게 합니다.

 가장 일반적인 HTTP 메서드는 GET과 POST입니다.

 GET 메서드는 서버에서 데이터를 가져오는 데 사용되며,

 POST 메서드는 클라이언트에서 서버로 데이터를 전송하는 데 사용됩니다. 또한, PUT, DELETE, HEAD 등의 메서드도 제공됩니다.

 

HTTP의 구성요소


HTTP 요청은 요청 라인, 헤더, 메시지 본문으로 구성됩니다.

요청 라인은 요청 메서드, 요청 URI, HTTP 버전으로 이루어져 있습니다.

헤더는 요청에 대한 추가 정보를 담고 있으며, 메시지 본문은 요청 메시지에 포함된 데이터를 담고 있습니다.

HTTP 응답은 상태 라인, 헤더, 메시지 본문으로 구성됩니다.

상태 라인은 상태 코드, 상태 메시지, HTTP 버전으로 이루어져 있습니다.

헤더는 응답에 대한 추가 정보를 담고 있으며, 메시지 본문은 응답 메시지에 포함된 데이터를 담고 있습니다.

 

HTTP 메서드

 

HTTP 메소드란, 클라이언트가 서버에 요청을 보낼 때 사용하는 명령어입니다.

 HTTP/1.1에서는 총 8가지 메소드를 지원합니다.

GET - 서버로부터 정보를 요청할 때 사용하는 메소드입니다.

이 메소드를 사용하면 서버로부터 데이터를 가져올 수 있습니다.

POST - 서버에 정보를 전송할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트가 서버에 데이터를 전송할 수 있습니다.

PUT - 서버에 새로운 자원을 생성하거나, 기존 자원을 수정할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트가 서버에 새로운 데이터를 추가하거나 수정할 수 있습니다.

DELETE - 서버에 있는 자원을 삭제할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트가 서버에 있는 데이터를 삭제할 수 있습니다.

HEAD - GET 메소드와 유사하지만, 서버에서 응답으로 본문(body)을 제외한 헤더(header) 정보만을 전송합니다.

이 메소드를 사용하면 클라이언트는 서버로부터 헤더 정보를 받아올 수 있습니다.

OPTIONS - 서버에서 지원되는 메소드를 확인할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트는 서버에서 지원되는 메소드 목록을 확인할 수 있습니다.

TRACE - 클라이언트가 서버로 보낸 요청 메시지가 서버에서 어떻게 처리되는지 확인할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트는 서버로부터 자신이 보낸 요청 메시지를 그대로 받아올 수 있습니다.

CONNECT - 클라이언트가 프록시 서버와 터널링(tunneling)을 할 때 사용하는 메소드입니다.

이 메소드를 사용하면 클라이언트는 프록시 서버를 통해 다른 서버와 안전하게 통신할 수 있습니다.


HTTP 상태 코드

HTTP 상태 코드는 서버에서 클라이언트에 응답할 때, 해당 요청이 성공적으로 처리되었는지, 실패하였는지, 어떤 문제가 발생하였는지 등의 정보를 담고 있는 세 자리 숫자로 이루어진 코드입니다. 

 


HTTP 상태 코드의 종류


HTTP 상태 코드는 1xx ~ 5xx 까지 총 5가지 범주로 나뉘어져 있습니다.

1xx (Informational): 요청이 수신되었으며 처리 중임을 나타냅니다.
2xx (Successful): 요청이 성공적으로 처리되었음을 나타냅니다.
3xx (Redirection): 요청을 완료하려면 추가 작업이 필요함을 나타냅니다.
4xx (Client Error): 요청에 문제가 있어서 서버가 요청을 처리할 수 없음을 나타냅니다.
5xx (Server Error): 서버에서 요청을 처리하는 동안 문제가 발생하였음을 나타냅니다.

 

2xx (Successful)
2xx 범주의 상태 코드는 요청이 성공적으로 처리되었음을 나타냅니다. 주요한 상태 코드는 다음과 같습니다.

200 (OK): 요청이 성공적으로 처리되었으며, 클라이언트에게 요청한 정보가 제공됩니다.
201 (Created): 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었습니다.
204 (No Content): 요청이 성공적으로 처리되었으며, 응답 본문에 정보가 없습니다.

 

3xx (Redirection)
3xx 범주의 상태 코드는 요청을 완료하려면 추가 작업이 필요함을 나타냅니다. 주요한 상태 코드는 다음과 같습니다.

301 (Moved Permanently): 요청한 리소스가 새로운 위치로 이동되었습니다.
302 (Found): 요청한 리소스가 일시적으로 다른 위치에서 찾아졌습니다.
304 (Not Modified): 클라이언트의 캐시 버전이 최신 상태임을 나타냅니다.

4xx (Client Error) 클라이언트 측에서 발생한 오류를 나타냅니다.

클라이언트가 전송한 요청에 문제가 있을 경우 발생하며, 잘못된 요청 형식, 유효하지 않은 매개변수, 인증 오류 등의 경우가 있습니다. 주요한 상태 코드는 다음과 같습니다.

401 Unauthorized
401 Unauthorized 상태 코드는 클라이언트가 인증되지 않은 상태에서 보호된 리소스에 액세스하려고 할 때 반환됩니다. 클라이언트는 요청에 대한 인증 정보를 제공해야 합니다.

403 Forbidden
403 Forbidden 상태 코드는 클라이언트가 요청한 리소스에 대한 액세스 권한이 없을 때 반환됩니다. 일반적으로 서버는 요청자의 ID나 액세스 권한을 확인한 후에 이러한 상태 코드를 반환합니다.

404 Not Found
404 Not Found 상태 코드는 클라이언트가 요청한 리소스를 찾을 수 없을 때 반환됩니다. 이러한 상태 코드는 클라이언트가 존재하지 않는 페이지를 요청한 경우나 잘못된 URL을 입력한 경우 등에 발생합니다.


5xx (Server Error) 서버 측에서 발생한 오류를 나타냅니다.

서버가 요청을 처리할 수 없는 오류가 발생했을 때 반환됩니다.

이러한 오류는 일반적으로 서버 측 코드나 데이터베이스 연결 오류 등의 경우 발생합니다. 주요한 상태 코드는 다음과 같습니다.

 

502 Bad Gateway
클라이언트의 요청을 처리하려고 했지만 서버가 다른 서버로부터 잘못된 응답을 수신했을 때 반환됩니다.

이러한 오류는 대개 게이트웨이나 프록시 서버 구성 문제로 인해 발생합니다.

503 Service Unavailable
웹 서버가 제대로 작동하지만 현재 요청을 처리할 수 없음을 나타내는 HTTP 응답 상태 코드입니다.

일반적인 오류 메시지일 뿐이므로 문제의 정확한 원인을 찾아내기 어렵습니다.

 

 

 

 

 


References by

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org

 

'Computer Science > NetWork' 카테고리의 다른 글

호스팅이란?  (0) 2021.03.11
도메인이란?  (0) 2021.03.11
DNS란?  (0) 2021.03.11