HTTP
HTTP(HyperText Transfer Protocol)
클라이언트와 서버 간에 데이터를 주고 받는데 사용되는 표준 프로토콜
(L7 : Application Layer의 프로토콜)
(응용 프로그램과 관련된 통신을 다룬다는 것을 의미한다)
(사용자의 요구를 실제 네트워크로 전송하고, 결과를 반환하는 역할을 담당)
특징
- HTTP의 각 요청은 독립적으로 처리되된다
- 클라이언트 - 서버 모델을 따른다
(클라이언트의 요청에 서버가 응답) - 응답에 상태 코드가 포함되어
요청에 대한 상태를 클라이언트에게 전달 가능
자체적으로 보안 요소를 갖지는 않지만
HTTPS(Secure) 를 이용하면 보안 통신이 가능하다
HTTP 의 메서드 들
- GET : 리소스 요청을 위한 메서드
서버에서 데이터를 가져오기 위해 사용 -
POST : 서버로 데이터를 제출하는 메서드
주로 양식(form)을 제출하거나, 리소스를 생성하기 위해 사용
이 때, 데이터는 요청의 본문(body)에 포함GET의 요청은 데이터를 URL의 일부로 전송하기에 데이터가 유출되며 길이가 제한됨
POST의 요청은 데이터를 요청 본문(body)에 포함한다
(Post는 이에 따라 Content-Type, Content-Length 같은 요소가 헤더에 포함되어야 함) - PUT : 서버에 리소스를 저장하거나, 업데이트 하는 메서드
주로 리소스를 생성하거나, 기존 리소스를 수정하기 위해 사용
(요청된 리소스를 서버에 저장하거나 업데이트 한다) - DELETE : 서버에서 리소스를 삭제하는 메서드
주로 리소스 삭제를 위해 사용
(서버에서 삭제할 리소스를 지정한다) - PATCH : 리소스의 일부를 수정하기 위해 사용하는 메서드(PUT과 비슷)
‘리소스의 일부’만 수정할 때 사용 - HEAD : GET요청과 유사하지만, header 정보만을 요청하는 메서드
주로 리소스의 메타데이터나 헤더 데이터를 확인하기 위해 사용
(존재 유무 등)
특정 상황에서는 서버가 해당 메서드를 사용할 경우가 있을 수 있으나
기본적으로는 클라이언트->서버 의 방향으로 메서드를 사용한다
(서버 -> 서버 인 경우에 사용할 수 있으나
이 때는 데이터를 요청하는 쪽이 클라이언트 취급)
HTTP의 상태 코드
서버에서 반환하는 3가지 숫자이며
클라이언트에게 요청되는 처리 상태를 알려줌
총 5가지의 범주로 나뉜다
- 1xx(Information - 정보) : 요청을 받았고, 처리 중이라는 것을 나타냄
- 2xx(Success - 성공) : 요청이 성공적으로 수행됨을 알림
- 3xx(Redirection - 재전송 요청) : 클라이언트가 추가 동작을 취해야 함
- 4xx(Client Error - 클라이언트 오류) : 클라이언트 측의 잘못된 요청이나
부정확한 요청으로 인해 서버가 요청을 처리할 수 없음을 나타냄 - 5xx(Server Error - 서버 오류) : 서버 측의 오류로 인해 요청이 처리되지 않음을 나타냄
대표적인 HTTP 상태 코드는
200(OK) : 요청의 성공적인 처리
404(Not found) : 요청한 리소스가 서버에 없음을 나타냄
500(Internel server error) : 서버에서 처리되지 않은 오류 표시
HTTPS
HTTP의 보안 버전,
TLS(Transfort Layer Security 전송 계층 보안) 프로토콜이나
SSL(Secure Sockets Layer 보안 소켓 계층) 프로토콜 위에서 동작한다
(이들은 각각 L4에 위치한 프로토콜이다)
(정확히는 TCP의 위에 구현되는 프로토콜이며, TCP 프로토콜과 함께 사용된다)
정확히 말하자면,
HTTP와 HTTPS는 모두 TCP 프로토콜을 사용하나,
HTTPS는 TCP 프로토콜의 보안성을 강화한 TLS/SSL 프로토콜을 사용하여
보안을 강화한 것이다
댓글남기기