네트워크 타임아웃(Timeout)이 필요한 이유

타임아웃이란?

네트워크에서 타임아웃(Timeout)은 장치나 프로그램이 연결을 중단하기 전까지의 응답 시간을 의미합니다. 두 장치 간 네트워크 통신 시 커넥션(연결)이 발생하면 데이터를 주고받습니다. 이때 어떠한 이유로 데이터가 손실되거나 전달이 지연되는 등의 이유로 대기가 발생할 수 있습니다. 대기가 무한정 이어지는 것을 막기 위해 정해진 시간이 지나면 타임아웃에 의해 연결이 해제됩니다.

 

네트워크에서 타임아웃이라고 부를 수 있는 종류는 커넥션 타임아웃, 세션 타임아웃, 서버 타임아웃, DNS 타임아웃 등 여러 가지입니다. 명칭이 중요한 건 아니고, 타임아웃이라는 역할의 본질은 동일합니다.

타임아웃이 필요한 이유

1. 지속적인 연결 시도 방지

장치와 장치가 연결될 때 문제가 있어서 응답 대기 시간이 길어질 수 있습니다. 이때 타임아웃에 의해 연결 해제 및 오류를 알려줌으로써 문제 상황을 인지시킬 수 있습니다.

 

예를 들어, 사용자가 웹 사이트에 접속하려고 했으나 웹 서버가 다운되서 정상 접속이 되지 않습니다. 이때 타임아웃이 없으면 웹 브라우저는 계속해서 서버에 연결을 시도할 것이고 이는 또 다른 문제를 야기할 수 있습니다. 그러나 타임아웃을 통해 브라우저는 지정된 시간이 지나면 연결을 중단하고 오류 메시지를 출력합니다.

 

2. 리소스 고갈 방지

하나의 프로그램은 여러 개의 커넥션을 생성합니다. 그런데 어떤 이유로 응답 대기 시간이 길어지는 커넥션이 계속 쌓이다 보면 사용 가능한 리소스가 모두 소진되고 프로그램 전체 장애가 발생할 수 있습니다. 타임아웃은 이를 방지해줍니다.

 

예를 들어, 클라이언트가 서버에 요청을 보내고 있습니다. 네트워크 문제로 서버는 여러 클라이언트의 요청에 제대로 응답하지 못하고 있으며, 이렇게 대기하는 커넥션이 쌓여갑니다. 이는 리소스 고갈로 이어질 수 있습니다. 그러나 타임아웃을 통해 때가 되면 또 다른 응답을 받을 준비를 할 수 있습니다.

 

3. 보안 강화

불필요하게 세션이 오래 연결되어 있는 상태를 방지할 수 있습니다.

 

로그인 세션 타임아웃이 대표적인 예입니다. 은행 앱에 접속하고 나서 일정 시간 동안 이용하지 않으면 알아서 세션이 종료되고 로그아웃됩니다. 웹 사이트에서도 마찬가지입니다.

반응형

댓글

Designed by JB FACTORY