매일 공부/Backend CS

[매일메일] Connection Timeout, Socket Timeout, Read Timeout의 차이점?

개발하는 동그리 2025. 4. 15. 10:13
Connection Timeout

Connection Timeout 은 클라이언트가 서버에 연결을 시도할 때, 일정 시간 내에 연결이 이루어지지 않으면 발생하는 타임아웃입니다. TCP 소켓 통신에서 클라이언트와 서버가 연결될 때, 정확한 전송을 보장하기 위해 사전에 세션을 수립하는데, 이 과정을 3-way-handshake라고 합니다. Connection Timeout은 이 3-way-handshake가 일정 시간 내에 완료되지 않을 때 발생합니다. 즉, 서버의 장애나 응답 지연으로 인해 연결을 맺지 못하면 Connection Timeout이 발생합니다.

  • 정의 : 클라이언트가 서버와 연결을 시도할 때, 정해진 시간 안에 3-way-handshake가 완료되지 않았을 때 발생.
  • 원인 : 서버 다운, 방화벽 차단, 네트워크 지연 등으로 연결 자체가 되지 않는 경우.
  • 적용 시점 : 연결 시도중.
  • 비고 : 연결 자체가 성사 x.

 

Socket Timeout

Socket Timeout은 Connection Timeout 이후에 발생할 수 있는 타임아웃입니다. 클라이언트와 서버가 연결된 후, 서버는 데이터를 클라이언트에게 전송합니다. 이때 하나의 데이터 덩어리가 아니라 여러 개의 패킷 단위로 쪼개서 전송되는데, 각 패킷이 전송될 때의 시간 차이 제한을 Socket Timeout이라고 합니다. 만약 서버가 일정 시간 내에 다음 패킷을 보내지 않으면, 클라이언트는 Socket Timeout을 발생시키고 연결을 종료할 수 있습니다.

 

  • 정의 : 클라이언트와 서버가 연결된 후, 각 패킷 단위 전송 간의 응답 지연 시간이 너무 길 때 발생.
  • 원인 예시 : 서버가 데이터를 부분적으로 보내고 다음 패킷을 지연시키는 경우.
  • 적용 시점 : 연결 이후, 데이터 송수신 중.
  • 비고 : 전송 중인 데이터의 패킷 간 지연에 대한 제한.

Read Timeout

 

Read Timeout은 클라이언트와 서버가 연결된 후, 특정 I/O 작업이 일정 시간 내에 완료되지 않으면 발생하는 타임아웃입니다. 클라이언트와 서버가 연결된 상태에서, 서버의 응답이 지연되거나 I/O 작업이 길어져 요청이 처리되지 않을 때 클라이언트는 연결을 끊습니다. Read Timeout은 이러한 상황을 방지하기 위해 설정된 타임아웃으로, 일정 시간 내에 데이터가 읽혀지지 않으면 클라이언트가 연결을 종료합니다.

 

  • 정의 : 클라이언트와 서버가 연결된 상태에서, 전체 데이터가 특정 시간 내에 읽히지 않으면 발생
  • 원인 예시 : 서버가 응답은 하는데, 완전한 데이터를 너무 오래 지연시킬 때
  • 적용 시점 : 연결 이후, 응답 대기중
  • 비고 : 전체 응답을 기다리는 시간의 제한

 

 

네트워크에 타임아웃이 필요한 이유

자원 절약! 외부 서비스로 요청을 보냈으나, 응답이 오지 않으면 무한정 기다리게 되면 서비스의 자원이 고갈되어 장애가 발생할 수 있습니다. 따라서 타임아웃을 설정하여 요청이 무한정 길어지는 상황을 예방할 수 있습니다.

 

https://www.maeil-mail.kr/question/102

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr