웹 사이트에 접속하는 과정에 대하여

양승현·2022년 7월 16일

web

목록 보기
1/1
post-thumbnail

웹 사이트를 접속하는 과정

    1. 브라우저 주소창에 www.naver.com을 입력한다.
    1. 브라우저가 www.naver.com의 IP 주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.
    1. 만약 요청한 URL(www.naver.com)의 캐시가 없다면, ISP의 DNS 서버가 DNS 쿼리로 www.naver.com을 호스팅하는 서버의 IP 주소를 찾는다.
    1. 브라우저가 해당 서버와 TCP 연결을 시작한다.
    1. 브라우저가 웹서버에 HTTP 요청을 보낸다.
    1. 서버가 요청을 처리하고 응답을 보낸다.
    1. 서버가 HTTP 응답을 보낸다.
    1. 브라우저가 HTML 컨텐츠를 보여준다.

ISP(Internet Service Provider)
  • 개인이나 기업체에게 인터넷 접속 서비스, 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사(KT, SK브로드밴드, LG U+)

DNS(Domain Name System)
  • 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템
  • IP 주소를 특정 도메인 주소와 같다는 기록을 저장해두고, 인터넷 사용자들이 도메인 주소를 검색했을 때 IP 주소로 연결되도록 해줌. (도메인을 IP주소로 변환하는 역할)

1. 브라우저 주소창

  • URL을 입력하고 ENTER
  • 웹 브라우저가 URL을 해석

    URL 문법
    scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
    - "scheme" 접근 방법을 정의한 프로토콜 이름 (opher, telnet, ftp, http, usenet 등)
    - ":" 프로토콜 이름을 구분하는 구분자
    - "//" IP 혹은 Domain name 정보가 필요한 프로토콜이라면 ":" 다음에 "//"

2,3. DNS 동작 원리

  • ① 브라우저에서 naver.com을 검색하면, 사용중인 ISP(통신사)의 DNS 서버에 도메인 주소에 해당하는 IP 주소를 요청한다.(브라우저 기본 DNS 설정이 통신사 DBS 서버이기 때문)
  • ② ISP 서버에 캐시 데이터가 없다면 루트 DNS 서버에게 해당 위치를 요청(캐시 데이터가 있다면 ⑧)
  • ③ Root DNS 서버는 .com DNS 서버 주소로 안내한다.
  • ④ ISP 서버는 .com DNS 서버에게 어디로 가야 하는지 다시 요청한다.
  • ⑤ .com 서버는 N/G/K.com DNS 서버에서 해당 도메인을 관리하고 있는걸 확인하고 안내한다.
  • ⑥ ISP 서버는 N/G/K.com DNS 서버에게 정보를 요청한다.
  • ⑦ N/G/K.com DNS 서버는 "naver.com=97.158.164.152"라는 정보를 확인하고 IP를 알려줌과 동시에 ISP 서버는 해당 정보를 캐시로 기록한다.
  • ⑧ ISP 서버는 브라우저에게 확인한 97.158.164.152 IP 주소를 안내한다.
  • ⑨ 브라우저는 97.158.164.152 IP 주소를 가지고 있는 호스팅 서버에게 웹페이지 출력을 요청
  • ⑩ 확인

라우터를 통해 해당 서버의 게이트웨이까지 이동

  • DNS서버로부터 IP주소를 받으면 해당 서버로 요청을 보낸다.
  • IP주소로 가야 하는 것은 알지만 어떻게 가야 할지 경로는 알 수 없다.
  • 이 요청이 네트워크를 타고 어떻게 이동할지 네트워크 장비인 라우터의 라우팅을 통해 이루어진다.
  • 라우터에서 라우팅 테이블을 통해 해당 요청이 어떤 경로를 통해 가야할지 경로를 지정해주고 해당 경로 97.158.164.15를 찾아간다.

ARP를 통해 IP주소를 MAC 주소로 변환

  • 실질적인 통신을 하기 위해서는 논리 주소인 IP주소를 물리 주소인 MAC주소로 변환해야 한다.
  • 이를 위해 해당 네트워크 내에서 ARP를 브로드캐스팅한다.
  • 해당 IP주소를 가지고 있는 노드는 자신의 MAC 주소를 응답한다.

4. 대상 서버와 TCP 연결 시작

  • 대상 서버와 통신하기 위해 TCP 소켓 연결을 진행한다.
  • 소켓 연결은 3-way-handshake 연결 과정을 통해 이루어진다.
    1. 클라이언트는 인터넷을 통해 서버에 SYN 패킷을 보내 새 연결이 가능한지 물어본다.
    2. 서버에 새 연결을 수락할 수 있는 열린 포트가 있으면 SYN,ACK 패킷을 사용하여 SYN 패킷의 ACK로 응답한다
    3. 클라이언트는 서버로부터 SYN,ACK 패킷을 수신하고 ACK 패킷을 전송하여 승인한다.


    3-way-handshake
    클라이언트가 서버와 SYN(연결 요청),ACK(연결 승인) 메세지를 교환하여 연결을 성정하는 3단계의 프로세스

5,6,7. HTTP(S) 프로토콜 요청 및 응답

  • 연결이 확정되었으므로 www.naver.com을 서버에게 웹 페이지를 요청하는 GET요청을 보낸다.
  • 서버에서는 해당 요청을 받고, 이 요청을 수락할 수 있는지 검사한다.
  • 서버는 이 요청에 대한 응답(도메인에 대해 저장한 쿠키에서 가져온 정보)을 생성하여 브라우저에게 전달한다.

응답 결과는 다음과 같이 다섯 가지 상태로 나타난다.
1xx (Information Response): 정보 메시지만을 나타낸다. 서버가 요청을 받았으며 서버에 연결된 클라이언트는 계속해서 작업을 하라는 뜻.
2xx (Successful Response): 서버와의 요청이 성공함을 나타냄
3xx (Redirection Message) : 요청 완료를 위해 추가 작업 조치가 필요함을 의미함.
301(Moved Permantly)는 요청한 리소스의 URI가 변경 되었음을 의미.
4xx (Client Error Response) : 클라이언트의 Request에 에러가 있음을 의미함.
5xx (Server Error) : 서버 측의 오류로 request를 수행할 수 없음.

8. 서버와 연결

  • 서버에서 응답한 내용은 HTML, CSS, Javascript로 이루어져 있다.
  • 이를 브라우저에서 텍스트를 정해진 형식(HTML 골격을 렌더링하고 HTML태그 확인, 이미지,CSS 스타일시트, 자바스크립트 파일 등 웹페이지 추가 요소에 대한 GET 요청)으로 해석하여 www.naver.com 페이지가 그려진다.

1개의 댓글

comment-user-thumbnail
2022년 7월 16일

좋네요

답글 달기