본문 바로가기

ComputerScience/Network

What happen if you access www.google.com?

728x90

 

노트북으로 학교 캠퍼스의 network에 접근해서 www.google.com 에 접속하려할때, 무슨일이 일어나는가? (유선 랜)

ip 주소를 직접 할당하는 것도 가능하지만 DHCP가 자동으로 ip를 할당해주는 경우를 생각해보자.

인터넷에 접속하기 위해 가장 먼저 필요한 것은 IP 주소, first-hop router의 주소, DNS 서버의 주소이다.

*1st-hop router를 gateway router라고도 한다.

이 세가지를 얻기 위해 DHCP(프로토콜)을 사용한다. 

DHCP 요청을 보내기 위해 상위 계층에서 하위 계층으로 encapsulated되어 패킷이 내려온다.

*Ethernet(IP(UDP)))로 encapsulated된다.

아직은 first-hop router의 주소를 모르기 때문에 local area network(LAN) 전체로 이 메세지(frame)를 (L2)broadcasting한다.

DHCP 서버가 돌아가는 router가 이 메세지를 받게 된다.

그럼 이 client에게 할당할 ip주소, first-hop router 주소, DNS server 주소를 담아서 DHCP ACK를 보낸다.(응답)

DHCP의 reply를 받은 client는 드디어 자신의 IP 주소, first-hop router의 주소, DNS 서버의 주소를 알게 되었다.

이제 HTTP 요청으로 www.google.com 의 웹사이트에 접속해보자

그런데 도메인 이름은 알지만 google웹 서버의 ip주소를 모른다.

따라서 DNS 질의를 사용해 도메인 이름으로 부터 ip주소를 알아온다.

그런데 DNS질의 frame을 send down하기 위해서는 router의 MAC 주소를 알아야 한다. 

따라서 DNS질의를 보내기 전에 ARP 프로토콜(IP-> MAC translation)로 router의 맥주소를 얻어온다.

라우터에게 ARP query를 보내고 응답으로 MAC주소를 받는다.

이제 first-hop router의 맥주소를 알게 되었으니 드디어 DNS질의를 보낼 수 있다.

DNS질의를 담은 IP datagram은 스위치를 거쳐서 1st-hop router로 도달하게 되고 라우터는 DNS 서버에게 이 요청을 전달하기 위해 ISP(Internet Service Provider) 네트워크에게 datagram을 넘긴다.

이 ISP 라우터가 라우팅 프로토콜(RIP, OSPF, IS-IS, BGP)을 사용해서 DNS 서버로 가는 path를 찾아 datagram을 전달한다.

DNS 서버가 마침내 이 메시지를 확인하고 client에게 www.google.com의 ip주소를 담은 DNS reply를 보낸다.

자 이제 www.google.com 의 ip주소를 알았다. 

본격적으로 http 요청을 보내기 전에 할일이 딱 하나 더 있다.

나와 google web server끼리 TCP connection을 만들어야 한다. 이 때 TCP socket을 연다고 한다. client가 구글 웹 서버에게 TCP SYN 요청을 보내면 구글 웹 서버가 TCP SYNACK을 보내준다.

이제 client의 TCP와 구글 웹 서버의 TCP간의 connection이 생겼다.

마침내 HTTP요청을 담은 IP datagram이 first-hop router를 거쳐 ISP 라우터를 거쳐 구글 웹 서버로 전송된다.

구글 웹 서버는 decapsulation으로 http 요청을 확인하고 구글 웹 페이지를 담고 있는 http reply를 client에게 보내준다.

wifi같은 wireless 통신의 경우는 어떻게 이루어질까?

노트북이 association(ssid스캔, 선택)단계와 authentication(인증)단계를 거치면 wifi AP와 (L2)connection이 생긴다.

그 다음에 이루어지는 작업은 유선랜 통신과 같다.

*wifi AP는 DHCP, NAT, router server가 될수도 있다.

728x90
반응형