웹 클라이언트와 웹 서버

이해찬·2023년 8월 28일
0

TIL

목록 보기
10/20

웹 클라이언트와 웹 서버의 관계

웹 클라이언트는 대부분의 경우 웹 브라우저를 의미하고(크롬,파이어폭스,사파리 등), 웹 서버는 클라이언트의 요청을 받아 처리하고, 그 결과를 클라이언트한테 응답으로 전달한다.

통신 프로세스
: HTTP , HTTPS 프로토콜을 사용하여 웹 서버에 요청을 보낸다.

HTTP 프로토콜은 기본적으로 상태가 없는(stateless) 방식을 사용하는데, 이는 각 요청이 독립적이며, 서버는 이전에 수행된 요청에 대해 기억하지 않는다. (-> 상태를 유지하기 위해서 세션,쿠키,토큰 등을 사용) = 인증,인가 등


웹 브라우저의 요청 -> 소켓 구조

예를 들어:

  • 웹 서버가 포트 80에서 연결 요청을 대기한다.
  • 웹 브라우저가 해당 서버의 포트 80으로 연결 요청을 한다.
  • 웹 서버는 이 요청을 받아 새로운 소켓을 생성하고, 새로운 스레드에서 이 소켓을 통해 클라이언트와 통신한다.
  • 다른 클라이언트가 연결을 시도하면, 또 다른 소켓과 스레드가 생성되어 통신을 처리한다.
  • 이러한 방식은 웹 서버가 여러 클라이언트와 동시에 통신하며 서비스를 제공할 수 있게 해준다.

🤷‍♂️ 그런데 이런 소켓방식은 웹 서버에 부담을 준다(계속 동기화 되어서)

그래서 웹 브라우저는 이 부하를 해결하기 위해 HTTP프로토콜 방식을 사용한다.

HTTP의 탄생

유럽 스위스의 입자 물리 연구소인 cern 에는 수 많은 국가의 사람들이 연구를 하고 있다.
예전에 컴퓨터가 활발히기 이전에는 논문을 찾아보기 위해서는A실험실에서 B실험실에 있는 논문을 직접 찾아보거나 혹은 연구를 시작하기 이전에 동일한 주제를 찾아보려면 굉장한 수고가 들었다고 한다.

이 문제를 해결하기 위해, 팀 버너스리(Tim Berners-Lee)는 1989년에 세계 첫 웹시스템을 제안했다. 그는 정보를 연결하고 공유하기 위한 새로운 시스템인 WWW(World Wide Web)를 개발하였다. 이 시스템은 정보를 연결하고, 서로 다른 시스템에서도 정보를 공유할 수 있게 만들었다.

HTTP(HyperText Transfer Protocol)는 이 WWW 시스템의 핵심 프로토콜 중 하나로, 정보를 요청하고 응답받는 방식을 정의한다. 초기에는 정적인 문서를 전송하는데 주로 사용되었기 때문에 서버 부하가 크지 않았다.

그래서 웹 브라우저에서 css,html,javascript 와 같은 정적파일을 단순 요청할 때는 아파치에서 요청한 데이터를 단순 응답하면 그 화면이 우리가 보는 브라우저에 나타난다. ->위에서 설명한 http 프로토콜 형식처럼

그러나 동적인 파일이나 자바파일 같은 요청을 보내면 아파치에서는 인식을 못하고 톰켓에 권한을 부여한다.
이 후, 톰켓은 해당 파일을 컴파일하여 html파일 위에 덧씌운다. 그 파일을 아파치한테 넘겨주면 다시 응답하는 형태이다.


🤷‍♂️ 그런데 HTTP프로토콜 방식은 요청을 하고 응답을 받으면 바로 연결을 끊는데, 어떻게 소켓 구조를 기반으로 하는걸까

소켓은 계속 동기화 되어지고, http는 응답 이후에 연결을 끊으니 상대적인 개념이라고 생각했으나,
기본적인 데이터 전송을 가능하게 하는 TCP 프로토콜 스택 위에서 작동하도록 설계했다.
TCP: 데이터 전송을 책임지는 중요한 프로토콜
소켓(socket)이라는 개념을 사용하여 네트워크 상에서 통신하는 두 기기 간의 연결을 관리합니다. 소켓은 특정 IP와 포트 번호로 식별되며, 두 컴퓨터 간의 안정적인 데이터 스트림 연결을 제공합니다.

profile
디자인에서 개발자로

0개의 댓글