6P by neo 2달전 | favorite | 댓글 1개

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를 적용하여 보안성을 강화할 필요가 있음.
  • 추가 학습: 네트워크 계층과 프로토콜에 대한 추가 학습을 통해 더 깊은 이해를 얻을 수 있음.
Hacker News 의견
  • 네트워크 문제 발생 시 어디서 문제가 생겼는지 알기 어려운 이유에 대한 질문. 네트워크 경로가 비결정론적이라는 설명이 설득력이 없다고 느끼는 의견.
  • TLSv1.2와 TLSv1.3에 대한 상세하고 인터랙티브한 예제를 추천하는 의견. 링크 제공.
  • "ELI(a mediocre engineer)" 스타일의 설명이 유익하다는 의견. 더 많은 예제를 찾고 싶어 함.
  • SHA256 서명 검증 코드 예제를 찾고 있는 사람의 요청. 이론은 알지만 구현에 어려움을 겪고 있음.
  • 샌프란시스코에서 HTTP 요청 작성으로 연봉 $300K를 받는다는 부분이 기사에서 가장 좋았다는 의견.
  • 클라이언트가 서버의 공개 키로 프리마스터 시크릿을 암호화해 보내는 것은 오래된 정보라는 의견.
  • SSL 인증서가 개인 키를 포함한다는 설명에 대한 의문. "Mediocre Engineer"라는 제목에 맞는 설명이라는 의견.
  • 연봉 $300K를 $50K 낮춰서 일하고 싶다는 농담. TLS <1.3 설명이 잘못되었다는 지적.
  • 기사 내용이 오래되었고, 현재 웹 요청의 30%가 HTTP3와 CORS를 사용한다는 의견. 출판 날짜가 없다는 지적.
  • HTTPS 설명이 AI 요약처럼 보인다는 의견. 용어 설명이 부족하고, 독자가 공개 키 암호화에 대해 알고 있다고 가정함. OSI 계층 설명이 불완전하다는 지적.