[CS] 웹 요청 전체 과정 정리하기

2025. 6. 11. 00:08·CS
반응형

 

학생이 노트북을 학교 캠퍼스 네트워크에 연결하고 www.google.com을 요청한다고 해보자!  

과정을 1단계에서 4단계까지 정리해보자. 

 

1단계: 인터넷 연결 - DHCP (Dynamic Host Configuration Protocol)

상황

  • 노트북이 네트워크에 연결되었지만, IP주소가 없다. 
  • First-hop router(게이트웨이) 주소를 모른다. 
  • DNS 서버 주소를 모른다. 

 

네트워크 연결을 하기 위해서는 위 세 가지 정보가 필요하다. 

 

DHCP 과정

1. DHCP Discover

  • Application Layer: DHCP Discover 메시지를 생성한다. 
  • Src: 0.0.0.0:68 -> Dest: 255.255.255.255:67
  • 전송 방식: Broadcast (모든 장치에게 전송한다.) 
  • 캡슐화 과정
    • Transport Layer: UDP segment로 encapsulation
    • Network Layer: IP datagram으로 encapsulation
    • Link Layer: Ethernet frame으로 encapsulation
    • Physical Layer를 거쳐서 전송

2. DHCP Offer

DHCP의 포트 번호는 client(68), server(67)이다. 

 

  • 서버 측 처리: Physical -> Link -> Network -> Transport -> Application Layer
  • 각 계층에서 demultiplexing 수행
  • 헤더 확인 후 payload를 상위 계층으로 전달해준다. 
  • DHCP 서버 응답
  • Src: DHCP 서버 IP:67 -> Dest: 255.255.255.255:68
  • 사용 가능한 IP주소를 포함하여 DHCP Offer를 전송한다. 

 

3. DHCP Request

  • 클라이언트 측: demultiplexing을 통해 DHCP Offer를 수신
  • 제안받은 IP주소를 사용하겠다는 DHCP Request 전송
  • Src: 0.0.0.0:68 (아직 IP주소 확정 전이기 때문)

 

4. DHCP ACK

  • 서버 최종 응답: 
  • DHCP 서버가 다음 정보를 포함한 응답 전송: 클라이언트 IP주소, First-hop-router(게이트웨이) IP주소, DNS 서버 이름과 IP 주소

 

결과적으로 클라이언트가 네트워크 연결에 필요한 정보들을 획득했다. 

 

 

2단계: 도메인 이름 해석을 위한 준비 - ARP (Address Resolution Protocol)

 

✅ ARP 이 왜 필요할까?
DNS 쿼리를 보내려면, 게이트웨이를 통해야 한다. 
지금은 IP주소는 알았지만 MAC 주소를 모른다. 
Link Layer에서 실제 전송을 위해서는 MAC주소가 필요하다. 

 

 

ARP으로 MAC주소를 찾을 수 있다. 

 

1. ARP Query 브로드캐스트

  • First-hop router의 IP주소를 포함한 ARP 쿼리를 생성한다. 
  • 게이트웨이 IP주소의 MAC 주소가 뭔가요?라고 LAN상의 모든 장치에게 브로드캐스트한다. 

2. ARP Reply

  • 해당 라우터가 ARP 패킷을 수신하고, Link Layer에서 처리한다.
  • 라우터의 MAC 주소가 담긴 frame을 unicast로 클라이언트에게 전송한다. 

 

결과적으로, 클라이언트가 게이트웨이의 MAC주소를 획득한다. 
이제 DNS 쿼리를 포함한 프레임을 전송할 수 있게 되었다. (준비 완료!)

 

Braodcast: 모든 장치에게 전송 (DHCP Disvoer, ARP Query)
Unicast: 특정 장치에만 전송(일반적인 통신)

 

 

3단계: 도메인 이름 해석 - DNS(Domain Name System)

DNS 쿼리 과정

1. DNS 쿼리 생성

  • www.google.com의 IP주소가 뭔가요? 
  • Application Layer에서 DNS 쿼리를 생성한다. 
  • Application -> UDP -> IP -> Ethernet Frame으로 캡슐화된다. 

2. 프레임 전송

  • 이제 게이트웨이 MAC주소를 알고있기 때문에 frame을 전송할 수 있다. 
  • LAN Switch -> first-hop router -> DNS 서버

3. 라우팅

  • 여러 라우터를 거쳐 DNS 서버에 도달한다.
  • 라우팅 프로토콜 (RIP, IS-IS, BGP)기반 라우팅 테이블을 사용한다.

3. DNS 응답

  • DNS 서버가 www.google.com의 IP주소로 응답한다.  
  • DNS 서버에서 demultiplexing: Ethernet -> IP -> UDP -> DNS
  • Iterative 또는 Recursive 쿼리 처리

 

✅ 캡슐화(Encapsulation)란?
Application Layer Data
↓
UDP/TCP Segment (Transport Layer)
↓
IP Datagram (Network Layer)
↓
Ethernet Frame (Link Layer)
↓
Physical Layer

 

✅ 디멀티플렉싱 (Demultiplexing)이란?
수신된 데이터가 프로토콜 스택을 거슬러 올라가는 과정이다. Ethernet -> IP -> UDP -> DNS 으로 각 레이어에서 헤더를 제거하고 상위 레이어로 전달된다. 
Physical Layer
↓
Ethernet Frame → Link Layer (헤더 제거)
↓
IP Datagram → Network Layer (헤더 제거)
↓
UDP/TCP Segment → Transport Layer (헤더 제거)
↓
Application Data → Application Layer

 

 

4단계: TCP 연결 설정 - 3-Way Handshake

TCP 연결 과정

1. SYN 전송

  • 클라이언트가 웹서버에게 연결을 요청한다. 
  • SYN 세그먼트가 여러 라우터를 거쳐 서버에 도달한다. 

2. SYN-ACK 응답

  • 서버가 SYN 수신 후, SYN-ACK으로 응답한다. 
  • 클라이언트가 SYN-ACK을 수신하며 ESTABLISHED 상태로 전환된다. 

3. ACK 전송

  • 클라이언트가 ACK을 보내서 연결을 완료한다. 
  • 서버가 ACK을 수신하며 ESTABLISHED 상태로 전환된다. 

 

TCP 연결 설정을 완료했다. 즉, 안정적인 데이터 전송 채널을 확보하게 되었다. 

 

5단계: HTTP 요청/응답

HTTP 통신

1. HTTP Request

  • 웹페이지 요청을 HTTP 메시지로 생성한다.
  • TCP 소켓을 통해 전송한다. 
  • IP 데이터그램으로 www.google.com까지 라우팅한다.  

2. HTTP Response

  • 웹서버가 웹페이지 내용을 HTTP 응답으로 전송한다.
  • IP 데이터그램으로 클라이언트까지 라우팅한다. 

 

결과적으로 웹 페이지가 최종적으로 화면에 표시되었다. 

 

✅ 각 계층별 프로토콜과 역할
Application Layer: HTTP, DNS, DHCP
Transport Layer: TCP, UDP
Network Layer: IP, ARP
Link Layer: Ethernet

 

✅ DHCP vs DNS에서의 ARP 사용
DHCP: 목적지를 모르기 때문에 브로드캐스트, ARP을 쓸 필요가 없고 쓸 수가 없다! (어디로 갈 지 몰랐기 때문에)
DNS: 게이트웨이 주소를 알고 있으므로 ARP으로 MAC주소를 획득해야 한다. (DHCP에서 이미 IP주소를 획득했지만 MAC주소는 몰랐다.)

 

 

 

[참고자료] 컴퓨터네트워킹 하향식 접근 제 8판, James F. Kurose, Keith W.Ross

반응형

'CS' 카테고리의 다른 글

DHCP client-server 시나리오 (초-카와이 교수님이 강의실에서 대학원생을 찾는 건에 대하여, 브로드캐스트지만 사랑만 있으면 상관없잖아?)  (0) 2025.06.09
[인덱스 채우기] 인덱스란?, B-Tree(+B+Tree), 클러스터 인덱스  (0) 2025.05.09
잘못된 보안 설정  (1) 2024.09.18
입력 값 조작 공격  (3) 2024.09.18
'CS' 카테고리의 다른 글
  • DHCP client-server 시나리오 (초-카와이 교수님이 강의실에서 대학원생을 찾는 건에 대하여, 브로드캐스트지만 사랑만 있으면 상관없잖아?)
  • [인덱스 채우기] 인덱스란?, B-Tree(+B+Tree), 클러스터 인덱스
  • 잘못된 보안 설정
  • 입력 값 조작 공격
kiritoni
kiritoni
안녕하세요, cool & soft한 백엔드 개발자가 되고싶은 토니입니다!
    반응형
  • kiritoni
    Code Art Online
    kiritoni
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 경험 모음집 (5)
      • Spring Boot (9)
      • Java (0)
      • JPA (0)
      • Server (13)
      • CS (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    로드밸런서
    보안
    CS
    알고리즘
    pfsense
    springSecurity
    backend
    kdt
    해커톤
    Spring
    백준
    be
    서버
    docker
    웹
    AUSG
    고용노동부
    network
    server
    ubuntu
    구름톤딥다이브
    구름톤
    nlb
    Linux
    빅챗
    Spring boot
    java
    gdgoc
    springboot
    JPA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
kiritoni
[CS] 웹 요청 전체 과정 정리하기
상단으로

티스토리툴바