달리는 두딘

[JAVA] ConnectionTimeout, ReadTimeout, SocketTimeout 차이점 본문

지식노트

[JAVA] ConnectionTimeout, ReadTimeout, SocketTimeout 차이점

디두딘 2023. 2. 15. 22:22

ConnectionTimeout

ConnectionTimeout이라는 개념을 설명하기 전에 URL로 HTTP호출을 할 때 어떤 방식으로 수행되는지 이해가 필요하다.웹 브라우저가 서버에 접속하기 위해서 서버와 연결된 상태가 되어야 한다.

보통 연결을 구성하기위해 TCP Connection과 동일하게 3-way-HandShake 방식으로 수행하게 된다.

3-way HandShake가 정상적으로 수행하게 되면 웹 브라우저와 서버는 연결된 상태가 되는데,
이때까지 소요된 시간을 Connection에 소요된 시간이라고 할 수 있다.

즉, ConnectionTimeout이란

3-way HandShake가 정상적으로 수행되어 서버에 연결되기까지 소요된 시간


SocketTimeout

클라이언트와 서버가 연결된 상태 이후에 서버는 페이지를 브라우저에 랜더링하기 위해 데이터를 전송한다.
이때 하나의 패킷으로 데이터를 전송하는 것이 아니라 여러 개의 패킷으로 나눠서 전송하게 된다.
여러개의 패킷이 전송될 때, 각 패킷 간의 시간 Gap이 생길 수 있는데 이 시간의 임계치를 SocketTimeout이라고 한다.

즉, SocketTimeout이란

데이터를 여러개의 패킷으로 나누어 보낼때 각 패킷간의 시간의 Gap


 
 위의 두개를 그림으로 표현해보면,
 


결국 위의 두개의 시간설정은 URL을 호출 할때 꼭 필요한 설정이다.
만약 두 시간이 설정되지 않는다면? URL 접속 무한 대기가 발생될 수 있다.


ReadTimeout

Connection 맺은 후 Response(응답)을 받기까지 소요될 시간의 임계치



출처
https://coding-start.tistory.com/112