우선, IP주소와 도메인에 대해 살짝 짚고가자.
IP주소
- IP주소란 많은 컴퓨터들이 인터넷 상에서 서로를 인식하기 위해 지정받은 식별용 번호이다.
- 현재는 IPv4버전(32비트)로 구성되어있고, 한번씩 들어본 127.0.0.1 같은 주소이다.
- 시간이 갈 수록 IPv4 주소 부족으로 IPv6가 생겼는데, 128비트로 구성되기에 IP주소가 부족하지 않다는 특징이 있다.(이건 다른 글에서 다룬다.)
도메인 네임 (Domain Name)
- IP주소는 12자리의 숫자로 되어 있어 사람이 외우기 힘들다.
- 그렇기에 12자리 IP주소를 문자로 표현한 주소를 도메인 네임이라고 한다.
- 'naver.com'과 같은 의미 있는 문자들과 .으로 구성된다.
- 도메인 네임은 사람의 편의성을 위해 만든 주소이므로 실제로는 컴퓨터가 이해할 수 있는 IP주소로 변환하는 과정이 필요하다.
- 이때, 사용할 수 있도록 미리 도메인 네임과 해당하는 IP주소값을 한쌍으로 저장하고 있는 데이터베이스를 DNS라고 부른다.
- 도메인 네임으로 입력하면 DNS를 이용해서 컴퓨터는 IP주소를 받아 찾아 갈 수 있다.
- 사용자가 브라우저에 도메인 네임을 입력한다. 'www.naver.com'
- 사용자가 입력한 URL 주소 중 도메인 네임 부분을 DNS 서버에 검색하고, DNS서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.
- 페이지 URL정보와 전달받은 IP주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성하고, 이렇게 생성된 HTTP 요청 메세지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP주소의 컴퓨터로 전송된다.
- 이렇게 도착한 HTTP 요청 메세지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환되어 웹 페이지 URL 정보에 해당하는 데이터를 검색한다.
- 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메세지를 생성하고 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
- 도착한 HTTP 응답 메세지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환되어 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.
DHCP
- 대부분의 가정집에서 인터넷 접속시 DHCP를 사용한다.
- Dynamic Host Configuration Protocol의 약자.
- 호스트의 IP주소 및 TCP/IP 설정을 클라이언트에 자동으로 제공하는 프로토콜이다.
- 사용자의 PC는 DHCP 서버에서 사용자 자신의 IP주소, 가장 가까운 라우터 IP주소, 가장 가까운 DNS 서버 IP주소를 받는다.
- 이후, ARP 프로토콜을 이용하여 IP주소를 기반으로 가장 가까운 라우터의 MAC 주소를 알아낸다.
-> 클라이언트가 인터넷 접속을 시도하면 IP와 기본 정보를 제공해준다.
IP 정보 수신
위의 과정을 통해 외부와 통신할 준비를 마쳤고, DNS Query를 DNS 서버에 전송한다.
DNS 서버는 이에 대한 결과로 웹 서버의 IP 주소를 사용자 PC에 돌려준다.
DNS 서버가 도메인에 대한 IP주소를 송신하는 과정은 약간 복잡하다.
www.naver.com을 친다고 하자.
- 사용자의 PC는 가장 먼저 지정된 DNS서버에 DNS Query를 송신하다.
- 그 이후, 지정된 DNS 서버는 Root 네임 서버에 www.naver.com을 질의하고 Root 네임서버는 .com 네임서버의 ip주소를 알려준다.
- 그 이후, .com 네임서버에 www.naver.com을 질의하면 naver.com 네임서버의 ip주소를 받고 그곳에 질의를 또 송신하면 www.naver.com의 ip주소를 수신하게 된다.
- 이와 같이 여러번 왔다갔다하는 이유는, 도메인의 계층화 구조에 따라 DNS 서버도 계층화가 되어있기 때문이다. 이렇게 계층화되어 있으므로 도메인의 가장 최상단, 즉, 가장 뒷쪽(.com, .kr ..)을 담당하는 DNS 서버는 전세계에 13개 뿐이다.
웹 서버 접속
웹 서버의 IP주소까지 알았다.
HTTP Request를 위해 TCP Socket을 개방하고 연결한다.
이 과정에서 3-way hand shaking이 일어난다.
TCP 연결에 성공하면, HTTP Request가 TCP Socket을 통해 보내진다.
이에 대한 응답으로 웹 페이지의 정보가 사용자의 PC로 들어온다.