브라우저에 URL를 입력하면 생기는 일 (브라우저)

Hansu Park·2023년 12월 3일
0
post-thumbnail

네트워크에 대한 이해를 실제 동작인 “브라우저에 URL을 입력하였을 때 어떠한 동작이 일어나는가” 로 파악해보려고 합니다.

이번에는, 브라우저 수준에서 설명하겠습니다. 설명 순서는 간략하게 동작을 설명한 후, 핵심 키워드들에 대해 상세히 설명하겠습니다.

요약

간단히 요악하자면 다음과 같습니다.

1. 브라우저에 URL을 입력한다.

  • 브라우저에 URL을 입력한다.

    image

  • 이후 브라우저는 URL을 IP주소로 변환하기 위해 리졸버(Resolver)을 호출한다.

2. 소켓 라이브러리가 DNS 서버에 문의하여 URL을 IP로 치환한다.

  • 소켓 라이브러리에 있던 리졸버가 호출되어 DNS 서버에 조회 메시지를 보낸다.
  • DNS 서버에서 IP 주소를 응답한다.

3. 바뀐 IP를 통해 브라우저가 HTTP Request Message를 만들어 OS에게 송신을 맡긴다.

  • 이를 바탕으로 HTTP Request Message를 만든다.

    image

이러한 요약에, 정확한 개념을 습득하지 않은 키워드들이 많습니다. 이들에 대해 하나씩 살펴보겠습니다.

키워드 정리

URL

URL(Uniform Resource Locator)은 웹 상에서 자원(File){Resource}을 가리키는 위치입니다. URI(Uniform Resource Identifier) 은 자원을 가리키기 위한 규악으로 URL, URN을 포함하고 프로토콜 없이 존재할 수 있다.

image

(출처: https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL)

위 그림과 같이

  • Scheme: 프로토콜이라고도 불리며, http, mailto 등이 속한다.
  • Domain Name: 서버의 인터넷 주소를 대체하는 이름이다.
  • Port: 서버의 여러 프로세스 중 통신할 하나의 프로세스를 식별하는 번호이다. (항구를 뜻하는 Port에서 유래되었다.)
  • Path to the file: 파일의 위치를 나타낸다.
  • Paramterers: 쿼리 파라미터, 쿼리 스트링으로도 불리며 값을 전달할 때 사용한다.
  • Anchor(Fragment): 책갈피와 같이, 위치를 지정할 수 있다. (배의 닻에서 유래되었다.)

HTTP

HTTP (HyperText Transfer Protocol)의 약자로, HTML문서 등을 가져올 수 있도록 하는 프로토콜이다. 메시지(Request Message, Response Message)를 통해 통신하며, 자원을 URI로 행위를 Method로 표현한다.

HTTP Method (요청)

HTTP 요청이 어떤 행위를 하는 것인지를 나타낸다. GET, POST, PUT, PATCH, DELETE, OPTION을 주로 사용한다.

  • GET: 특정 자원을 가져올 때 사용한다.
  • POST: 데이터 전송 목적(주로 생성)으로 사용한다.
  • PUT: 생성 혹은 데이터 변경에 사용한다.
    • 멱등성(여러 번 보내도 같은 결과가 나타나는 현상)을 지닌다.
  • PATCH: PUT과 달리 부분적인 수정을 할 때 사용한다.
  • DELETE: 무언가를 삭제할 때 사용한다.
  • HEAD: GET 요청의 응답 헤더가 무엇인지를 요청한다.
  • OPTION: 서버의 통신 옵션을 조회할 때 사용한다.
    • CORS preflight 요청에 사용되기도 한다.

참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/DELETE

HTTP Status code (응답)

HTTP 응답이 어떤 상태인지를 나타낸다. 2XX, 4XX, 5XX등이 있다.

200번대

  • 200: 요청 성공을 나타낸다.
  • 201: 요청 성공 + 자원 생성을 나타낸다.
    • 자원 갱신의 경우에 의미에 따라 사용하기도 한다.
  • 204: 요청 성공 + 페이지를 벗어나지 않아도 됨을 나타낸다.

300번대

  • 301: 요청한 리소스가 위치가 옮겨졌음을 나타낸다.
    • Location Header을 통해 옮긴 위치를 알려주고, 브라우저는 이로 리다이렉팅한다.
  • 302: 일시적으로 이동되었음을 나타낸다.

400번대

  • 400: 클라이언트의 오류로 요청을 처리할 수 없음을 나타낸다.
  • 401: 인증이 이루어지지 않아 요청을 처리할 수 없음을 나타낸다.
  • 403: 요청은 올바르나, 권한이 부족하여 요청을 처리할 수 없음을 나타낸다.
  • 404: 자원을 찾지 못하여 요청을 처리할 수 없음을 나타낸다.
  • 409: 서버가 유지하고 있는 상태에 위반되는 요청에 대해 처리할 수 없음을 나타낸다.
  • 410: 영구적으로 접근하려는 데이터에 더이상 접근할 수 없음을 나타낸다.
  • 418: 서버가 커피를 내릴 수 없는 상태(찻주전자 상태)임을 나타낸다.

500번대

  • 500: 서버가 예기치 못한 상황이어서 요청을 처리할 수 없음을 나타낸다.
  • 504: 일정시간 동안 응답을 받지 못했음을 나타낸다.

출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Status/418

Internet

인터넷은 TCP/IP 환경에서 여러 컴퓨터들이 연결되어 상호작용할 수 있는 네트워크이다.

Web

Web(World Wide Web)은 인터넷 공간에서 웹 페이지들 간에 연결을 할 수 있는 시스템이다. 팀 버너스리가 제안하였고, WWW는 최초의 웹 브라우저이기도 하다.

Q. 왜 URL에 www를 입력하는가?

URL의 domain name 자리에는 www가 항상 존재한다. (입력하지 않아도 자동으로 생성된다.) 이는 지금은 인터넷과 웹이 거의 동일시 되고 있으나, 초창기에는 domain name service에서 웹 이외에 다른 서비스들도 많이 있었기 때문에 구별 목적으로 필요했다.

IP

IP(Internet Protocol)은 인터넷 환경에서 사용하는 프로토콜이다. IP 주소는 통신에서 사용하는 기기의 고유 번호를 의미하며 IPv4, IPv6으로 분류된다.

IPv4는 232개의 주소를 저장할 수 있었으나, 이들이 부족해져 264개를 저장할 수 있는 IPv6가 등장하게 되었다.

Class

IP는 LAN(망)의 주소를 나타내는 Network Location과 기기의 고유 번호를 나타내는 Host Location으로 이루어져 있다.

IPv4가 등장할 초기에는 아래 이미지처럼 28개의 네트워크를 저장가능한 A Class를 사용하였으나, 인터넷이 발전하며 B클래스를 주로 사용하게 되었다. 하지만 이 역시도 부족해져 서브넷마스킹, IPv6가 등장하게 되었다.

image

Subnet Mask

Network IP와 Host IP의 범위를 유동적으로 설정할 수 있어, 낭비를 줄일 수 있게 되었다.

10.10.1.32/27 : 27비트의 Network IP 공간, 5비트의 Host IP 공간

기타

  • 0.0.0.0 : 서브넷 자체를 나타킨다.
  • 1.1.1.1 : 브로드캐스르를 나타낸다.

DNS

인터넷에서 주소를 찾을 때, 전화번호를 기억하지 않고 연락처에 이름으로 검색하여 전화번호를 찾는 것 처럼 인터넷 주소를 기억하지 않고 서버 이름(도메인 명)을 기억하고 이를 특정 시스템에 물어봐서 서버의 IP주소를 찾는다.

이 때 URL을 받아 IP주소를 대답해주는 시스템을 DNS(Domain Name System)이라고 한다. 이는 다음 장에서 자세히 다룬다.

0개의 댓글