2. URI와 웹 브라우저 요청 흐름

KOO HEESEUNG·2021년 9월 27일
post-thumbnail

이 포스팅은 인프런 김영한 강사님의 <모든 개발자를 위한 HTTP 웹 기본 지식>을 수강하고, 공부하여 글로 정리한 것입니다. 그대로 갖다 붙여넣는 내용이 아니라 기억나는대로 작성한 후 다시 추가적으로 정리하는 방식을 취하고 있기 때문에 틀린 부분이 있을 수 있습니다. 잘못된 점은 짚어주시면 감사하겠습니다.

1. URI

URI (Uniform Resource Identifier)

  • Uniform : 리소스를 식별하는 특별한 방식
  • Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
  • Identifier : 다른 항목과 구분하는데 필요한 정보

URI = URL(Locator) + URN(Name)

URL : 리소스 위치 지정(주소) / URN : 리소스 이름 부여

※ 이후 URI와 URL을 같은 의미로 이야기하겠음.


URL 전체 문법

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

ex) https://www.google.com:443/search?q=hello&hl=ko

scheme

  • 주로 프로토콜을 사용함(http, https, ftp 등..)

  • 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙

userinfo

  • URL에 사용자 정보를 포함하여 인증할 때 사용(거의 사용되지 않음)

host

  • 호스트명. 도메인이나 IP 주소 입력.

port

  • 포트 번호. http는 80, https는 443을 주로 사용함.

path

  • 리소스 경로. 계층적 구조.
  • ex) "/home/file.jpg", "/members", "/members/100"

query

  • ? 뒤에 key=value의 형태로 작성. &로 추가 가능.

  • query parameter, query string 등으로 불림.

fragment

  • html 내부 북마크에 사용됨.
  • 서버로 전송되는 정보는 아님.

2. 웹 브라우저 요청 흐름

  1. DNS 조회하여 IP 찾아냄
  2. HTTPS(혹은 HTTP) 포트 생략
  3. 웹 브라우저에서 HTTP 요청 메시지 생성
  4. socket 라이브러리 통해 데이터 전달
    1) TCP/IP 연결(IP, PORT) - 이 과정에서 3 way handshake를 통해 서버와의 연결 확인
    2) 데이터 전송
  5. TCP/IP 패킷 생성하여 HTTP 메시지를 감쌈.
  6. 이 패킷 정보가 인터넷으로 흘러가 서버로 전달됨.
  7. 서버에서 응답 메시지를 클라이언트로 전달.
    Content-Type : 응답하는 데이터가 어떤 형식이고, 무엇으로 인코딩되어 있는지에 대한 내용.
  8. 클라이언트는 응답 메시지를 받아 웹 브라우저에서 HTML을 렌더링하여 화면에 보여줌.

0개의 댓글