[네트워크] | URI와 웹 브라우저 요청흐름

제롬·2022년 4월 18일
0

URI

URI, URL, URN

  • URI(Uniform Resource Identifier)는 로케이터(Uniform Resource Location), 이름(Uniform Resource Name) 또는 둘다로 구분될 수 있다.
  • URI라는 개념은 리소스를 식별하는 것. 다시 말해 리소스의 위치와 이름을 식별하는 것을 말한다.

[URI, URL URN의 관계]

URL과 URN

  • 리소스를 찾을때 대부분의 경우 URN보다는 URL을 이용한다.
  • URL은 우리가 흔히 웹 브라우저에서 사용하는 주소이다.
  • URN은 리소스에 이름을 부여하는것을 말한다. 하지만, 이름만 가지고는 주소를 찾아갈 수 없기 때문에 실제로 사용하기는 힘들다.

[URL과 URN의 구성]

URI의 의미

  • Uniform : 리소스를 식별하는 통일된 방식
  • Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음 - HTML파일, 실시간 교통정보 등)
  • Identifier : 다른 항목과 구분하는데 필요한 정보

URL, URN

  • URL : Locator로 리소스가 있는 위치를 나타낸다.
  • URN : Name으로 리소스의 이름을 가리킨다.
  • URL(위치)는 변할 수 있지만, URN(이름)은 변하지 안흔ㄴ다.
  • URN(이름)만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되어있지 않다.

URL 구조 분석

URL구조 : scheme://[userinfo@]host[:port][/path][?query][#fragment]
URL예시 : https://www.google.com/search?q=hello&hl=ko

  • 프로토콜 : https
  • 호스트명 : www.google.com
  • 포트번호 : 443
  • 패스 : /search
  • 쿼리 파라미터 : q=hello&hl=ko

schema

  • 주로 프로토콜이 사용된다.
  • 프로토콜이란 어떤 방식으로 자원에 접근할 것인지 정해놓은 규칙이다.
    • 대표적인 프로토콜에는 http, https, ftp 등이있다.
  • http80포트, https443포트를 주로 사용한다.
  • 포트는 생략이 가능하다.
  • httpshttp에 보안기능이 추가된것이다.(HTTP Secure)

userinfo

  • URL에 사용자 정보를 포함해서 인증할때 사용한다.
  • 거의 사용하지 않는다.

host

  • 호스트명을 말한다.
  • 도메인명 또는 IP주소를 직접 사용가능하다.

port

  • 접속 포트를 말한다.
  • 일반적으로 생략된다.
  • 생략시 http는 80, https는 443이다.
  • 특정 서버에서 따로 접근할경우 명시해주어야 한다.

path

  • 리소스 경로를 말하며, 계층적 구조로 되어있다.
    • /home/file1.jpg
    • /members
    • /members/100, /items/iphone12

query

  • key = value 형태로 구성되어있다.
  • ?로 시작하고 &로 추가 가능하다.
    • ?keyA=valueA&keyB=valueB
  • query parameter, query string등으로 불린다.
  • 웹 서버에서 제공하는 파라미터이며 문자형태를 갖는다.

fragment

  • html 내부 북마크 등에 사용한다.
  • 서버에 전송하는 정보가 아니다.

웹 브라우저 요청흐름

URL 요청과 HTTP메시지 생성

https://www.google.com/search?q=hello&hl=ko URL을 웹브라우저가 요청했을 때 그 처리과정을 살펴보자.

[웹 브라우저와 구글서버]

  1. URL을 통해 웹 브라우저는 DNS 서버에서 IP주소를 조회한다.
    • google.com을 DNS에 조회해 IP주소를 찾는다.
  2. HTTP 포트는 생략된다.(443)
  3. HTTP 요청 메시지가 생성된다.

[HTTP 요청 메시지]

HTTP 메시지 전송

[HTTP 메시지 전송과정]

1. 웹 브라우저가 HTTP 메시지를 생성한다.
2. SOCKET 라이브러를 통해 TCP/IP가 있는 전송계층으로 전달된다.

  • 이전 단계에서 찾은 IP와 PORT정보를 가지고 SYN, SNY+ACK, ACK과정을 통해 서버 컴퓨터와 가상으로 연결한다.
  • 연결이 성공하면 TCP/IP가 있는 전송계층으로 데이터를 전달한다.
  1. TCP/IP 패킷을 생성한다. HTTP 메시지가 포함된다.

[TCP/IP 패킷 구성]

  1. 서버는 패킷이 도착하면 패킷 내부의 HTTP 메시지를 분석해 해당 동작을 수행한다.
  2. 서버에서 HTTP 응답 메시지를 생성한다.

[HTTP 응답 메시지 예시]

  1. 클라이언트는 응답메시지를 받아 동작(ex: 렌더링)을 수행한다.

[Reference]
gparkkii.log
Catsbi's Dlog
김영한 - HTTP 웹 기본지식 강의

0개의 댓글