Development/Etc

[개발 Tip] 무상태 프로토콜이란 무엇인가?

bbubbush 2020. 5. 30. 19:33

들어가며

'무상태 프로토콜은 무엇입니까??'

 

올해 TOPCIT 문제 중 하나였다.

듣기는 했는데 어떻게 설명해야 할지 몰라 답을 비우고 나오게 되었다. 시간이 흘러 최근에 네트워크 기초에 대해 공부하며 알게된 지식을 남기기 위해 포스팅을 하게 되었다.

 

무상태 프로토콜이란?

HTTP는 기본적으로 무상태 프로토콜을 기반으로 한다. 프로토콜은 '규약', '약속'인데 무상태는 그럼 무엇인가?

 

통신은 기본적으로 클라이언트와 서버 사이의 의사소통이다. 서로가 통신을 할 때 상태정보, 세션 등을 요구하지 않는 것이 무상태의 정의가 된다.

이는 서버 디자인을 단순하게 만들어 주며, 리소스의 소비를 억제해준다. 다만 인증정보에 대해 매 요청마다 인증을 해야하는 불편이 발생할 수 있다.

 

무상태 프로토콜의 이런 단점은 쿠키를 통해 극복한다. HTTP 통신을 할 때, 최초에 서버가 response를 보낼 때 쿠키정보를 클라이언트에게 전달하고, 클라이언트는 서버와 다시 통신할 때 쿠키정보를 헤더에 담아 전달한다. 서버는 이를 통해 클라이언트의 정보를 확인하게 된다.

 

마치며

무상태 프로토콜은 별도로 상태값을 관리하지 않아 리소스 입장에서 유리하지만, 이전 상태값을 기억못하므로 발생하는 인증 등의 단점이 발생한다. 이를 쿠키로 극복하는 것이 무상태 프로토콜이다.