ragdo11 2022. 10. 31. 18:38

HTTP, Hypertext transfer protocol은 웹에서 웹페이지를 가져오기 위해 클라이언트-서버 프로그램이 어떻게 메시지를 주고 받을지 정의하는데 사용한다.

HTTP 서버는 80번을 사용하고 클라이언트는 임시 포트 번호를 사용한다.

웹에서 중요한 정보가 사용되기 시작하면서 HTTP가 보안을 제공하지 않는 것이 문제가 되었다.

이를 해결하기 위해 Network Layer의 IPSec이나 Transport의 SSL/TLS 등을 사용하면서 보안을 제공하기 시작하였다.

특히 TLS를 사용한 HTTP를 현재 대부분 사용하는 HTTPS ( HTTP Secure ) 라고 한다. 포트 번호는 HTTP의 80번이 아닌 443번을 사용한다.

 

HTTP는 TCP 서비스를 이용하지만 HTTP 자체는 stateless, connectionless 프로토콜이기 때문에 클라이언트의 정보를 따로 저장하지 않는다. ( 쿠키와 세션으로 단점 해소 )

 

HTTP 동작이 이루어지는 과정을 보자면 클라이언트가 Request 메시지를 보내며 transaction을 초기화한다. 그 후 서버는 Response를 보내며 대답한다.

이 Request 메시지의 첫 줄은 request line으로 불리는데 이 라인에 문자 구분 기호에 의해 분리된 3개의 필드가 존재한다.

3개의 필드는 각각 메소드, URL, 버전이다. 메소드 필드를 알아볼껀데 이 메소드 필드는 request type을 정의한다.

 

HTTP Method

  • GET

GET 방식은 가장 일반적인 HTTP request 형태로 웹 브라우저에 요청 데이터에 대한 인수를 URL을 통해 전송한다.

데이터가 주소 입력란에 표시되기 때문에 보안이 없다시피한 매우 취약한 방식이다. 아이디와 패스워드가 인수로 저장되어 전달되는 경우도 발생한다.

  • POST

POST 방식은 URL에 요청 데이터를 전달하지 않고 HTTP의 헤더 영역이 아닌 body 영역에 소켓을 이용하여 데이터를 전송하기 때문에 데이터가 URL을 통해 노출되지 않는다. 그나마 GET 방식에 비해 보안성은 갖추고 있다.