CS
[CS] 웹 요청 전체 과정 정리하기
kiritoni
2025. 6. 11. 00:08
반응형
학생이 노트북을 학교 캠퍼스 네트워크에 연결하고 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
반응형