application layer
presentation layer
session layer
transport layer
network layer
data link layer
physical layer
이는 tcp/ip 4계층으로 변환되기도 하는데,
전송 계층은 프로토콜 2개이다.
TCP
UDP
URI는 웹자원에 대한 식별자로, URL(location)보다 광범위한 개념이다.
우리가 접속하는 웹의 주소가 URI인데 크게는
scheme/host/port/path/query 로 나뉘어져 있다.
scheme: 사용하는 프로토콜 - http,https,ftp
host: 호스트명이나 도메인명, IP주소 - localhost,naver.com, 200.1.1.1 등
path: 리소스의 경로 - user/premium , image/dog/husky
query: 리소스에 대한 parameter로 ?로 시작해 여러개면 &로 연결
hyper text transfer protocol. 텍스트,이미지,영상등의 자원을 전송하는 프로토콜이다.
http는 기본적으로 아래의 특징을 갖는다.
start-line : 요청/응답의 자원이나 상태가 작성
ex) HTTP/1.1 200 OK , GET/search?q=hi&...
header : http전송에 필요한 부가정보 기록/ 메세지 바디의 크기,요청타입 등
임의의 헤더도 추가 가능
ex) Content-Type: application/json , Authorization: BASIC xxxxxx
CRLF: header와 body를 구분
body: 전송할 데이터가 들어감: html,이미지,json등 다양한 타입
요청에 대한 서버측으로부터의 상태를 보여줌
암호화 기반 인터넷 보안 프로토콜로, HTTPS에서 사용한다.
SSL,TLS는 인증서가 있는 웹사이트만 실행할 수 있다.
이 인증서가 없다면 https를 사용할 수 없다.
세션은 서버측 메모리,db에 사용자 정보를 저장하기에 필연적으로 공간을 차지, 성능을 저하하는 부분이 있다. 이를 암호화/복호화를 이용해 정보를 검증하는 jwt로 보완할 수 있다.
jwt에 대해 더 생각해 볼 점은 header,payload는 디코딩하면 누구나 볼 수 있는 정보이기에 변경할 시 알아챌 수 있더라도 정보가 노출되기는 한다는 것이다. 때문에 payload의 정보 또한 서버만 알아볼 수 있는 방식으로 작성되는 게 보안적으로는 좋을 듯 하다.