강의와 책과 스터디

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

우당탕 오리의 개발모험 2023. 3. 24. 10:15

URI가 무엇인가, 웹브라우저 요청 흐름은 어떻게 흘러가는가 알아보자

URI

Uniform Resource Identifier
자원식별자 공통형태

URI = URL + URN

출처: 위키백과

  • RUL: Resource Locator : 리소스가 있는 위치
  • URN: Resource Name : 리소스에 이름을 붙임

단, URN을 사용할 때는 유일한 이름일 때만 쓸 수 있다.

URN은 잘 사용하지 않는다

그래서 URI = URL 거의 동일한 의미로 사용한다

URL 분석

표현방법

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
  • 스키마 : 주로 프로토콜 사용 (http, https, ftp ....)
  • userinfo : 거의 사용 안 함
  • host : 호스트명. 도메인명 or IP주소
  • port : 프로토콜에 따라 보편적으로 사용하는 포트는 생략 가능하다.
  • path : 리소스 경로를 나타내며 일반적으로 계층구조로 설계한다(필수는 아니지만 보편적으로 계층설계 함)
  • query : key=value 형태로 작성하고, &로 여러개 추가할 수 있다. 쿼리파라미터, 쿼리스트링 으로 부른다.
  • fragment : html 내 북마크에 사용된다. 서버로 전송하는 정보는 아니다.

예시
https://www.google.com:443/search?q=uri%EC%9C%84%ED%82%A4&hl=ko

  • https : 프로토콜
  • www.google.com : 호스트명
  • 443 : 포트번호
  • /search : path
  • q=uri%EC%9C%84%ED%82%A4&hl=ko : 쿼리 파라미터 (=쿼리 스트링)

웹 브라우저 요청 흐름

  1. [Client] 사용자가 웹브라우저에서 URI를 입력하고 데이터 요청한다
  2. [Client] 웹브라우저가 HTTP 요청메시지를 만든다.
    HTTP 요청메시지 예) GET /search?q=uri%EC%9C%84%ED%82%A4&hl=ko HTTP/1.1 Host:www.google.com
  3. SOCKET라이브러리를 통해서 TCP/IP 계층에 연결하고 HTTP메시지를 전달한다
  4. [Client] TCP/IP 계층에서 TCP/IP패킷을 생성해서 거기에 전달받은 HTTP메시지를 포함시킨다.
    TCP/IP패킷 = 출발지IP,PORT + 도착지IP,PORT + HTTP메시지
  5. [Client] 네트워크 인터페이스 계층으로 TCP/IP패킷을 전달한다.
  6. 서버로 TCP/IP패킷을 전송한다.
  7. 인터넷을 통해서 서버에 도착한다.
  8. [Server] 도착한 TCP/IP패킷에서 HTTP요청메시지만 추출하여 요청정보를 처리한다.
  9. [Server] HTTP응답메시지를 생성한다.
    예)
  10. [Server] 응답 TCP/IP패킷을 생성하고 클라이언트로 전달한다
  11. [Client] 응답 TCP/IP패킷을 열어서 HTTP응답메시지만 추출하고, HTML렌더링하여

이 글은 인프런 김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'를 공부하고 개인적으로 정리한 글입니다.