Springboot 개념정리- 톰켓(Tomcat)이란?

Yuri Lee·2020년 9월 9일
0

Springboot 개념정리

목록 보기
5/10

스프링부트 강좌 with JPA 9강 - 톰켓이란?

http는 운영체제가 들고 있는 소켓을 이용해서 만들진다. 프로그램이 운영체제가 들고있는 어떤 프로그램을 통해 만들어지는 것을 시스템 콜이라고 한다.

http 기반은 소켓이다. 그럼 톰켓과 웹서버에 대한 차이를 알아야 하고 웹서버에 대해 자세히 알아야 한다.

웹 서버

내가 컴퓨터를 하나 샀다. 그리고 내가 굉장히 재미있는 동영상을 3개를 가지고 있다고 하자. 친구 3명은 각각 내 동영상을 보고 싶어한다. 친구들은 내 데이터가 필요한 상황이다. "너가 가진 영상들을 줄 수 있겠니?" 라고 친구들이 물어봐야 한다.

즉 내가 갑, 친구들이 을 된 것이다.

http 웹서버는 갑이다. 항상 을이 갑에게 request를 한다. 요청을 한다. request 하기 위해서는 내 컴퓨터가 어디있는지 알아야 하므로 ip주소를 알아야 한다. 1,2,3번 동영상 중 어떤 동영상이 필요한지 명시해줘야 한다. url은 자원을 요청하는 주소이다. 인터넷 주소를 보면 http:~~~/a.html a.html의 자원을 요청하는 것이다. (url에서 l은 location임)

자원의 위치를 내가 요청을 해서 필요한 데이터를 가져올 수 있다. 을이 갑에게 request 하면 갑은 을에게 response를 한다. 응답할 때 갑의 입장에서는 을의 ip를 몰라도 된다.

그냥 을이 요청을 하면 을이 요청한 그 ip주소를 토대로 (자기가 누구인지 request할때 밝힌다) 그 정보에 response 한다. 이 상황을 보면서 느낄 수 있는 것은 http에서는 갑이 을의 ip주소를 몰라도 된다는 것이다. 그러면 을이 요청하지 않았을 때 내가 응답을 어떻게 할 수 있을까?.. 응답을 하지 못한다. 왜?..모르니까...

을의 주소를 알기 위해서는 소켓을 사용해야 한다. 왜냐하면 소켓은 을이 연결하는 순간 response를 해주겠지만 이때 연결이 지속되어있어야 한다.

한번 연결하고 나서 갑이 원하는 시점에 항상 언제나 데이터를 전달해줄 수 있다.

예를 들어 을이라는 얘가 갑에게 a 데이터를 전달해줬다. 갑이 이 a데이터를 다른 을들에게 a 데이터를 보여주고 싶다면 이 갑의 입장에서는 을들의 ip 주소를 알아야 하는데 http 통신은 모른다. 따라서 이런 통신을 하기 위해서는 연결이 지속되는 소켓이 필요하다.

우리가 하는 http 통신은 요청시에 단순히 응답을 해주는 형식이고, 그 응답은 html, avi 등

요청시마다 변하는 자원이 아니다. static 자원이라고 한다. 정적인 데이터를 응답해주는 게 웹 서버이다.

그럼 톰켓은 무엇인가?

웸서버는 흔히 우리는 아파치를 사용한다. 그럼 컴퓨터에 특정한 폴더를 지정한다. c:\work 를 만들고 이 work 폴더를 공유한다고 하자.

그럼 폴더 안에 수많은 자원이 있을 것이다.
어떤 얘가 자원을 request 하면 아파치는 그 자원을 response 하면 된다.

만약 얘가 요청을 하는게 .jsp 파일 혹은 java code가 적혀있는 것을 요청하면 아파치는 자바 코드를 이해할 수 없다. 이해할 수 없다. 그래서 톰켓이라는 얘를 단다. 자기가 이해할 수 없는 파일이 오면 제어권을 톰켓에게 준다.

그리고 이 톰켓은 .jsp 파일에 있는 모든 자바파일을 컴파일 하고, 컴파일이 끝나면 컴파일된 데이터를 html에 덮여쓴다.

흔히 요청할때는 웹브라우저로 요청을 한다. 내가 .jsp 파일을 request 했는데

웹 브라우저는 html, js, css, avi 만 이해할 수 있음. 웹 브라우저가 요청한 게 html이라면 응답을 받아서 ㅇㅖ쁘게 열릴 것이다. 근데 jsp를 응답받으면 내용이 깨져버린다.

아파치는 요청한 파일을 응답해준다. 톰켓은 요청한 파일 중에 자바 코드가 요청되면 컴파일해서 html으로 돌려준다.

-이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.-

profile
Step by step goes a long way ✨

0개의 댓글