CS/Network

[네트워크] Life of a web request

hectick 2022. 3. 10. 01:53

#Computer Networking - A Top Down Approach

#컴퓨터 네트워크에 대한 강의수강이 끝난 후 알고있어야 할 내용에 대한 개괄적 정리

 


내가 랩탑을 유선(wired, eg. LAN)으로 campus network에 연결하고,

웹페이지(www.google.com)에 접근하는 시나리오를 생각해보자.

어떤 과정으로 웹페이지 요청이 처리될까?

(무선인 상황은 생각하지 않는다.)


 

1. DHCP 프로토콜

처음 랩탑을 연결하면 IP주소 없이는 아무것도 할 수 없다.

뭔갈 하려면 내 랩탑의 IP 주소, first-hop(gateway) router의 IP 주소, DNS 서버의 IP 주소가 필요하다.

IP 주소는 수동으로 구성할 수도 있고, DHCP를 이용해 자동으로 구성하는 방법도 있다.

다음은 DHCP 서버로부터 IP 주소를 확득하기 위해 DHCP 프로토콜을 실행하는 과정이다.

 

1. DHCP request는 UDP, IP, 802.3 Ethernet 계층을 거치며 캡슐화된다.

2. 이 Ethernet freme은 LAN에서 브로드캐스트(보낼수 있는 모든 곳에 보냄)된다.

3. DCHP 서버를 운영하는 라우터가 수신한다.

4. Ethernet Frame은 IP, UDP, DHCP를 거치며 역다중화된다.

 

5. DHCP 서버는 다음 세가지를 포함한 DHCP ACK을 만든다.

내 랩탑의 IP 주소

first-hop (gateway) router의 IP 주소

DNS 서버의 IP 주소와 이름

6. DHCP ACK는 DHCP 서버에서 캡슐화되어 LAN을 통해 나에게 전달되어 역다중화된다.

 

2. DNS와 ARP

구글 서버에 HTTP request를 보내려면, www.google.com의 IP 주소를 알아야 한다.

www.google.com라는 도메인 네임을 IP 주소로 변환하는 일은 DNS 담당이다.  

 

1. DNS query를 생성해서 캡슐화한다.

 

그런데 이것을 DNS 서버로 보내려면, first-hop(gateway) router의 MAC 주소를 알아야 한다.

first-hop(gateway) router의 IP 주소를 MAC 주소로 변환하는 일은 ARP 담당이다.

 

(1) ARP query가 브로드캐스트된다.

(2) 수신한 라우터는 MAC 주소를 포함한 ARP reply로 응답한다.

 

first-hop(gateway) router의 MAC 주소를 알기 때문에 이제 DNS서버에 메세지를 보낼 수 있다.

 

2. 캡슐화된 frame이 first-hop(gateway) router를 통해 ISP(Internet Service Provider)로 나가면,

라우팅 프로토콜을 통해 DNS 서버로 보내진다.

(ISP는 DNS서버로 가는 많은 라우팅 프로토콜을 앎, DNS 서버 뿐만 아니라 어디든...!)

3. DNS 서버에서 역다중화된다.

4. DNS 서버는 www.google.com의 IP주소를 보내고, 나는 이를 수신한다.

 

이제 나의 랩탑은 www.google.com의 IP주소를 얻었다. 

 

3. TCP와 HTTP

HTTP request를 www.google.com에 보낼 때 사용할 TCP 소켓을 생성해야야 한다.

나와 구글 서버 사이의 TCP 연결을 설정하기 위해 3-way handshake가 수행된다.

 

1. 내가 웹서버로 TCP SYN을 보내면

2. 웹서버가 TCP SYNACK로 응답한다.

3. 나는 TCP ACK로 응답한다.

 

TCP 연결이 설정되었다.

 

1. 이제 HTTP request를 TCP 소켓에 담아 웹서버로 보낸다.  

2. 웹서버는 웹페이지를 포함한 HTTP reply를 나에게 보낸다.

 

 

 


오개념 지적 댓글 얼마든지 환영합니다~^,^


 

'CS > Network' 카테고리의 다른 글

[네트워크] UDP(User Datagram Protocol)  (0) 2023.06.16
[네트워크] OSI 7 layer  (0) 2023.05.28
[네트워크] Network edge  (0) 2022.03.11
[네트워크] What is the Internet?  (0) 2022.03.11