웹 브라우저에 11st.co.kr 를 입력 했을 때 어떤 일이 일어날까?
IP 주소란?
IP 주소는 서버에 접근하기 위해 필요한 고유한 주소입니다. 예를 들어, 11st.co.kr의 서버에 접근하려면 그 서버의 IP 주소(예: 203.238.182.128)를 알아야 합니다. 하지만 이런 숫자 조합을 기억하기는 어렵습니다. 그래서 등장한 것이 DNS(Domain Name System)입니다.
DNS 란?
DNS는 사람이 읽기 쉬운 도메인 이름(11st.co.kr)을 컴퓨터가 이해할 수 있는 IP 주소로 변환해 주는 시스템입니다. 반대로 IP 주소를 도메인 이름으로 변환할 수도 있습니다.
웹 브라우저에 11st.co.kr를 입력 했을 때 일어나는 일
- 웹 브라우저에서 도메인 네임(11st.co.kr)을 입력한다. (1)
- DNS 서버에서 브라우저가 입력한 URL에 포함된 도메인 네임과 매핑되는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다. (2) ~ (4)
- DNS 서버에서 전달받은 IP 주소는 HTTP를 이용하여 HTTP 요청 메세지를 생성하고 생성된 메세지는 TCP 프로토콜을 사용하여 웹 서버로 전달된다. (5) ~ (7)
- 서버는 요청 URL에 포함된 데이터를 조회하고 다시 HTTP 프로토콜을 사용하여 웹 페이지 데이터가 포함된 HTTP 응답 메세지를 생성한다. (8) ~ (9)
- 생성된 응답 메세지를 TCP 프로토콜을 사용하여 브라우저로 전달한다. (9) ~ (10)
- 브라우저에 도착한 응답 메세지는 웹 페이지 데이터로 변환되고 브라우저에 의해 사용자의 화면에 출력된다. (11) ~ (12)
DHCP & ARP
DHCP는 호스트의 IP주소 및 TCP/IP 설정을 클라이언트에 자동으로 제공하는 프로토콜입니다. 사용자의 PC는 DHCP서버에서 사용자 자신의 IP주소, 가장 가까운 라우터의 IP주소, 가장 가까운 DNS서버의 IP주소를 받습니다.
만약 고정된 IP를 할당한다면 중복되는 IP 주소를 할당하여 통신 기기간 충돌이 일어날수도 있고 사용하지 않는 통신 기기에도 IP 주소를 할당해 줘야 하기 때문에 IP 주소가 부족한 문제가 발생할수 있습니다. 그래서 DHCP가 IP를 할당해 주지만 통신 기기를 사용하지 않을때는 해당 IP를 반환받아 다른 통신 기기에 동적으로 재할당 해줌으로써 문제를 해결해줍니다.
ARP는 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜입니다.
앞서 DHCP에 의해 IP 주소는 끊임없이 변화하기 때문에 논리적 주소인 IP 만으로는 원활한 네트워크 통신이 불가능합니다. 그래서 ARP가 IP 주소를 물리적 주소인 MAC 주소로 바꿔줌으로써 통신이 가능하게 합니다. ARP 프로토콜을 이용하여 DHCP에서 받은 IP주소를 기반으로 가장 가까운 라우터의 MAC주소를 알아냅니다.
IP 정보 수신
Local DNS 서버에 질의
로컬 DNS 서버에서 11st.co.kr의 IP 주소를 요청합니다.
DNS 서버 간 쿼리 전송
로컬 DNS 서버에 정보가 없으면 다음 순서대로 쿼리를 전송합니다.
- Root DNS 서버: .kr 네임 서버의 IP 주소를 반환합니다.
- .kr 네임 서버: 11st.co.kr 네임 서버의 IP 주소를 반환합니다.
- 11st.co.kr 네임 서버: www.11st.co.kr의 IP 주소를 반환합니다.
웹 서버 IP 주소 획득
최종적으로 www.11st.co.kr의 IP 주소를 알아냅니다.
웹 서버 접속
IP 주소를 알게 되면 브라우저와 서버 간에 3-way handshake를 통해 TCP 연결을 설정합니다. 이후 브라우저는 HTTP 요청을 보내고, 서버는 이에 대한 HTTP 응답을 전송합니다. 응답 데이터는 브라우저가 웹 페이지로 렌더링하여 화면에 표시됩니다.
'네트워크' 카테고리의 다른 글
OSI 7계층, TCP/IP 4계층 (0) | 2023.05.24 |
---|---|
[HTTP] HTTP, HTTPS, SSL Handshake (0) | 2022.11.28 |
[HTTP] TCP와 UDP의 특징 (TCP 3-way, 4-way handshake) (0) | 2022.11.27 |
[HTTP] 쿠키와 세션 (0) | 2022.09.30 |
[HTTP] 세션과 토큰 (0) | 2022.03.14 |