신입 네트워크 교육을 받았다! (2022-07-15)

 

 

오버헤드를 줄이기 위한 목적은 같다.

 

하지만 줄이는 오버헤드가 다르다.

 

https://coderbycode.tistory.com/162

 

세션(Session) 이란

세션(Session)이라는 용어는 다분히 혼돈스럽다. 세션의 정의를 Naver에서 찾아보면 (1) 망 환경에서 사용자 간 또는 컴퓨터 간의 대화를 위한 논리적 연결, (2) 프로세스들 사이에 통신을 수행하기

coderbycode.tistory.com

위 사이트를 반드시 참고할 것.

 

tcp의 경우)

http는 connectionless, stateless이기 때문에 tcp/ip와 같이 쓴다.

요청이 들어오면

 

<- 논리적 단위 -> <--- 물리적 단위           -----------------------> <-- 메시지의 교환 -->
세션(세션ID)시작 ->
                         클라이언트 소켓 생성 ->

 

                                                           서버 소켓 연결(Connection)
                                                                                                 -> 요청(Request) 
                                                                                                 <- 응답(Response)
                                                                                                   ....
                                                                                                  -> 요청(Request) 
                                                                                                 <- 응답(Response)
                                                     <-   서버 소켓과 연결 닫힘(Close) 
                       <- 클라이언트 소켓 닫힘
세션종료

출처: https://coderbycode.tistory.com/162 [workSpace:티스토리]

 

웹 서버는 다음과 같은 과정을 거치는데, 서버에서 소켓이 열리고 닫힐 때, 쓰레드가 이를 처리하게 된다.

소켓이 열릴 때 쓰레드가 생겨서 이를 처리하고, 닫힐 때 쓰레드가 삭제되는데

만약 한번 request / response를 처리하고 쓰레드가 삭제되면, 곧이어 request가 왔을 때

다시 쓰레드를 만들고 소켓을 연결하는 과정을 거쳐야 한다.

바로 이 부분이 오버헤드이고, 이를 막기 위해, tcp keep alive라는 대기 시간을 주어서

해당 시간 동안은 쓰레드를 바로 삭제하지 않고, 다음 요청이 들어오면 바로 처리할 수 있게 한다.

(시간 지나면 SESSION TIMEOUT)

이게 바로 TCP의 Session이다.

 

was의 경우, session은 사용자의 로그인 정보, 장바구니 정보등 사용자의 connection이 끊기지 않게 하기 위한 것이다.

 

즉, 오버헤드를 줄이기 위한 것이라는 목적은 맞지만, 내용이 다르다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기