HTTP 와 HTTPS 의 차이
HTTPS 는 HTTP 에 보안 계층을 추가한 것이다.
HTTPS 는 제 3자 인증, 공개키 암호화, 비밀키 암호화를 사용한다.
HTTP/1.0
- keep-alive
HTTP/1.1
- persistent connection
- pipeline
HTTP/2.0
HTTP 메서드
GET
GET 요청은 서버에 존재하는 데이터를 요청하는 것이다.
일반적으로 Request Body 를 입력하지 않으며 레거시 시스템의 경우 요청을 받아들이지 않을 수 있다.
캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청이 맞지 않을 수 있다.
POST
POST 요청은 서버에 정보를 생성하는 것을 요청하는 것이다.
과거 HTTP 통신은 POST 요청으로 데이터 수정, 삭제도 모두 수행했다.
POST 요청은 상태를 변화시키기 때문에 멱등성이 보장되지 않는다.
보통 Request Body 에 요청하는 데이터를 담아 전송한다.
PUT
PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성한다.
DELETE
DELETE 요청은 서버에 데이터를 제거할 것을 요청한다.
존재하지 않아도 동일하게 동작한다.
PATCH
PATCH 요청은 서버에 존재하는 데이터를 일부 수정한다.
SSL handshake
클라이언트는 TCP 3 way handshake 를 수행한 후 Client Hello 를 전송한다.
서버는 인증서를 보낸다.
클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인한다.
이 인증서는 인증기관의 개인키로 암호화 되어있고 공개키로 검증할 수 있다.
클라이언트는 사이트의 정보와 서버의 공개키를 얻을 수 있다.
서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보낸다.
서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호회되어 통신한다.