HTTP, HTTPS
👉 HTTP(HyperText Transfer Protocol)
# 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜(규약, 약속)
* 특징 :
- 단방향성 : 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다.
- 비연결성 : 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료.
(실시간 통신을 할 수 없다.)
* 문제점
- HTTP는 평문 통신이기 때문에 도청이 가능.
- 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능.
- 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능.
👉 HTTP 메소드(Method)
# HTTP 메소드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
* 주요 메서드
- GET : 보통 `리소스를 조회`할 때 사용하며, 서버에 전달하고 싶은 `데이터는 query를 통해서 전달`한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.
- POST : 주로 `리소스를 새롭게 생성`할 때 사용하며, 서버에 전달하고 싶은 `데이터는 메시지 바디를 통해 전달`.
- PUT : `리소스가 있으면 대체`하고 `리소스가 없으면 생성`한다. 즉, 데이터를 덮어쓴다.
- PATCH : PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 `리소스를 일부분만 변경`할 때 사용.
- DELETE : `리소스를 제거`할때 사용.
* 메소드 속성
- 안전(Safe Methods) : 계속 호출해도 리소스를 변경하지 않는 특성
- 멱등(Idempotent Methods) : 동일한 요청을 여러 번 보내도 한 번 보내는 것과 똑같은 결과를 갖는 것
Get, PUT, DELETE는 멱등하다고 볼 수 있지만, POST나 PATCH는 멱등하다고 볼 수 없다.
- 캐시가능(Cacheable Methods) : 응답 결과를 서버에 캐시 해서 사용해도 되는 메소드
GET, HEAD, POST, PATCH가 캐시가 가능하지만 구현이 어려워 실제로는 GET과 HEAD만 주로 캐싱이 쓰임.
👉 HTTP 통신흐름
1. 웹 브라우저에 www.naver.com 입력.
2. 사용자가 입력한 URL 주소 중 **도메인 네임 부분을 DNS 서버에 검색**하고, DNS서버에서 해당 도메인 네임에 해당하는 **IP주소를 찾아온다.**
3. HTTP 프로토콜을 사용하여 페이지 URL정보와 찾아온 IP주소를 포함하는 **HTTP 요청 메세지를 생성**하고, 생성된 HTTP 요청 메세지는 **TCP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 컴퓨터로 전송**된다.
4. HTTP 요청 메세지를 받은 컴퓨터(서버)는 **웹 페이지 URL 정보 중 PATH와 HTTP Method에 맞는 액션을 취한다.** (여기서는 naver 페이지를 띄우기 위해 필요한 html 등의 리소스를 찾을 것이다.)
5. 생성된 응답 데이터는 또 다시 HTTP 프로토콜을 사용하여 **HTTP 응답 메세지로 만들어지고** TCP 프로토콜을 사용하여 인터넷 망을 통해 **요청했던 컴퓨터(클라이언트)로 전송**된다.
6. 도착한 HTTP 응답 메세지는 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력되어 **사용자가 볼 수 있게 된다.
# 브라우저 렌더링 과정
1~4. HTML 파일과 CSS 파일을 파싱해서 DOM Tree*, CSSOM Tree*를 만든다. (Parsing)
5. 두 Tree를 결합하여 Rendering Tree*를 만든다. (Style)
6. Rendering Tree에서 각 노드의 위치와 크기를 계산한다. (Layout)
7. 계산된 값을 이용해 각 노드를 화면상의 실제 픽셀로 변환하고, 레이어를 만든다. (Paint)
8. 레이어를 합성하여 실제 화면에 나타낸다. (Composite)
# DOM Tree, CSSOM Tree, Render Tree
👉 HTTPS : HTTP(HyperText Transfer Protocol)의 보안(Secured)버전
# SSL/TLS 프로토콜을 사용해 HTTP를 암호화하여 주고 받을 때 쓰는 통신 프로토콜
# 대칭키
- 암호화, 복호화에 사용되는 키가 동일하다.
- 대표적인 알고리즘으로는 DES, 3DES, AES, SEED, ARIA 등
- 비대칭키 : 암호화, 복호화에 사용되는 키가 다르다.
- 장점 : 수행 시간이 짧음
- 단점 : 안전한 키교환 방식이 요구됨, 사람이 증가할수록 키관리가 어려워짐
# 비대칭키 (전자 서명, 메세지 송신에 주로 사용)
- 암호화, 복호화에 사용되는 키가 다르다.
- 장점 : 보안성이 뛰어나다
- 단점 : 구현하기가 어렵고 암호화 및 복호화 속도가 느리다.
# SSL/TLS Handshake
0. 서비스를 서빙하는 서버가 CA로부터 CA 인증서를 발급받는다. [인증서 기간 만료까지 1회성]
🙋♂️ 소감 :
HTTP와 HTTPS의 차이점이 단순히 보안성이라고는 단순히 알고 있었는데,
개념적인 부분을 배울 수 있는 강의여서 좋았다.
검색해보니 구글은 계속해서 HTTP 를 HTTPS로 교체하고 있고,
크롬의 주소창 앞에 붙은 자물쇠 모양의 아이콘이 HTTPS 때문이라는걸 알게 되었다.ㅎㅎ
😈 아는 내용이라고 그냥 넘어가지 않기! 😈
'❤️🔥TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2022-11-30(23day) (0) | 2022.11.30 |
---|---|
[TIL] 2022-11-29(22day) (0) | 2022.11.29 |
[TIL] 2022-11-25(20day) (0) | 2022.11.27 |
[TIL] 2022-11-24(19day) (0) | 2022.11.24 |
[TIL] 2022-11-23(18day) (0) | 2022.11.23 |
댓글