본문 바로가기
네트워크

총정리: 웹페이지 요청에 대한 처리 과정

by 학식러 2023. 5. 5.

 

 

학생 밥이 학교의 이더넷 스위치에 랩톱을 연결하고 www.google.com을 다운로드 하는 과정을 보자.

 

 

6.7.1 시작하기: DHCP, UDP, IP 그리고 이더넷

밥은 랩톱을 켠 후 학교 이더넷 스위치에 연결되어 있는 이더넷 케이블에 연결한다.

 

학교 라우터는 ISP comcast.net에 연결되어 있고, comcast.net 은 이 학교에 DNS 서비스를 제공하며, DNS 서버는 학교 네트워크가 아닌 컴캐스트 네트워크에 있고 DHCP 서버는 라우터에서 실행되고 있다고 가정하자.

 

1) 밥의 랩톱 운영체제는 DHCP 요청 메시지를 만들어서 이 메시지를 목적지 포트 67(DHCP 서버)과 출발지 포트 68(DHCP 클라이언트)을 갖는 UDP 세그먼트에 넣는다. 이 UDP 세그먼트는 브로드캐스트 IP 목적지 주소(255.255.255.255)와 출발지 IP 주소 0.0.0.0(랩톱이 아직 IP가 없기 때문에)을 갖는 IP 데이터그램에 들어간다.

2) DHCP 요청 메시지를 포함한 IP 데이터그램은 이더넷 프레임에 들어간다. 스위치에 연결된 모든 장치에 이 프레임이 브로드캐스트될 수 있도록 이더넷 프레임의 목적지 MAC 주소는 FF:FF:FF:FF:FF:FF로 설정된다. 이 프레임의 출발지 MAC 주소는 밥 랩톱의 MAC 주소인 00:16:D3:23:68:8A 가 된다.

 

 

3) DHCP 요청 메시지를 포함한 브로드캐스트 이더넷 프레임은 밥의 랩톱이 처음으로 이더넷 스위치에 전송한 프레임이다. 스위치는 자신의 모든 출력 포트로 브로드캐스트 한다. 이때, 자가학습을 통해 스위치 테이블을 갱신한다.

 

4) 라우터는 MAC 주소 00:22:6B:45:1F:1B 인 인터페이스로 DHCP 요청 메시지가 포함된 브로드캐스트 이더넷 프레임을 수신하고, 이더넷 프레임으로부터 IP 데이터그램을 추출한다. 데이터그램의 브로드캐스트 IP 목적지 주소는 이 IP 데이터그램이 노드의 상위 계층 프로토콜에 의해 처리되어야함을 의미한다. 이렇게 함으로써 데이터그램의 UDP 세그먼트가 UDP로 역다중화되고, UDP 세그먼트로부터 DHCP 요쳥 메시지가 추출되고 DHCP 서버는 요청 메시지를 갖게된다.

 

5) 라우터에서 실행되고 있는 DHCP 서버가 CIDR 블록 68.85.2.0/24 에 있는 IP 주소들을 할당할 수 있다고 하자. DHCP 서버는 밥의 랩톱에게 주소 68.85.2.101을 할당했다고 가정하자. DHCP 서버는 이 IP 주소와 DHCP 서버의 IP 주소, 디폴트 게이트웨이 라우터의 IP 주소,서브넷 블록을 포함하는 DHCP ACK 메시지를 만든다. 이 메시지는 UDP 세그먼트에 들어가고 세그먼트는 IP 데이터그램으로 들어가고 데이터그램은 이더넷 프레임으로 들어간다. 이더넷 프레임은 출발지 MAC 주소로 홈 네트워크로의 라우터 인터페이스의 MAC 주소를, 목적지 MAC 주소로 밥 랩톱의 MAC 주소를 갖는다.

 

6) DHCP ACK 메시지를 포함한 이더넷 프레임은 라우터에 의해 스위치로 전송된다(유니캐스트). 스위치는 자가학습을 하며 밥의 랩톱으로부터 DHCP 요청 메시지를 포함한 이더넷 프레임을 수신했었기 때문에 00:16:D3:23:68:8A를 목적지로 하는 프레임을 밥의 랩톱으로 가는 출력 포트로 전달할 수 있다.

 

7) 밥의 랩톱은 DHCP ACK 메시지를 수신한 후 이더넷 프레임으로부터 UDP 세그먼트를 추출하고 DHCP ACK 메시지를 추출한다. 밥의 DHCP 클라이언트는 자신의 IP 주소와 DNS 서버의 IP 주소를 기록한다. 또한 IP 포워딩 테이블에 디폴트 게이트웨이의 주소를 저장한다. 밥의 랩톱은 자신이 속한 서브넷의 외부를 목적지 주소로 하는 모든 데이터그램을 디폴트 게이트웨이로 보내게된다.

 

 

6.7.2 여전히 시작하기: DNS와 ARP

www.google.com IP주소 알아내기

8) 랩톱 운영체제는 DNS 질의 메시지를 생성하며, 이때 DNS 질의 메시지의 질문 부분에 www.google.com을 넣는다. DNS 질의 메시지는 목적지 포트가 53(DNS 서버)인 UDP 세그먼트에 들어간다. UDP 세그먼트는 목적지 IP 주소 68.87.71.226(DHCP ACK 메시지에 들어 있던 DNS 서버의 주소)로 하여 IP 데이터그램에 들어간다.

 

9) 만들어진 이더넷 프레임은 밥의 학교 네트워크에 있는 게이트웨이 라우터로 보내진다. 밥의 랩톱이 학교 게이트웨이 라우터의 IP 주소를 DHCP ACK 메시지를 통해 알고 있긴 하지만 MAC 주소는 모르므로 ARP 프로토콜을 사용한다.

 

10) 밥의 랩톱은 목표 IP주소 68.87.2.1 을 포함한 ARP 질의 메시지를 생성하며 이 메시지는 브로드캐스트 목적지 주소 FF:FF:FF:FF:FF:FF를 갖는 이더넷 프레임에 포함되어 스위치로 전송된다. 스위치는 게이트웨이 라우터를 포함한 모든 연결된 장치로 프레임을 전달한다.

 

11) 게이트웨이 라우터는 학교 네트워크로의 인터페이스를 통해 프레임을 수신하고, ARP 메시지로부터 목표 IP 주소 68.85.2.1을 찾아서 자신의 인터페이스의 IP 주소와 일치하는 것을 알게 된다. 따라서 게이트웨이 라우터는 68.85.2.1 에 대응하는 MAC주소를 포함하는 ARP 응답 메시지를 만든다. 목적지 주소를 랩톱의 MAC주소로 하여 이더넷 프레임에 넣어 스위치로 보내며, 스위치는 이를 랩톱으로 전달한다.

 

12) 밥의 랩톱은 프레임을 수신해서 게이트웨이 라우터의 MAC주소를 추출한다.

 

13) 랩톱은 게이트웨이 라우터의 MAC 주소로 DNS 질의 메시지가 포함된 이더넷 프레임을 보낼 수 있다.  프레임에 포함된 IP 데이터그램의 IP 목적지 주소는 DNS 서버이다. 랩톱은 프레임을 스위치로 보내고, 스위치는 프레임을 게이트웨이 라우터로 전달한다.

 

 

6.7.3 여전히 시작하기: DNS 서버로의 인트라 도메인 라우팅

14) 게이트웨이 라우터는 프레임을 받아서 DNS 질의가 포함된 IP 데이터그램을 추출한다. 라우터는 데이터그램의 목적지 주소 68.87.71.226  포워딩 테이블에서 찾아 데이터그램을 컴캐스트의 라우터로 보내야 한다는 사실을 알게되고, 학교 라우터를 컴캐스트의 라우터로 연결해주는 링크에 적합한 링크 계층 프레임에 IP 데이터그램을 넣은 후, 프레임을 해당 링크로 전송한다.

 

15) 컴캐스트의 좌측 상단 라우터는 프레임을 수신한 후, IP 데이터그램을 추출해서 데이터그램의 목적지 주소와 포워딩 테이블(인터넷의 인터 도메인 프로토콜인 BGP RIP,OSPF, IS-IS 같은 컴캐스트의 인트라 도메인 라우팅 프로토콜에 의해 결정됨)로 부터 데이터그램을 DNS 서버로 전달할 출력 인터페이스를 결정한다.

 

16) IP 데이터그램이 DNS 서버에 도착하고, DNS 서버는 DNS 질의 메시지를 추출한 후 DNS 데이터베이스에서 www.google.com 에 해당하는 IP주소를 포함하는 DNS 자원 레코드를 찾는다. DNS 서버는 DNS 응답 메시지를 만들어서 UDP 세그먼트를 만들고 데이터그램을 만들어 밥의 랩톱을 목적지로 하여 보낸다,

: DNS 서버에 캐싱되어 있다고 가정하자. google.com에 대해 책임 DNS 서버가 캐싱 데이터를 준 것이다.

 

17) 밥의 랩톱은 DNS 메시지로부터 www.google.com IP 주소를 추출한다.

 

 

6.7.4 웹 클라이언트 - 서버 상호작용: TCP와 HTTP

18) 밥의 랩톱은 먼저 목적지 포트 80(HTTP)을 갖는 TCP SYN 세그먼트를 생성하고, TCP 세그먼트를 목적지 주소가 64.233.169.105(www.google.com)인 IP 데이터그램에 넣은 후 MAC 주소가 게이트웨이 라우터인 프레임에 넣어서 이 프레임을 스위치로 전송한다.

 

19) 학교 네트워크, 컴캐스트 네트워크, 구글 네트워크에 있는 라우터들은 TCP SYN 세그먼트를 포함하는 데이터그램을 14~16단계 처럼 자신의 포워딩 테이블을 사용해서 www.google.com 쪽으로 전달한다. 컴캐스트와 구글 네트워크 사이의 도메인 간 링크상으로 패킷을 전달하는 데 사용되는 라우터의 포워딩 테이블 엔트리는 BGP 프로토콜에 의해 결정된다.

 

20) TCP SYN 세그먼트를 포함하고 있는 데이터그램이 www.google.com 에 도착한다. TCP SYN 메시지는 포트 80과 연관된 환영 소켓으로 역다중화 된다. 연결 소켓은 구글 HTTP 서버와 밥 랩톱 사이의 TCP 연결을 위해 생성된다. TCP SYNACK 세그먼트를 생성해서 밥의 랩톱을 목적지로 하는 데이터그램에 넣은 후 www.google.com 을 첫 홉 라우터로 연결해주는 링크에 적합한 링크 계층 프레임에 넣는다.

 

21) TCP SYNACK 세그먼트가 포함된 데이터그램은 구글, 컴캐스트, 학교 네트워크를 통해 밥 랩톱의 이더넷 컨트롤러에 도착한다. 이 데이터 그램은 18단계에서 생성된 TCP 소켓으로 역다중화된다.

 

22) 밥의 브라우저는 가져올 URL이 포함된 HTTP GET 메시지를 생성하고 이를 소켓으로 보내며 이 메시지는 TCP 세그먼트의 페이로드가 된다. 이 TCP 세그먼트를 데이터그램에 넣어 18~20단계에서 처럼 www.google.com  로 전달한다.

 

 

23) www.google.com 에 있는 HTTP 서버는 TCP 연결 소켓으로부터 HTTP GET 메시지를 읽고 HTTP 응답 메시지를 생성하고 요청된 웹 페이지의 콘텐츠를 HTTP 응답 메시지 body에 포함시켜서 TCP 소켓으로 보낸다.

 

24) HTTP 응답 메시지는 밥의 랩톱에 전달되고, 밥의 웹 브라우저 프로그램은 소켓에서 HTTP 응답 메시지를 읽어서, body로부터 웹페이지에 대한 html을 추출한 후 마침내 웹 페이지를 출력한다.

 

댓글