
웹에서 클라이언트 - 서버와의 데이터를 주고받은 모델 프로토콜이다.
웹 브라우저에서 통신에 적용되는 규칙이다.
TCP/IP 계층 위에서 작동한다.
TCP/IP 계층은 4계층으로 (layer) 로 구성되어 있다.
위 처럼 계층을 나누면, 인터넷 사양 변경 및 프로토콜 변경 시 전체를 수정하지 않아도 될 뿐더러, 각각의 계층은 각자의 위치에서 전달하고자 하는 메시지와 데이터를 전송하기 수월하기 때문이다.
애플리케이션 계층에 접속 되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다.
즉, 서로 상호간의 통신 및 데이터를 주고 받을 때의 흐름을 결정한다.
TCP, UDP 프로토콜
용량이 큰 데이터를 보낼 때 TCP 세그먼트를 통해 작은 단위로 분해하여 관리하고,
신뢰성이 높은 서비스이다.
즉, 대용량이 데이터를 쉽고 작게 분해하여, 상대방에게 정확하고 안전하게 도착했는지 확인하는 역할을 담당한다.
네트워크 상의 패킷의 이동을 다룬다.
어떤 경로를 거쳐 상대 컴퓨터까지 패킷을 어떻게 보낼지 결정한다.
쉽게 말해 서버는 클라이언트의 정보를 저장하지 않는다.
즉, 서버는 이전의 요청이 어떤 요청인지 알 수가 없다.
클라이언트와 서버의 서버 연결을 1회로 처리한다.
즉, N회 요청 시 N회 응답하고 난 뒤 즉시 서로 간의 연결을 끊어버린다.
지속적으로 연결을 유지하면 서버 자원이 지속적으로 소모 되기 때문이다.
뿐만 아니라 이를 통해 자원을 효율적으로 관리할 수 있다.
만약, 실시간이 필요하면 Web Socket을 사용하거나 한다.
클라이언트에서 웹 브라우저에 접속 시 서버는 사용자 정보가 담긴 Cookie 값을 전달하고, 이를 받은 클라이언트는 웹에 저장한다.
Key, Value쌍으로 전달되며, 유효기간이 존재하고 용량 제한이 존재한다.
서버측에서 저장하는 사용자 정보이며, 세션 Id를 통해 관리한다.
클라이언트에서 로그인을 할 때 Id, pwd 등을 담아서 서버에 보내면, 서버는 사용자를 확인하고, 세션 저장소를 통해 세션을 생성한다.
생성된 세션 Id를 Cookie에 담아 클라이언트에 전달하고, 클라이언트는 이를 (세션 쿠키) 저장한다.
이후 요청이 들어오면 세션 Id를 통해 사용자를 검증하고 응답을 준다.
문자열로 구성되어있고, (헤더, 페이로드, 시그니처) 3가지 항목을 통해 생성하여 토큰으로 유저를 검증하는 방식이다.
유저의 고유 정보를 해쉬화하여 JWT Token을 만들고 JWt Auth Guard를 통해 유저를 검증한다.
Expire가 지정 되어 있고, 정적이기 때문에 Refresh Token을 통해 갱신해줘야 한다.
HTTP 요청을 받아 정적인 content를 제공하는 프로그램이다.
WAS를 거치지 않고 자원을 바로 클라이언트에게 제공한다.
웹 서버로는 Apache Server, Nginx 등이 존재한다.
DB 조회 및 다양한 로직을 처리하기 위한 요구를 위해 동적인 컨텐츠를 만들어진 서버이다.
html을 변경해서 실시간으로 제공하거나 DB 결과를 응답하고자 할 때
웹 컨테이너라고도 불리며 JSP, Servlet을 실행 시킬 수 있는 환경을 제공한다.
Web Server + Web Container 형태로 존재한다.
WAS로는 Tomcat, JBoss 등이 존재한다.
정적인 파일과 동적인 파일을 모두 WAS 처리하면, 과부하가 걸릴 수 있다.
여러 대의 WAS 구성을 통해 하나의 WAS에 오류가 발생해도 재시작을 통해 오류를 보다 빠르게 해결할 수 있다.
즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성 을 위해 Web Server와 WAS를 분리하는 것이다.