웹 클라이언트는 대부분의 경우 웹 브라우저를 의미하고(크롬,파이어폭스,사파리 등), 웹 서버는 클라이언트의 요청을 받아 처리하고, 그 결과를 클라이언트한테 응답으로 전달한다.
통신 프로세스
: HTTP , HTTPS 프로토콜을 사용하여 웹 서버에 요청을 보낸다.
HTTP 프로토콜은 기본적으로 상태가 없는(stateless) 방식을 사용하는데, 이는 각 요청이 독립적이며, 서버는 이전에 수행된 요청에 대해 기억하지 않는다.
(-> 상태를 유지하기 위해서 세션,쿠키,토큰 등을 사용) = 인증,인가 등
예를 들어:
🤷♂️ 그런데 이런 소켓방식은 웹 서버에 부담을 준다(계속 동기화 되어서)
그래서 웹 브라우저는 이 부하를 해결하기 위해 HTTP프로토콜 방식을 사용한다.
유럽 스위스의 입자 물리 연구소인
cern
에는 수 많은 국가의 사람들이 연구를 하고 있다.
예전에 컴퓨터가 활발히기 이전에는 논문을 찾아보기 위해서는A실험실
에서B실험실
에 있는 논문을 직접 찾아보거나 혹은 연구를 시작하기 이전에 동일한 주제를 찾아보려면 굉장한 수고가 들었다고 한다.이 문제를 해결하기 위해, 팀 버너스리(Tim Berners-Lee)는 1989년에 세계 첫 웹시스템을 제안했다. 그는 정보를 연결하고 공유하기 위한 새로운 시스템인 WWW(World Wide Web)를 개발하였다. 이 시스템은 정보를 연결하고, 서로 다른 시스템에서도 정보를 공유할 수 있게 만들었다.
HTTP(HyperText Transfer Protocol)는 이 WWW 시스템의 핵심 프로토콜 중 하나로, 정보를 요청하고 응답받는 방식을 정의한다. 초기에는 정적인 문서를 전송하는데 주로 사용되었기 때문에 서버 부하가 크지 않았다.
그래서 웹 브라우저에서 css,html,javascript
와 같은 정적파일을 단순 요청할 때는 아파치
에서 요청한 데이터를 단순 응답하면 그 화면이 우리가 보는 브라우저에 나타난다. ->위에서 설명한 http 프로토콜 형식처럼
그러나 동적인 파일이나 자바파일 같은 요청을 보내면 아파치
에서는 인식을 못하고 톰켓
에 권한을 부여한다.
이 후, 톰켓은 해당 파일을 컴파일하여 html
파일 위에 덧씌운다. 그 파일을 아파치한테 넘겨주면 다시 응답하는 형태이다.
소켓은 계속 동기화 되어지고, http는 응답 이후에 연결을 끊으니 상대적인 개념이라고 생각했으나,
기본적인 데이터 전송을 가능하게 하는TCP
프로토콜 스택 위에서 작동하도록 설계했다.
TCP: 데이터 전송을 책임지는 중요한 프로토콜
소켓(socket)이라는 개념을 사용하여 네트워크 상에서 통신하는 두 기기 간의 연결을 관리합니다. 소켓은 특정 IP와 포트 번호로 식별되며, 두 컴퓨터 간의 안정적인 데이터 스트림 연결을 제공합니다.