Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가?

김명수·2025년 9월 4일

매일메일

목록 보기
4/103
post-thumbnail

Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가?

●Connection Timeout

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

●Socket Timeout

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

●Read Timeout

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

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

  • 타임아웃이 필요한 이유는 자원을 절약하기 위함
  • 예를 들면, 외부 서비스로 요청을 보냈지만 해당 요청이 무한정 길어질 수 있는데 이때 서비스의 요청이 자원을 가지고 있으면, 서비스의 자원이 고갈되어 장애가 발생할 수 있음
  • 타임아웃을 설정하면 이렇게 요청이 무한정 길어지는 상황을 예방
profile
신입개발자

0개의 댓글