본문 바로가기
Spring/Spring

Spring의 작동 원리 (http/tomcat)

by 불면증김씨 2022. 1. 17.

           내장 톰켓을 가진다           

 

 

             socket 통신             

  • 특징: 소켓은 운영체제가 가지고 있는 것으로, 한번 연결되면 연결이 끊어지지 않고 계속해서 유지가 된다.
  • 장점: 한번 열결되고 나면 서버 입장에서는 B,C가 누구인지 알 수 있다.
  • 단점: 여러 사용자들과 연결되고 소켓들이 여러 개 생기게 되면 부하가 계속해서 커진다.

소켓 통신

 

소켓오픈하면 포트 번호가 필요하다. 최초의 5000번 포트는 연결용도로만 사용한다. 연결이 되는 순간 새로운 소켓을 만든다. 새로운 소켓은 새로운 스레드를 생성한다. 그리고 기존 5000 포트 연결이 끊기고 새로운 소켓(5001포트)로 연결이 된다. Main스레드인 5000포트는 새로운 사용자를 받는다.

 CA5000포트로 연결이 되면 또 다시 새로운 소켓이 만들어진다. 그리고 연결이 끊기고 새로운 소켓(5002포트)에 연결이 된다. 왜냐하면 main스레드(5000포트)는 또다시 새로운 사용자를 받는 일을 해야하기 때문이다.

 

 

                  http 통신                    

 

  • 특징: 문서를 전달하는 통신으로 stateless방식이다. http는 운영체제가 들고 있는 소켓을 기반으로 만들어 졌다. 이는 새로운 소켓을 만드는 것이 아닌 다이렉트로 사용자의 요청을 받아서 응답한다. 그리고 나서 연결을 끊어버린다.
  • 장점: 부하가 적다.
  • 단점: 다시 연결 시, 매번 새로운 사용자로 인식한다.

-> 이런 단점을 보안해서 만든 것이 web서버이다.

 

http 통신

사용자 요청에 응답을 하고 나서 연결을 끊어 버린다.

 

 

http의 탄생

 만일 A가 논문을 쓰게 되면 전 세계에 있는 자신의 주제와 동일한 논문 다 읽어 봐야한다( 중복을 피하기 위해서) 옛날엔 인터넷이 없었기에 일일히 그 논문을 찾으러 가야했다. 그래서 팀버너스리가 학자들이 들고 있는 컴퓨터를 하나의 서버에 연결한다. 그리고 각자 논문을 서버에 업로드한다. 그리고 필요할때마다 논문을 가져온다. Httphttp확장자로 만들어진 문서를 필요한 사람에게 전달한다하기 위해 만들어졌다.

 

 

 

 

 

 

            웹서버               

 

웹 서버(Web Server)는 HTTP를 통해  브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다.

웹서버

요청시 요청할 대상의 ip 주소를 알아야한다. 그리고 어떤 데이터가 필요한지를 url명시해줘야한다. (url은 자원을 요청하는 주소)

 요청할 때만 응답해주면 되기때문에 갑은 을의 ip주소를 알필요가 없다. 그렇기 때문에 을의 요청이 없다면 을의 ip주소를 모르기때문에 응답할 수 없다

 

 

            톰켓            

톰켓

 정적 자원 요청은 아파치에서 바로 처리한다. 하지만 자바 코드 요청 시, 아파치는 자바코드를 인식하지 못해 응답할 수 없다. 그렇기 때문에 톰켓을 이용한다. 아파치가 이해하지 못하는 요청이 오면 제어권을 톰켓에게 넘긴다.

톰켓은 .jsp에 있는 모든 자바 파일을 컴파일한다. 그리고 컴파일된 데이터를 .html에 덮어씌운다. 그리고 그 컴파일 된 .html파일은 다시 아파치에게 돌려준다. 그럼 아파치는 .html파일을 응답해준다.

 결론적으로 톰켓이 하는 일은 자바 파일을 컴파일하고 html파일로 만드는 것이다.

 

 

웹서버 / 톰켓의 차이

웹서버: 요청한 파일을 응답해주는 애

톰켓: 요청한 파일 중에 자바 코드가 요청되면 그것을 컴파일해서 html파일로 번역해서 주는 애

'Spring > Spring' 카테고리의 다른 글

스프링 MVC 흐름  (0) 2022.02.01
DI(의존성 주입)  (0) 2022.02.01
스프링의 작동원리(서블릿 컨테이너)  (0) 2022.01.31
Spring의 작동 원리 ( web.xml)  (0) 2022.01.17
Spring 개념  (0) 2022.01.13

댓글