주소창에 URL(www.google.com)을 입력했을때 통신의 흐름을 알아보자.
웹
월드 와이드 웹의 약자로 인터넷을 통해 접근할 수 있는 정보 공간. URL로 문서 등 리소스를 식별하고 리소스 간 하이퍼링크로 연결될 수 있다.
웹 통신
HTTP를 통해 리소스를 전송한다.
-
웹에 연결된 컴퓨터는 클라이언트와 서버로 구분할 수 있다.
-
서버 : 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
-
클라이언트 : 사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스, 웹 브라우저, 모바일 앱 등
웹 통신 과정
- IP 주소 : 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신을 하기 위해서 사용하는 특수한 번호
(128.0.0.1 과 같은 32비트로 구성되어 있다.)
- DNS : IP주소와 도메인 이름의 매핑 정보를 담는 데이터베이스
- 사용자가 브라우저에 도메인 이름을 입력한다.
- DNS서버에서 사용자가 입력한 Domain name을 검색하고, 매핑되는 IP주소를 찾는다. 사용자가 입력한 URL 정보와 함께 리턴한다.
- IP주소는 HTTP 프로토콜을 이용해서 HTTP 요청 메세지를 생성한다.
- 생성된 HTTP 요청 메세지는 TCP 프로토콜을 사용해서 인터넷을 거쳐 해당 IP 주소의 컴퓨터(서버)로 전송된다.
- 서버는 클라이언트의 요청을 승인하고, 응답 메세지를 전송한다.
- 도착한 HTTP 응답 메세지는 HTTP 프로토콜을 사용하여 웹페이지 데이터로 변환되고, 웹 브라우저의 출력에 의해 사용자가 볼 수 있다.
DNS의 웹/앱 라우팅 과정
-
DNS 서버에 DNS Query(www.example.com)를 전송한다
: 우리나라의 경우에는 통신사별로 지정된 DNS 서버가 있다.
-
DNS 서버는 루트 네임 서버에 DNS Query를 질의한다.
: 루트 네임 서버는 .com의 ip주소를 반환한다.
-
.com 네임 서버에 DNS 쿼리를 질의한다.
: .com 네임 서버는 example.com의 ip주소를 반환한다.
-
example.com 네임 서버에 DNS 쿼리를 질의한다.
: www.example.com의 IP 주소를 반환한다.
DNS 서버는 계층화 구조를 이루는데, 최상단 계층인 가장 뒷쪽(.com, .kr 등등)을 담당하는 DNS 서버는 전세계에 13개 뿐이다.
웹 서버 접속
접속하려는 서버의 IP주소를 알았고 접속을 해보자.
- HTTP Request를 위해 TCP socket을 개방하고 연결한다.
- TCP 연결에 성공하면, HTTP Request가 TCP socket을 통해 보내진다.
- 웹 페이지의 정보가 응답으로 돌아온다.
참고
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90%20naver.com%EC%9D%84%20%EC%B9%98%EB%A9%B4%20%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94%20%EC%9D%BC.md
http://tcpschool.com/webbasic/works