새벽을 밝히는 붉은 달

[Network] 웹사이트에 접속하는 과정 본문

Computer Science/Computer Network

[Network] 웹사이트에 접속하는 과정

자윰 2023. 10. 21. 14:33

 

3주간 네트워크 책을 읽는 스터디를 했는데, 좀 더 하드웨어에 가까웠던 내용이었어서 소프트웨어 측면에서도 되짚으면 좋을 것 같다는 생각에 이전에 과제로 정리해두었던 글을 남긴다.


Wep pagedownloading하는, 굉장히 simple한 request에서도 이를 만족하기 위해서는 많은 protocol들이 필요하다. 예를 들어보기 위해, 내가 나의 컴퓨터로 집과 연결된 ethernet switch에 연결하고, www.google.com 을 다운받는 상황을 가정해보자. 

DHCP로 IP를 할당받는다

 

내가 나의 desktop으로 network에 연결하였을 때, IP address없이는 아무것도 할 수가 없으므로, DHCP protocol을 실행하여 IP address를 얻는다. 그 과정을 자세히 설명하면 다음과 같다.

 

1. 나의 computerOSDHCP request message를 생성한 후, 이 메시지를 destination port 67 (DHCP server), source port68 (DHCP client)로 설정하여 UDP segment로 실어서 전송한다. 이때, 내 컴퓨터는 IP address를 얻지 못하였기 때문에, UDP segmentbroadcast로 전송할 때 source IP address0.0.0.0으로, IP destination address255.255.255.255로 설정한다.

 

2. DHCP request message를 포함하고 있는 IP datagramEthernet frame에 도착한다. Ethernet frame은 destination MAC addressFF:FF:FF:FF:FF:FF를 가지고 있기 때문에 switch에 연결된 모든 device에게 broadcast로 전송이 된다. 이때, framesource MAC address는 내 컴퓨터의 B4:2E:99:C5:69:D0로 설정이 된다. 

 
내 컴퓨터에서 보낸  DHCP request message

3. Ethernet switch는 내 컴퓨터가 보낸 DHCP request를 contain하는 broadcast Ethernet frame을 받는다. Switch는 들어온 frame을 router와 연결된 port를 포함한 모든 outgoing ports에 broadcast한다.

 

4. RouterMAC addressB4:2E:99:C5:69:D0DHCP requestEthernet frame으로부터 추출된 IP datagram을 포함하는, broadcast로 전송된 Ethernet frame을 받는다. Datagrambroadcast IP destination address는 해당 nodeupper layer protocol에서 process되어야 할 IP datagram을 나타낸다. 따라서 datagrampayloadUDP까지 demultiplexed되고, UDP segment로부터 DHCP request message가 추출된다. 이제 DHCP serverDHCP request message를 가진 상태가 된다.

 

5. DHCP server는 나의 컴퓨터에게 192.168.219.100이라는 IP address를 부여하고, 이 IP address주소와 DNS serverIP address, default로 설정된 gateway routerIP address, network mask를 포함한 DHCP ACK message를 생성한다. 이 DHCP messageUDP segment에, 그리고 IP datagram에, 그리고 Ethernet frame에 포함된다. Ethernet frame은 라우터의 source MAC address와 나의 컴퓨터의 MAC address를 가지고 있다. 

DHCP ACK message에 실린 subnet mask, gateway router 의 IP address, DNS server의 IP address

 

6. Ethernet frameDHCP ACK를 포함하여 router에 의해 switchunicast로 전송된다. Switchself-learning을 하고, 내 컴퓨터로부터 Ethernet frame을 받았었기 때문에, switchframeB4:2E:99:C5:69:D0가 내 컴퓨터로 가야 한다는 것을 알고 있다.

 

7. 내 컴퓨터는 DHCP ACK를 포함하는 Ethernet frame을 받고, 여기서 IP datagram을, 그리고 또 UDP segment를 추출한다.

내 컴퓨터가 받은 DHCP ACK 를 포함하는 Ethernet frame

 

UDP segment에서 DHCP ACK message를 추출한다. 나의 DHCP client가 나의 IP address와 DNS serverIP address를 기록한다. 또한, IP forwarding tabledefault gatewayaddressinstall한다. 내 컴퓨터는 네트워크 구성 요소를 초기화하고 웹 페이지 검색을 시작할 준비가 된 시점에서 서브넷의 외부 목적지 주소를 가진 모든 datagrams를 default gateway로 보내게 된다.

내 컴퓨터가 받은  DHCP ACK message의 자세한 내용

 

ARP로 게이트웨이 라우터의 MAC 주소를 알아온다

내 컴퓨터에서 나의 Web browserwww.google.com을 치면, 매우 복잡한 과정이 일어나 나의 web browsergooglehomepagedisplay된다. 먼저, 내 Web browserTCP socket을 생성하여 www.google.com으로 HTTP request를 보내는 과정을 시작한다. 이때 socket을 생성하기 위해, 내 컴퓨터는 www.google.comIP address를 알아야 한다. 이때, 주어진 이름을 IP addresstranslate해주는 service를 제공하는 DNS protocol이 사용된다.

 

8. 나의 컴퓨터의 OSDNS query message를 생성하고, DNS messagequestion section“www.google.com”이라는 string을 넣는다. 이 DNS messagedestination port53을 가지고 UDP segment에 실린다. UDP segmentIP datagram에 source IP address192.168.219.100, IP destination address로 이전에 DHCP ACKreturnDNS server의 주소인 61.41.153.2로 설정이 된다.

 

9. 내 컴퓨터는 Ethernet frameDNS query message를 포함한 datagram을 내가 속한 networkgateway router로 전송이 된다. 이때, 이전의 DHCP ACK message를 통해 내가 속한 netwrok의 gateway routerIP address를 알지만, gateway routerMAC address는 모른다. 따라서 gateway routerMAC address를 얻기 위해 내 컴퓨터는 ARP protocol을 필요로 하게 된다.

 

10. 내 컴퓨터는 ARP messagetargetdefault gatewayIP address192.168.219.1을 실은 ARP query message를 생성하고, 이 ARP messagebroadcast destination address (FF:FF:FF:FF:FF:FF)Ethernet frame에 싣는다. 생성된 Ethernet framegateway router를 포함한 연결된 모든 device들에게 전송이 된다. 

내 컴퓨터가 전송한  ARP query message

11. Gateway routerARP query message를 받고, 192.168.219.1match하는 것을 찾는다. Gateway router는 ARP replay를 준비하고, 192.168.0.1이라는 IP address에 대응하는 18:c5:01:05:bb:55라는 MAC address를 내 컴퓨터의 MAC addressdestination으로 설정하여 Ethernet frame에 실어서 switch로 전송한다. Switch는 패킷을 내 컴퓨터로 전달한다.

Gateway router 가 전송한  ARP replay message

 

12. 내 컴퓨터는 ARP reply message를 실은 frame을 받고, 여기에서 gateway routerMAC address18:c5:01:05:bb:55를 추출한다.

 

13. 내 컴퓨터는 DNS 쿼리가 포함된 Ethernet frame을 gateway routerMAC 주소로 주소를 지정할 수 있게 되었다. 이 frameIP datagramIP destination addressDNS serverIP address61.41.153.2를 가지는 반면, frame의 destination address는 18:c5:01:05:bb:55로 gateway router의 MAC address를 가진다. 내 컴퓨터는 이 frameswitch에게 전송하고, switch는 이 frame을 gateway router에게 전송한다.

내 컴퓨터가 전송한  DNS query message

 

DNS로 접속하려는 페이지의 IP를 알아온다

14. Gateway routerframe을 수신하면 DNS query를 포함하고 있는 IP datagram을 추출한다. Routerdatagramdestination address(여기서는 DNS Server의 IP 주소- 61.41.153.2 - 가 된다)를 찾고 forwarding table로부터 datagram을 해당 DNS server가 속해 있는 네트워크의 가장 가까운 router에 전송해야 하는지 결정한다. IP datagram은 내 컴퓨터가 속한 네트워크의 routerDNS server가 속한 네트워크router를 연결하는 link에 적합한 link-layer frame안에 배치되어 전송된다. 

 

15. DNS server가 속한 네트워크의 가장 가까운 routerframe을 수신하면 IP datagram을 추출하여 destination address(61.41.153.2)를 검사하고, BGP, RIP, OSPF, IS-IS와 같은 intra-domain protocol로 채워진 forwarding table로부터 DNS server로 datagram을 전달할 outgoing interface를 결정한다.

 

16. 결국 DNS query를 실은 IP datagramDNS server에 도착하게 된다. DNS serverDNS query message를 추출하고, DNS database로부터 www.google.com의 이름을 찾은 후 www.google.comIP address (172.217.26.132)를 포함하는 DNS resource를 찾는다. 이때, 이 recordDNS server에 최근에 cached된 것인데, 이 cached datagooglecomauthoritative DNS server로부터 유래한 것이다. DNS serverhostname에서 IP address로 mapping된 정보를 포함하는 DNS 응답 메세지를 생성하고, 이를 UDP segment에 싣는다. 이 segment는 내 컴퓨터의 IP datagram address (192.168.219.100)가 지정된 IP datagram 내에 싣는다. 이 datagramDNS server의 network를 통해 내 컴퓨터가 속한 network로 전달되고, router에서 Ethernet switch를 통해 내 컴퓨터로 전달된다.

 

17. 내 컴퓨터는 DNS message로부터 www.google.comserverIP address를 추출한다. 내 컴퓨터는 이제 www.google.com과 연결할 준비가 된다.

내 컴퓨터가 받은 www.google.com에 대한 DNS response message

 

TCP, HTTP로 접속하려는 페이지와 연결한다

18. 이제 내 컴퓨터는 www.google.comIP address를 가지고 있고, 이는 www.google.com으로 HTTP GET message를 보낼 때 쓰일 TCP socket을 만든다. 내가 TCP socket을 생성하면, 내 컴퓨터의 TCP는 반드시 먼저 www.google.comTCPthree-way handshake 과정을 수행해야 한다. 내 그러므로 내 컴퓨터는 destination port80을 지정해 TCP SYN segment를 생성하고, 이를 destination IP address(172.217.26.132, www.google.com)와 함께 포함하여 IP datagram을 만들고, 이를 destination MAC address (18:c5:01:05:bb:55, gateway router)와 함께 포함하여 frame을 생성한 후 switch에게 전송한다. 

내 컴퓨터에서 전송한 TCP SYN segment

 

19. 내가 속한 네트워크, DNS server가 속한 network, 그리고 google의 네트워크의 router들은 각 router들의 forwarding table을 이용하여 www.google.com 를 향한 TCP SYN을 포함한 datagramforward한다.

 

20. TCP SYN을 포함한 datagramwww.google.com에 도착한다. datagram에서 TCP SYN message를 추출하고, port 80과 연결welcome socket으로 demultiplex한다. Google HTTP server와 내 컴퓨터 간 TCP connection을 위해 connection socket이 생성된다. TCP SYNACK segment가 생성되어 내 컴퓨터로 주소가 지정된 datagram 내부에 포함되고, www.google.comfirst-hop router를 연결하는 link에 적합한 link-layer frame에 배치된다.

생성된 TCP SYNACK segment

 

21. TCP SYNACK segment를 포함하는 datagramGoogle, DNS가 속한 네트워크, 내 컴퓨터가 속한 네트워크를 거쳐 forward되어 내 컴퓨터의 ethernet card에 도착하게 된다. DatagramOS 내에서 TCP socket을 생성하기 위해 demultiplex된다.

 

22. 내 컴퓨터의 socketwww.google.com에게 bytes를 전송할 준비가 되고, 내 browserfetch하려고 하는 URL을 포함한 HTTP GET message를 생성한다. HTTP GET messagesocket에서 쓰여지며, GET messageTCP segmentpayload가 된다. TCP segment는 datagram에 포함되어 18-20의 단계를 통해 www.google.com으로 전송된다. 

내 컴퓨터에서 전송한  HTTP GET message

 

23. www.google.comHTTP serverTCP socket으로부터 HTTP GET message를 읽고, HTTP response messagebody에 속할 requestedweb page를 포함한 HTTP response message를 생성한 후, TCP socket으로 message를 전송한다. 

생성된 HTTP response message

 

24. HTTP reply message를 포함하고 있는 datagramGOOGLE, DNS server가 속한 네트워크, 내 컴퓨터가 속한 네트워크를 통해 forward되어 내 컴퓨터에 도착하게 된다. 내 web browser programsocket으로부터 HTTP response를 읽고, HTTP responsebody로부터 web pagehtml을 뽑은 후 web pagedisplay하게 된다.  

HTTP response message의 body에 포함된 web page의 html

 

 

'Computer Science > Computer Network' 카테고리의 다른 글

1-3. Layered Protocol Model  (0) 2022.01.06
1-2. Definition of Protocol  (0) 2022.01.06
1-1. What is the Internet?  (0) 2022.01.02
Comments