인증과 인가 인증(authentication)은 사용자가 누구인지 확인하는 절차이다. 회원가입과 로그인 과정이 인증의 대표적인 예시이다. 인가(authorization)은 사용자가 요청하는 것에 대한 권한이 있는지를 확인하는 절차이다. 세션을 통한 인증, 인가(auth)의 절차는 다음과 같다. 클라이언트가 로그인을 하면 서버는 회원정보를 대조하여 인증을 한다.(authentication) 회원 정보(클라이언트 정보)를 세션저장소에 생성하고 session ID를 발급한다. http response header 쿠키에 발급한 session ID를 담아서 보낸다. 클라이언트에서는 session ID를 쿠키 저장소에 저장하고 이후에 http request를 보낼 때마다 쿠키에 session ID를 맏아서 보낸다..
쿠키와 세션 쿠키 클라리언트(브라우저) 로컬에 key-value 쌍을 저장되는 데이터 팡리이다. 유효시간 내에서는 브라우저가 종료되어도 계속 유지된다. 세션 브라우저가 종료되거나, 서버에서 해당 세션을 삭제할 수 있기 때문에 쿠키보다 보안성이 좋다. 또한 서버에 데이터를 저장하므로 서버 용량이 허용하는 한에서 제한 없이 데이터를 저장할 수 있다는 장점이 있지만 서버의 부하가 커진다는 단점이 될 수 있다. 쿠키와 세션을 사용하는 이유: HTTP의 connectionless, stateless 클라리언트가 요청을 했을 때 그 요청에 맞는 응답을 보낸 후 연결을 끊고, 서버는 클라이언트에 대한 상태 정보를 유지하지 않기 때문에 알 수 없게 된다. 쿠키(cookie) 쿠키의 생성과 저장은 구현에 따라 다르지만 ..
브라우저를 열어 주소창에 www.naver.com을 을 입력한다. (www.naver.com)는 도메인 네임으로 되어있기 때문에 DNS에 도메인을 검색하기 위한 요청을 보낸다. DNS는 일련의 과정을 거친 후 (www.naver.com)에 대응하는 ip 주소를 응답으로 돌려준다. 받은 ip 주소를 사용하여 TCP 통신을 통해 해당 ip 서버에 요청을 보낸다. 요청을 받은 서버(www.naver.com)는 요청 내용에 대한 일련의 처리 과정을 거쳐 응답 메시지를 만든다. 응답메시지를 TCP 통신을 통해 다시 클라이언트에게 전송한다. 브라우저는 받은 응답메시지를 HTTP 프로토콜을 사용하여 웹페이지를 구성하며 사용자에게 Naver 화면을 보여준다. 웹 동작 방식 유저가 브라우저에서 url을 입력하면 http..
HTTP(Hyper Text Transfer Protocol)란? 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. TCP/IP 기반으로 작동하며 가장 큰 특징은 Connectionless와 Stateless 이다. 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP의 구조 클라이언트가 HTTP request를 보내면 서버는 HTTP response를 클라이언트에 보내는 구조이다. request message start line(method, path, HTTP version), headers, body로 이루어져 있고 respons..
3 Way-Handshake란? 전송제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정/방식이다. 더 쉽게 말해서 송수신자 사이에 연결을 확인하는 과정이다. TCP 프로토콜은 연결지향적이다. 이는 상대방이 내 신호를 받을 수 있는지 확인하고 전송을 하는 것을 의미한다. 이때 내 신호를 받을 수 있는 지 확인하는 것이 3 way handshake이다. #1 SYN 1단계: 들려? 클라이언트가 연결요청 메시지(SYN)을 전송한다. 클라이언트는 Synchronize Sequence Number(SYN)라는 임의의 랜덤 숫자를 함께 전송한다. #2 SYN+ACK 2단계: 응 들려! 너도 들려? 서버가 요청을 수락하며, 클라이언트에게도 들리냐는 연결요청 메시지를 전송한다. 그 ..
TCP(Transmission Control Protocol) IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜, 인터넷 환경에서 기본으로 사용한다. 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking 과정을 통해 연결을 해제한다. 데이터가 전달될 때 수신이 가능한지, 데이터가 잘 갔는지 확인하는 과정을 거치면서 오류와 흐름을 제어하고 신뢰성 있는 데이터가 전달될 수 있도록 한다. 중간 확인 과정이 추가되고 연결을 유지하는 과정에서 추가 리소스가 발생한다. 안정적으로, 순서대로, 에러없이 교환 가능 전이중(Full Duplex) 방식의 양방향 가상 회선 지원 신뢰성 있는 데이터 전송 보장 흐름제어 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우..