Springboot with JPA - 데어 프로그래밍 유튜브 (8강_HTTP가 무엇인지 궁금해요!)

치즈말랑이·2021년 10월 20일
0

스프링부트 with JPA

목록 보기
3/9
  1. 스프링부트 동작원리

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

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

A와 B가 통신을 하려고 할때 A가 5000 포트로 소켓을 오픈하면 B는 A의 IP주소와 포트번호를 넣는다. 이러면 A와 B는 메세지를 주고받을 수 있는 통신이 가능하다. 그런데 이렇게만 만들면 C가 A와 통신을 하고 싶을때 B가 이미 5000포트로 A와 연결이 되어있기 때문에 C가 5000으로 연결할 수 있는 방법이 없다. 그래서 최초에 5000포트는 연결의 용도로만 쓰고 연결이 되는순간 새로운 소켓을 만드는데 포트는 보통 랜덤으로 만들어진다.(ex. 5001) 그러면 5001로 연결이 됐기때문에 5000포트에서의 연결은 끊긴다.
그런데 5001로 통신을 해서 A와 B 사이를 데이터가 왔다갔다 하면 5000포트가 작동을 할 수 없다. 5000포트는 다른사용자의 요청을 받아야 하는데 그걸 받을 수 없다. cpu가 5001과 일을 하고 있기 때문에.

5001의 새로운 소켓을 만들때에는 새로운 스레드를 만든다. 스레드 1, B와 통신함
5000소켓은 main 스레드 : 새로운 사용자의 요청을 받음
이러면 C가 5000에 접근 가능 -> 새로운 소켓이 랜덤으로 만들어짐. 5002 : 스레드2, 5000소켓과 연결끊기고 5002와 연결이됨
이게 반복되는것이 소켓통신. 스레드의 개념이 잡혀있어야함

소켓통신 : Time slice, 시간을 쪼개서 동작하는거라서 동시동작처럼 보임
장점: 연결이 계속 되어있다. 끊어지지 않아서 부하가 크고, 느려질 수 있다.

http 통신 (문서를 전달하는 통신) - 연결을 지속하지 않고 끊어버리는 Stateless 방식 사용
A와 B가 있을때 C한테 데이터를 받고싶으면.
A가 C에게 "a.txt"좀 줘봐 라고 말하면, C가 80소켓으로 요청을 받고 새로운 스레드를 만드는게 아니라 다이렉트하게 a.txt를 찾아서 돌려준다. 그러고 더이상 통신을 할 수 없게 끊어버린다.
마찬가지로 B가 C에게 b.txt 달라고 하면, C가 응답해주고 끊어버린다.

소켓통신은 계속 연결되어있어서 부하가 크지만 계속연결되어있기때문에 한번 연결되면 서버 입장에서 B가 누군지 알고있다.
http 통신은 연결이 끊기기 때문에 부하가 적지만 다시 연결될때에는 항상 새로운 사람으로 인식한다.
만약 A가 다시 연결해서 c.txt를 달라하면 C는 c.txt를 주겠지만, a.txt를 달라했던 사람과 c.txt를 달라했던사람이 같은사람인지 알지 못한다. 이런 단점을 보완하면서 만들어진게 웹서버이다.

http: html(확장자) 문서를 필요한사람에게 제공하기 위한 목적

profile
공부일기

0개의 댓글