[Web] - Http 정리 - 02


http 인프런 강의 - 챕터 2

목차


  • URI (URL, URN)
  • 웹 브라우저의 요청 흐름

URI (Uniform Resource Identifier)


나도 개발하면서 URI ? URL ? 햇갈리곤 했었다.

이번에 확실히 정리해보자.

먼저 URI가 가장 큰 범위의 개념이고 URL, URN이 URI에 속한다고 보면 된다.

스크린샷 2022-08-14 오후 9.20.56.png

지금은 URN이 거의 안쓰여서 URL과 URI가 거의 같은 개념으로 쓰인다고 한다.

  • URL : Locator로 주소값으로 특정 자원을 찾아가는 방식이다.
  • URN : Name으로 이름으로 특정 자원을 찾아가는 방식이다.
    • 무슨 차이인가? 싶겠지만 위치는 변할수 있지만 이름은 변할수 없다
    • urn:isbn:292929292929 이런류의 이름은 변경이 불가능하다. (그런데 보편화되지 않았다)

우리가 자주쓰는 URL을 더 알아보자

URL (Uniform Resource Locator)


  • scheme://[userinfo@]host[:port][/path][?query][#fragment]

위와 같은 구조로 되어있다.

  • scheme : 주로 프로토콜을 사용한다 (ex, http, https)
    • http:80, https:443 포트 생략 가능
  • userinfo : URL에 사용자정보를 포함해서 인증, 거의 사용하지 않음
  • host : 도메인명, 혹은 IP 주소값
  • port : 접속 포트 , (80, 443은 생략가능)
  • path : 리소스 경로 , 계층적 구조 (restAPI 등)
  • query : ? 로 시작해서 &로 추가, key=value 형태
    • query parameter, query string으로 불림 (모두 문자열로 인식함)
  • fragment : html내부 북마크 등에 사용 , 서버 전송 안함

웹 브라우저 요청 흐름


스크린샷 2022-08-14 오후 9.28.09.png

  1. 먼저 해당 도메인명을 DNS에 조회해서 IP주소를 받아온다.

스크린샷 2022-08-14 오후 9.28.34.png

  1. 그리고 나서 해당 ip와 port 에 내가 보내고자 하는 정보를 패킷으로 만들어서 전송한다.

스크린샷 2022-08-14 오후 9.29.08.png

스크린샷 2022-08-14 오후 9.29.31.png

스크린샷 2022-08-14 오후 9.29.40.png

정상적으로 도착하면 구글에서 응답 메시지를 보내준다.

그리고 해당 응답 메시지를 분석해 브라우저가 화면을 랜더링 해준다.

www.google.com 을 주소창에 치면 일어나는 일 (What happens when type www.google.com)

위 블로그가 더 구체적으로 자세히 일어나는 일들을 설명해주었다.

DNS로 바로 가는게 아니라 cache를 통해서 네트워크 비용을 절약한다.

또한 TCP 통신을 위한 3-way-handshake 이후에 내가 보내고 싶은 데이터를 보내게 된다.