스파르타 내일배움캠프 50일차 231123
오늘 공부한 내용
- Spring 숙련주차 1주차 영상 재시청
- Spring 팀별과제 / 뉴스피드 만들기
- 코드카타 2문제
어려웠던 내용
- 회원가입을 위한 JWT 구조작성
새로 알게된점
- HTTP 통신의 특징
HTTP 통신은 다음과 같은 프로토콜 환경을 가지고 있다. 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야한다. 이 특성을 보완하기 위해서 쿠키와 세션을 사용하게된다.
1. Connectionless 프로토콜 (비연결 지향)
클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식입니다.
즉 두 플랫폼 사이에는 어떠한 연결 고리도 존재하지 않고, 그 전에 이루어진 HTTP 통신에 대해서는 알 방법이 없으며
이로 인해 서버에 가해지는 부담이 많이 줄어들어 리소스 낭비를 방지할 수 있습니다.
다만, HTTP 1.1버전 부터는 keep-alive라는 커넥션을 유지하여 요청을 재사용하는 옵선이 기본값으로 설정되어 있습니다.
2. Stateless 프로토콜
커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있습니다.
연결이 끊어지는 순간 모든 상태 정보가 사라지게 되는 방식이다.
서버에서 첫 번째 통신에서 데이터를 주고받았다 해도, 두 번째 통신에서 이전 데이터를 유지하지 않아 보낸 요청인지 분간할 수 없기 때문에 다른행동을 할 시 모든 데이터를 다시 보내야 하는 상황이 발생하게된다.
즉, 매번 통신을 할 때마다 인증을 해야한다.
이러한 두 특성을 해결하여 지속적으로 페이지를 사용하기 위해서 쿠키 와 세션이 필요하다.
- 쿠키 와 세션 개념
1. 쿠키(Cookie)
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.
쿠키는 다음과 같이 구성 되어 있다.
- 이름 : 쿠키를 구별하는 이름
- 값 : 쿠키에 저장되는 값
- 유효시간 : 큐키 유지시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
2. 세션(Session)
일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다. 여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
주로 보안에 취약한 쿠키를 보완해주는 역할을 한다.
세션(Session) 의 특징
사용자의 데이터를 담는 쿠키는 통신 중 탈취당하면 쉽게 개인 정보가 유출될 수 있는 쿠키와는 다르게, 세션은 서버측에 저장된 데이터를 사용할 뿐더러 유일하게 클라이언트에 저장하는 세션 ID는 탈취당하더라도 역으로 정보 확인이 불가능하다.
이와 같이 네트워크 상으로 사용자의 개인 정보가 흘러 가지 않아 쿠키보다 보안성은 높지만, 사용자의 수가 많은 대형 서비스의 경우에는 세션 정보까지 관리해야하는 서버에 부담이 갈 수 있다는 단점이 존재한다.
오늘의 느낀점
뉴스피드 과제를 만들면서 회원가입 기능을 맡기로 했다.