2019. 2. 12. 22:00ㆍ프로그래밍언어/Java&Servlet
Java - ConnectionTimeout,ReadTimeout,SocketTimeout 차이점?
사실 지금까지 웹개발을 해오면서 ConnectionTimeout,ReadTimeout,SocketTimeout에 대해 대략적으로만 알고있었지
사실 정확히 설명해봐라 혹은 차이점을 설명해봐라하면 대답하기 힘든 부분이 있었다. 이번 포스팅으로
정확한 타임아웃 개념을 잡아보려고한다.
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(응답)을 받기까지 소요될 시간의 임계치이다."
사소하게 넘어 갈 수 있는 것들이지만 네트워크 상에 돌아가는 무엇인가를 개발한다면 꼭 숙지해야 될 것들중 하나인 것 같다.
'프로그래밍언어 > Java&Servlet' 카테고리의 다른 글
Java - ThreadLocal 이란? 쓰레드로컬 사용법! (0) | 2019.02.21 |
---|---|
Java - You need to run build with JDK or have tools.jar on the classpath 오류 (0) | 2019.02.14 |
Java - JDK1.7(JAVA 7) 특징 try-with-resource 등 (0) | 2019.02.11 |
Mac OS - Eclipse & Lombok(롬복 사용방법) (2) | 2019.02.02 |
JAVA - Hashtable, HashMap, ConcurrentHashMap 비교 (0) | 2019.02.01 |