코딩하는 둥둥

[ Springboot ] Springboot 동작원리 : HTTP가 무엇일까요? 본문

Backend/스프링부트 개념정리(이론)

[ Springboot ] Springboot 동작원리 : HTTP가 무엇일까요?

둥둥 2022. 2. 15. 23:17
728x90
Springboot 동작원리

1. 내장 톰켓을 가진다.

톰켓을 따로 설치할 필요 없이 바로 실행가능하다.

 

※ Socket : 운영체제가 가지고 있는것

https://doongi9.tistory.com/entry/15-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-Network

 

A와 B가 서로 메세지를 교환하고 싶을때 운영체제에서 제공해주는 socket이용

 

  • 소켓 통신

쓰레드를 통해 time slice(시간쪼개기)를 해서 동시에 동작하고있는것처럼 보일수있음

(시간을 쪼개서 동작)

 

- 장점 : 계속 연결이 되어있기때문에 한번 연결되고 나서 A(서버)의 입장에서는 B가 누구인지 계속 알 수 있음(계속 통신중)

- 단점 : 연결이 계속 되어있기때문에 부하가 큼(느려질수 있음)

→ 연결이 많아질수록 부하가 늘어남

 

1. B는 A에게 A가 있는 주소(ip주소)와 A의 포트번호를 넣음

2. 해당 포트번호에 연결됨 

   연결이 되는 순간, A와 B는 서로 메세지를 주고받을수 있음(통신이 가능)

이럴경우 새롭게 C가 A와 통신을 하고싶을때 이미 A는 5000번 포트로 B와 연결되어있기때문에 C와 연결할 수 없음

→ 그래서 최초의 5000번 포트는 연결의 용도로만 사용

   5000번 포트를 만든 순간 새로운 포트가 생성(보통 랜덤)되고 B는 이 포트와 연결이 됨

(가장 먼저 open된 소켓과는 연결이 끊어짐)

이때 가장 먼저 만들어진 5000번 포트는 작동불가(cpu가 5001번 포트에서 일하고있기때문에 = 모든 자원을 5001번에서 사용)

=> 그래서 새로운 포트를 만들때는 새로운 쓰레드도 만들어줘야 함

main 쓰레드는 게속해서 새로운 사용자의 요청을 받고, 쓰레드1은 B와 통신을 하게 되는것

이렇게 되면 C가 A에게 접근할 수 있음

* main 쓰레드를 통해 새롭게 포트번호와 쓰레드가 생성되면 main쓰레드와의 연결은 끊어짐

: main쓰레드는 새로운 사용자의 요청을 받아야 하기때문에 새로운 포트와 쓰레드가 생성되고 나면 연결이 끊어짐

 

※ 쓰레드


  •  http통신

단순하게 문서를 전달하는 통신

http통신(웹 통신)은 연결을 지속시키지 않고 끊어버리는 stateless방식을 사용

- 장점 : 연결이 끊기기때문에 부하가 적음

- 단점 : 다시 연결될때는 새로운 사람으로 인식함(동일한 사람이 요청해도 동일하다고 인지하지 못함)

 

=> 이러한 단점을 보완해서 만들어진것 : 웹서버

 

※ HTTP의 탄생

스위스 cern 연구소(입자 물리 연구소)에서 A가 논문을 작성하려고 함

1. 전세계에 있는 자신의 주제와 동일한 내용의 논문을 다 읽어봐야 함

2. 읽어봐야 하는 논문이 한곳에 있지않고 있는 컴퓨터가 모두 다름

→ 팀 버너스리가 모든 컴퓨터를 하나의 서버에 연결한 후 논문을 서버로 업로드

그 논문이 필요할 경우 각자의 컴퓨터에서 통신선으로 서치해서 논문을 쏙 빼옴

=> 한번 연결하고나서 연결이 지속될 필요가 없음

==> 소켓통신이 기반이되는 HTTP통신의 탄생

 

HTTP의 목적

html 확장자로 만들어진 문서를 필요한 사람에게 제공(문서제공)

 

* 팀버너스리가 최근 하고있는것 : 개인이 데이터 통제하는 새로운 웹 만들것 = 솔리드solid 프로젝트

→ 모든 데이터가 한군데에 다 몰려있기때문에 데이터를 중앙집중화하지않고 분산하려고 하는것

 

2. 서블릿 컨테이너

 

3. 

 

 

 

728x90