본문 바로가기
springboot 개념정리(youtube강좌)

스프링부트 강좌 with JPA 8강 - HTTP가 무엇인지 궁금해요!

by wannabe 2021. 6. 27.

1. 스프링부트 동작원리


(1) 내장 톰켓을 가진다.

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

 

그전에 알아둬야할 개념 check!!

Socket이란?? 운영체제가 가지고있는 것 !

예를 들어, 

A라는 대상과 B라는 대상이 있다. 둘이 메세지를 교환하기 위해서 운영체제가 제공해주는 소켓 활용

A가 소켓을 오픈한다. 오픈한 소켓의 포트번호가 필요함. 5000번 포트 열고 소켓 오픈

B가 A와 통신 원하면? A의 IP주소와 포트번호를 넣는다.  IP주소 : 5000

그러면, 5000번에 연결된다. 연결되면 A와 B는 메세지 주고받는 통신이 가능해짐

C가 A와 통신을 원하면? B가 5000번포트로 A소켓과 연결되어 있어서 C가 A와 5000번으로 연결할 수 없다.

최초의 5000번 포트는 연결 용도로만 쓰인다. 5000번 포트와 연결되는 순간! 새로운 포트를 만든다

5001번 포트가 만들어지고 5000번 포트가 끊어지고 B는 5001번 포트와 연결되어 메시지 주고받는다

CPU가 B와 연결되어 메세지 주고받는데에 일을 하고 있기 때문에

다른 사용자(C)의 요청을 A가 받을수 없게됨

그래서!

5001번의 새로운 소켓을 만들 때, 새로운 스레드(1)를 만든다.

그리고  소켓을 오픈하는 포트인 5000번 포트는 main스레드가 일한다. 여기로 새로운 사용자 연결을 받음

5001번 스레드1은 B와 통신. 그래서 C가 5000번 포트 통해서 연결함. 연결되면? 랜덤으로 포트 5002번이 만들어짐

5002번에도 새로운 스레드(2)를 만든다. 그리고 C와 5000번과의 연결은 끊긴다. 

이게 반복되는 것이 소켓통신!!!

**스레드에 대한 개념 필요!!

소켓통신을 할 때, 스레드를 통해서 time slice를 하면서 일하기 때문에 동시에 동작하는 것처럼 보여짐

실제로는 시간을 쪼개서 왔다갔다 동작하고 있는 것

소켓통신의 장점은??? 연결이 계속 되어있다는 것.

그래서 부하가 커지고 느려질 수 있음 

연결이 100명, 1000명으로 늘어나면 느려질 수 있음

 

웹통신은??즉, http통신은! 연결을 지속하지 않고 연결을 끊어버리는 stateless방식을 쓴다

http는 단순하게보면, 문서를 전달하는 통신이다!!

A가 C에게 a.txt파일 줘! 라고 하면?

C소켓이 80포트로 열려있다고 한다면, A의 연락을 받고 새로운 쓰레드는 만들지 않고,

"알겠어"라고 하고 direct하게 a.txt파일을 찾아서 돌려준다. 그리고 연결선을 끊어버린다!

B도 b.txt파일 줘!! 라고 하면? C가 b.txt파일을 주고 연결을 끊어버린다

 

▷소켓 통신은 선이 계속 연결되어있으니까! 부하가 크지만,, 한 번 연결된 사람이 누구인지 알고 있게된다

▷반면, http통신은 연결이 끊겨서 부하가 적지만,,,다시 연결될때에는? 새로운 사람으로 본다.

연결 요청을 받은 C는 이전에 a.txt를 달라고 했던 애(A)와 나중에 c.txt를 달라고 했던 애(A)가 

동일한 사람인지 모른다. 

이러한 단점들을 보완해서 만들어진게 웹서버!!

 

추가로, http통신에 대해 더 알아보자

A라는 사람이 새로운 연구를 시작해서 논문을 만들려고 한다. 

이를 위해, 전세계에 있는 자신의 주제와 동일한 내용의 논문을 다 읽어봐야한다. 

그런데 서버가 없을때에는 이 방 저 방에 들어가서 종이로된 논문을 다 읽어봐야했던 것

 

그래서!

모든 사람들이 들고 있는 컴퓨터를 다 서버에 연결하게 된다. 

그리고 자신이 쓴 논문을 전부 서버에 업로드! 그리고 논문일 필요하면?

각자 컴퓨터에서 통신으로 연결된 선으로 논문을 서치! 그리고 쏙 들고온다. 

필요한 문서가 있으면 서치해서 들고오면 되니까, 더이상 연결을 유지할 필요가 없던것!

그래서, 소켓통신 기반의 http통신을 만들게 됨. 

한 번 연결된 후, 연결이 끊기는 통신.

목적은?? html 확장자로 만들어진 문서를 필요한 사람에게 전달해주는 문서전달 목적!!!