URL 입력 시 일어나는 일 정리

강보훈·2021년 12월 11일
1

순서

  1. URL 파싱
  2. HSTS 목록 조회
  3. URL을 IP로
  4. 라우터를 통해 해당 서버의 게이트웨이까지 이동
  5. ARP를 통해 IP주소를 MAC주소로 변환
  6. 대상 서버와 TCP 연결
  7. http(https) 프로토콜로 요청 및 응답
  8. 브라우저에서 요청 해석

URL 파싱

  • 어떤 프로토콜로, 어떤 도메인으로, 어떤 포트로 보낼지 파싱한다. 기본적인 구조는 다음과 같다

  • 포트의 경우 평소에 검색이나 직접 URL을 입력할 때 추가하지 않아도 자동으로 들어가게 된다.

    종류포트
    FTP(데이터 전송)20
    FTP(제어)21
    SSH22
    Telnet23
    DNS53
    http80
    https443
    NNTP119

HSTS 목록 조회

  • 이 부분은 데이터 통신 과목을 공부하면서 들어본 기억이 나질 않는다. 다른 부분들은 다 기억이나는데..
  • HSTS(HTTP Strict Transport Security)는 http 연결은 허가하지 않고 https 연결만 허용하는 기능이다.
  • 만약 http 연결이 들어온 경우 Strict Transport Security 필드를 응답 헤더에 포함해서 보내고 이를 확인한 브라우저는 https만을 통해 통신한다. 그리고 자신의 HSTS 캐시에 해당 URL을 저장하는데 이 캐시를 HSTS 목록이라고 부른다.
  • 이를 통해 브라우저는 요청을 https로 보낼지 결정한다. HSTS 목록에 있는 URL은 명시적으로 http로 요청해도 브라우저가 https로 요청을 보낸다.
  • 브라우저가 가지고있습니다.

URL을 IP로

  • www.naver.com 이 주소로는 컴퓨터끼리 통신이 불가능하다. 따라서 컴퓨터가 읽을 수 있는 IP주소로 변경을 해야하는데 DNS서버에 요청해서 해당 URL을 IP주소로 변환한다.

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

  • IP주소를 알았으니 이제 라우터를 타고 라우팅을 통해 이동한다. 사용되는 여러 알고리즘이나 자세한 사항은 다른 글에서 다루겠다.

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

  • 실질적인 통신을 위해선 IP주소를 MAC주소로 변환해야한다. 해당 네트워크에서 ARP(Address Resolution Protocol)를 브로드캐스트하면 해당 IP주소를 가지는 노드는 자신의 MAC 주소를 응답한다.

대상 서버와 TCP 연결

  • 대상 서버와 연결을 하기위해서 handshaking을 먼저하는데 tcp의 경우 3-way handshaking을 한다. 간단하게 예를 들면
  1. A가 B에게 돈 줘
  2. B가 A에게 돈 보냈어
  3. A가 B에게 입금 확인했어
    이렇게 이해하면 편하다.
  • https의 경우 TLS handshaking이 추가된다.

http(https) 프로토콜로 요청 및 응답

  • 이제 연결이 성립했으니 요청한 페이지인 www.naver.com을 달라고 서버에게 요청한다. 서버에선 해당 요청을 받고 수락 여부를 검사한 뒤 요청에 대한 응답을 브라우저에게 전달한다.

브라우저에서 요청 해석

  • 이제 내가 URL을 입력한 결과를 볼 수 있다. 문제가 없다면 www.naver.com 페이지가 나올 것이고 문제가 있다면 404 not found 같이 익숙한? 에러페이지를 만나볼 수 있을 것이다.

IP

  • IP주소는 호스트나 라우터 장비의 인터페이스에 할당된 주소
  • 유동적이다.

MAC

  • IP주소 처럼 NIC(Network Interface Card)에 할당된 고유 식별 주소이다.
  • 변하지 않는 고유 주소
profile
신입 안드로이드 개발자입니다!

0개의 댓글