HTTP 요청의 생애 주기
1. 클라이언트가 요청을 보냄
- 
HTTP 요청 생성: 클라이언트(보통 웹 브라우저)가 HTTP 요청을 생성함.
- 
HTTP 메서드: GET, POST 등.
- 
요청된 리소스: 예를 들어 /index.html.
- 
프로토콜 버전: HTTP/1.1 등.
- 
헤더와 본문: key: value형식의 헤더와 선택적 메시지 본문 포함.
2. DNS 조회
- 
도메인 이름 변환: 사람이 읽을 수 있는 도메인 이름(www.example.com)을 IP 주소(93.184.216.34)로 변환함.
- 
DNS 서버 쿼리: 클라이언트가 DNS 서버에 쿼리를 보내 도메인 이름을 IP 주소로 변환함.
3. TCP 핸드셰이크
- 
TCP 연결 설정: 클라이언트가 서버와 TCP 연결을 설정함.
- 
3단계 핸드셰이크:
- 
SYN: 클라이언트가 연결 요청을 보냄.
- 
SYN-ACK: 서버가 요청을 확인함.
- 
ACK: 클라이언트가 확인 응답을 보냄.
 
4. HTTP 요청 전송
- 
HTTP 요청 전송: TCP 연결이 설정되면 클라이언트가 실제 HTTP 요청을 보냄.
5. 인터넷을 통한 패킷 라우팅
- 
패킷 전송: 데이터 패킷이 여러 네트워크 장치를 통해 서버로 라우팅됨.
- 
라우터 역할: 라우터가 패킷의 최적 경로를 결정함.
6. 서버 응답
- 
HTTP 응답 생성: 서버가 HTTP 요청을 처리하고 응답을 생성함.
- 
응답 내용:
- 
프로토콜: 사용된 HTTP 버전.
- 
상태 정보: HTTP 상태 코드(예: 200, 404).
- 
응답 헤더: 요청 헤더와 유사함.
- 
응답 본문: 요청된 콘텐츠(예: HTML 페이지, JSON 데이터).
 
7. 콘텐츠 렌더링
- 
HTTP 응답 처리: 클라이언트가 HTTP 응답을 받아 처리함.
- 
브라우저 렌더링: 브라우저가 HTML을 해석하고 화면에 콘텐츠를 렌더링함.
- 
추가 리소스 요청: 이미지, CSS, JavaScript 등의 추가 리소스를 요청함.
HTTPS = HTTP + 암호화
TLS 핸드셰이크
- 
TLS 핸드셰이크: 클라이언트와 서버가 암호화 및 인증 키를 교환함.
- 
암호화 통신: TLS 핸드셰이크 후, 클라이언트와 서버는 HTTP를 사용하여 암호화된 메시지를 주고받음.
TLS 1.3 핸드셰이크
- 
간소화된 과정: TLS 1.3은 더 적은 옵션을 제공하여 더 간단하고 안전하며 빠름.
- 
핵심 단계:
- 
클라이언트 헬로: 클라이언트가 지원하는 암호화 스위트와 TLS 버전을 서버에 보냄.
- 
서버 헬로: 서버가 선택한 암호화 스위트와 TLS 버전을 클라이언트에 보냄.
- 
인증서 검증: 클라이언트가 서버의 SSL 인증서를 검증함.
- 
프리마스터 시크릿 생성: 클라이언트가 프리마스터 시크릿을 생성하고 서버에 보냄.
- 
세션 키 생성: 클라이언트와 서버가 세션 키를 생성함.
- 
보안 통신: 세션 키를 사용하여 보안 대칭 암호화를 통해 통신함.
 
GN⁺의 의견
- 
인터넷 통신 이해: HTTP와 HTTPS의 기본 개념을 이해하면 네트워크 통신의 기초를 잘 다질 수 있음.
- 
보안 중요성: HTTPS를 통해 데이터 전송의 보안성을 높이는 것이 중요함.
- 
TLS 1.3의 장점: 더 간단하고 빠르며 안전한 TLS 1.3을 사용하는 것이 권장됨.
- 
실무 적용: 실제 프로젝트에서 HTTPS를 적용하여 보안성을 강화할 필요가 있음.
- 
추가 학습: 네트워크 계층과 프로토콜에 대한 추가 학습을 통해 더 깊은 이해를 얻을 수 있음.