클라이언트가 웹 브라우저를 사용하여 특정 웹 사이트에 접근할 때 웹 브라우저는 해당 사이트의 IP 주소를 찾아 서버와의 통신을 진행한다. 그러면 서버는 클라이언트의 요청을 처리하고 그에 따른 응답을 웹 브라우저에 보내면 웹 브라우저는 클라이언트가 보기 좋게 렌더링 하여 보여준다. 이번 포스팅에서는 URL 입력과 IP 조회 및 반환에 대해서 작성해 보았다. TCP 연결 및 연결해제에 관련해서는 이전 포스팅 OSI 7 Layers 와 TCP와 UDP를 참고하길 바란다.
기본 과정
1. 사용자는 웹 브라우저를 통해 url 주소 입력
2-1. Hosts파일의 IP 정보들은 DNS 캐시 파일에 저장이 되어진다.
2-2. 브라우저에서 사용자 요청 도메인의 IP 주소를 찾기 위해 DNS Cache 접근
2-3. DNS Cache에도 없을 시 url 주소 중 Domain Name 부분을 DNS 서버에서 검색
3. (2-3 기준) Local DNS Server → Root Name Server → TLD Name Server → Authoritative Name Server 순으로 IP 조회 후 사용자가 입력한 url 정보와 IP 주소 반환
4. 해당 IP주소로 TCP 연결 및 HTTP or HTTPS Request
5. 서버 측에서 HTTP or HTTPS Response 반환과 함께 TCP 연결 해제
6. 사용자가 보기 편하도록 렌더링 하여 정보 제공
1. URL 입력
사용자는 웹 브라우저를 통해 url 주소 입력
프로토콜 | 브라우저가 사용해야 하는 프로토콜을 나타냄 |
도메인 이름 | 네임 스페이스를 관리하는 도메인 이름 or IP. 파일이 위치한 웹 서버 |
포트 | 웹 서버의 리소스에 접근하기 위한 통로 |
경로 | 웹 서버의 리소스 경로 |
쿼리 | 웹 서버에 제공되는 추가적인 파라미터 |
프래그먼트 | 리소스 자체의 다른 부분을 가리키는 앵커 |
URI과 URL
URI(Uniform Resource Identifier) - 자원의 식별자에 중점
통합 자원 식별자로 인터넷에 있는 자원을 나타내는 유일한 주소.
URL(Uniform Resource Locator) - 자원의 위치에 중점
네트워크 상에서 웹 페이지, 이미지 동영상 등의 자원이 존재하는 위치를 나타냄
2. IP 조회
DNS : Domain Name System의 약자로 도메인 이름과 IP 주소를 변환해주는 시스템
2-1. Hosts파일의 IP 정보들은 DNS 캐시 파일에 저장이 됨(호스트 파일과 캐시 정보는 실시간 동기화)
2-2. 브라우저에서 사용자 요청 도메인의 IP 주소를 찾기 위해 DNS Cache 접근
2-3. DNS Cache에도 없을 시 url 주소 중 Domain Name 부분을 DNS 서버에서 검색
사용자가 이전에 접속한 도메인의 주소가 있다면 해당 IP들은 Hosts 파일에 저장이 되고 해당 파일에 저장된 IP 주소들은 DNS Cache에 저장된다(실시간 동기화). DNS Cache에 저장되는 이유는 DNS 서버에 질의 요청하는 시간을 줄임으로써 성능을 높일 수 있기 때문에 우선적으로 DNS Cache에 접근하려는 도메인 주소의 IP 정보가 있는지 확인하는 것이다. 존재하지 않는다면 DNS 서버에 질의 과정을 거친다. DNS 서버는 모든 도메인의 IP 주소를 가질 수 없기 때문에 계층구조 형태로 나누어져 있다. 따라서 분산 데이터 베이스 시스템이라고 한다. 사용자의 질의를 받으면 DNS Server는 해당 도메인에 해당하는 Root 서버에 대한 정보를 알려주고 비슷한 형태로 TLD, Authoritative 서버 순으로 정보를 받아 IP 주소를 얻게 된다.
Local DNS Server(Recursive DNS Server) : 캐시 정보를 저장해 두고 사용하는 서버. 만약에 원하는 도메인의 주소가 있다면 바로 IP 주소를 반환해준다. ISP가 여기에 해당
Local 서버에 "www.google.com"에 대한 정보 요청
해당 주소에 대한 정보가 없으므로 Root Name Server에 다시 질의
Root Name Server : TLD DNS 서버들의 IP 정보를 저장하는 서버. ICANN이 관리하고 전 세계 13개 존재
".com" 네임 서버에 해당 주소에 대한 정보(TLD Name 서버 정보)를 받아 TLD Name 서버에 다시 질의
TLD Name Server : 도메인 등록기관이 관리. Authoritative DNS 서버의 IP 주소를 가지고 있음 [참고]
"google.com"에 대한 정보를 가진 서버에 대한 정보를 받아 다시 질의
Authoritative Name Server : 도메인 판매업체가 관리. 실제 도메인의 IP 정보를 저장하고 있는 서버
"google.com"에 대한 IP 정보 반환
CDN을 통해 더 빠르게 서버 리소스를 받아올 수 있다.
3. TCP 연결 및 HTTP 통신
서버와 연결을 완료하였으면 HTTP or HTTPS 프로토콜을 통해 요청과 응답을 주고받는다.
4. 렌더링
서버가 제공하는 리소스(HTML, CSS, JS, Image)를 브라우저가 받으면 브라우저는 리소스를 가지고 가공하여 클라이언트가 보기 좋게 하여 정보를 제공한다.
참고하면 좋은 사이트
'CS > Network' 카테고리의 다른 글
HTTP와 HTTPS (0) | 2022.09.16 |
---|---|
CDN이란 무엇일까? (0) | 2022.09.06 |
TCP와 UDP (0) | 2022.08.24 |
Proxy 프록시 (0) | 2022.05.16 |
Web에서의 인증과 인가(세션과 토큰) (0) | 2021.12.29 |