[One Day One Question]
Connection Timeout, Socket Timeout, Read Timeout에 대해서 설명해 주세요.
Connection Timeout, Socket Timeout, Read Timeout은 네트워크 프로그래밍에서 연결과 통신 과정에서 발생할 수 있는 서로 다른 시간 초과 조건을 나타냅니다
1. Connection Timeout
- 설명:
- 클라이언트가 서버에 연결을 시도할 때, 연결이 완료되기까지 허용되는 최대 시간입니다.
- 이 시간 동안 서버가 응답하지 않으면 연결 시도가 중단되고 오류가 발생합니다.
- 주요 사용 사례:
- 서버가 응답하지 않거나 네트워크 장애로 인해 연결이 지연될 때, 무한히 대기하지 않고 일정 시간 후에 요청을 중단합니다.
- 발생 시점:
- TCP 연결의 3-way handshake(SYN, SYN-ACK, ACK) 과정에서 발생.
- 예시:
- 클라이언트가 http://example.com에 연결을 시도했으나 서버가 응답하지 않으면 Connection Timeout 발생.
2. Socket Timeout (Request Timeout)
- 설명:
- 클라이언트와 서버 간 데이터 통신을 위해 열린 소켓에서 데이터 송수신 과정에서 발생하는 시간 초과입니다.
- 소켓을 통해 데이터를 보낼 때 서버가 특정 시간 내에 응답하지 않으면 Timeout이 발생합니다.
- 주요 사용 사례:
- 서버와 연결이 성공적으로 이루어졌지만, 데이터 송수신 과정에서 지연이 발생할 경우 일정 시간 내에 요청을 중단.
- 발생 시점:
- 소켓이 열려 있는 상태에서 데이터가 송수신될 때.
- 예시:
- 서버로 요청을 보낸 후 응답이 늦게 도착하면 Socket Timeout 발생.
3. Read Timeout
- 설명:
- 클라이언트가 요청을 보낸 후, 서버로부터 데이터를 읽는 데 허용된 최대 시간입니다.
- 연결은 성공적으로 이루어졌지만, 서버가 데이터를 반환하는 데 너무 오래 걸리면 Timeout이 발생합니다.
- 주요 사용 사례:
- 서버가 처리가 느리거나 대기 시간이 길어 데이터 응답이 지연될 경우 요청을 중단.
- 발생 시점:
- 데이터 응답을 읽는 단계에서 발생. (예: HTTP 응답 헤더나 바디를 읽는 과정)
- 예시:
- 서버에서 클라이언트의 요청을 처리하는 데 시간이 오래 걸려 응답 데이터를 읽지 못하면 Read Timeout 발생.
유형 | 발생 단계 | 초점 | 예시 |
Connection Timeout | 연결 설정(TCP handshake) | 서버에 연결 시도 시간 초과 | 서버가 다운되거나, 방화벽/네트워크 문제로 인해 연결이 지연됨 |
Socket Timeout | 데이터 송수신(소켓에서 I/O 작업) | 요청 데이터 전송/응답 수신 시간 초과 | 연결된 후 데이터 송수신이 중단되거나 네트워크가 느려 데이터가 늦게 도달 |
Read Timeout | 서버 응답 데이터 읽기 | 응답 데이터 수신 시간 초과 | 서버가 처리가 느려 데이터를 반환하지 못하거나, 응답이 너무 느리게 전달됨 |
- Connection Timeout: 서버에 연결을 시도할 때 허용되는 시간.
- Socket Timeout: 요청 데이터 전송/응답 수신 과정에서 소켓의 최대 대기 시간.
- Read Timeout: 서버 응답 데이터를 읽는 데 걸리는 최대 시간.
'cs > ODOQ' 카테고리의 다른 글
[ODOQ] REST란? (1) | 2025.01.15 |
---|---|
[ODOQ] 로드 밸런싱(Load Balancing) (0) | 2025.01.10 |
[ODOQ] WAS, 웹 서버 (2) | 2025.01.03 |
[ODOQ] 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR) (0) | 2025.01.01 |
[ODOQ] 리버스 프록시와 포워드 프록시 (0) | 2024.12.26 |