1. 클라이언트 요청 (Client Request)

클라이언트(예: 웹 브라우저)는 사용자가 URL을 입력하거나 링크를 클릭할 때 GET 요청을 생성합니다. 이 요청에는 요청 메서드(GET), 요청 URL, HTTP 버전, 그리고 여러 HTTP 헤더가 포함됩니다.

2. DNS 조회 (DNS Lookup)

클라이언트는 URL에 포함된 도메인 이름(예: www.example.com)을-jy1s/) IP 주소로 변환하기 위해 DNS 조회를 수행합니다. 이 과정은 다음과 같습니다:

  1. 클라이언트는 로컬 DNS 캐시를 확인하여 IP 주소를 찾습니다.
  2. 캐시에 없다면, 클라이언트는 ISP의 DNS 서버에 질의합니다.
  3. DNS 서버는 계층적 DNS 시스템을 통해 도메인의 IP 주소를 조회하고 클라이언트에게 반환합니다.

3. TCP 연결 수립 (TCP Connection Establishment)

클라이언트는 얻은 IP 주소를 사용하여 웹 서버와 TCP 연결을 수립합니다. 이 과정은 3-way 핸드셰이크로 이루어집니다:

  1. 클라이언트가 서버에 SYN 패킷을 보냅니다.
  2. 서버가 SYN-ACK 패킷으로 응답합니다.
  3. 클라이언트가 ACK 패킷을 보내면 연결이 수립됩니다.

4. 요청 전송 (Sending the Request)

TCP 연결이 수립되면, 클라이언트는 GET 요청을 웹 서버로 전송합니다.

이 요청은 HTTP 프로토콜을 사용하여 전송됩니다.

5. 서버 소프트웨어가 요청 수신 (Server Software Receives the Request)

웹 서버 소프트웨어(예: Apache, Nginx, IIS)는 지정된 포트(보통 HTTP는 80, HTTPS는 443)에서 들어오는 요청을 수신합니다.

6. 요청 처리 (Request Processing)

웹 서버 소프트웨어는 요청을 처리합니다. 이 과정은 여러 단계로 나뉩니다:

6.1. 요청 파싱 (Request Parsing)