1. Connection Timeout
발생 시점: 서버와 연결을 시도하는 과정에서 시간 초과 발생.
- 클라이언트가 서버에 연결 요청을 보냄 (CONNECT).
- 서버가 응답하지 않거나 네트워크 문제로 연결이 지연.
- Connection Timeout 설정 시간 초과 → ConnectTimeoutException 발생.
예시
- 서버 주소가 잘못 설정되어 DNS 조회 실패.
- 서버가 다운되어 요청을 처리하지 못함.
- 방화벽이 연결을 차단.
2. Socket Timeout (응답 대기)
발생 시점: 연결이 성공한 후, 서버가 응답 데이터를 보내기 시작하지 않을 때 시간 초과 발생.
전체 응답 시간이 아닌 개별 패킷 응답 시간
- 클라이언트가 서버와 연결 성공.
- 서버는 요청을 받았으나 응답 처리가 지연됨.
- 클라이언트가 Socket Timeout 동안 대기했으나 데이터가 도착하지 않음 → SocketTimeoutException 발생.
예시
- 서버 과부하로 응답 지연.
- 요청 처리 중 서버의 작업이 중단됨.
- 네트워크 패킷이 손실됨.
3. Read Timeout
발생 시점: 응답 데이터의 일부를 읽은 후, 남은 데이터를 끝까지 받지 못할 때 시간 초과 발생.
- 클라이언트가 서버와 연결 성공.
- 서버가 일부 응답 데이터를 보내기 시작.
- 응답 데이터의 나머지가 전송되지 않음.
- 클라이언트가 Read Timeout 동안 대기했으나 데이터 전송이 완료되지 않음 → SocketTimeoutException 발생.
예시
- 대규모 데이터를 처리 중 네트워크 장애 발생.
- 서버 응답이 중간에 중단됨.
- 클라이언트가 데이터를 너무 빨리 읽으려 함.
SocketTimeout = ReadTimeout:
- 두 용어는 Java에서 동일한 타임아웃 설정을 가리킵니다.
- 둘 다 응답 데이터 읽기와 관련된 대기 시간을 제어합니다.