URI와 웹 브라우저 요청 흐름

xxziiko·2024년 12월 13일

[Network]

목록 보기
2/8
post-thumbnail

김영한님의 모든개발자를 위한 HTTP 웹 기본 지식을 수강 후 해당 내용을 기반으로 작성한 글입니다.

URI (Uniform Resource Identifier)

“URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.”

  • URL: 리소스가 있는 위치를 지정
    • foo://example.com:8042/over/there?name=forret#nose
  • URN: 리소스의 이름
    • urn: example:animal:ferret:nose
  • URL은 변할 수 있지만, 이름은 변하지 않는다.
  • URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음 → URN은 잘 사용되지 않는다.

URL

기본 문법

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

scheme(스키마)

  • 주로 프로토콜이 사용
  • 프로토콜이란 어떤 방식으로 자원에 접근할 것인지에 대한 약속 규칙
    • http, https, ftp 등
  • http - 80, https - 443 포트를 주로 사용하며 포트는 생략 가능하다
  • https는 http에 보안이 추가된 것(HTTP Secure)

userinfo

  • URL에 사용자 정보를 포함하여 인증하는 경우에 사용
  • 거의 사용되지 않음

host(호스트명)

  • 도메인 명 또는 IP 주소를 직접 입력 가능

PORT

  • 포트는 일반적으로 생략이 가능
  • 생략시 http는 80, https 는 443이다.

path(경로)

  • 리소스의 경로
  • 계층적 구조로 이루어져있다.
    • /home/file1.jpg
    • /members/100

query

  • key=value의 형태
  • ?로 시작, &로 추가
    • ?keyA=valueA&keyB=keyB
  • query parameter, query string등으로 불림
  • 웹서버에 제공하는 파라미터이며 문자 형태이다.

fragment

  • html 내부 북마크에서 사용되며 서버에 전송되는 정보는 아니다.


웹 브라우저 요청 흐름

https://www.google.com:443/search?q=hello&hI=ko
  1. www.google.com:443 : DNS 조회하여 IP , PORT 정보를 불러온다.

    • DNS 서버를 통해 도메인 이름(www.google.com)을 IP 주소(예: 142.250.190.78)로 변환.
    • IP와 PORT(443: HTTPS 기본 포트)를 기반으로 서버 연결 시도.
  2. HTTP 요청 메세지를 생성

    GET /search?q=hello&hI=ko HTTP/1.1
    Host: www.google.com
  1. 서버 전송
  • 클라이언트는 TCP 3-Way Handshake로 서버와 연결을 설정.
  • 이후 요청 데이터를 TCP를 통해 전송.
  1. HTTP 응답 메세지
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
	<body>...</body>
</html>
  1. 웹브라우저 HTML 렌더링


SOCKET이란?

  • 네트워크 통신에서 클라이언트와 서버 간의 데이터를 주고받기 위해 사용되는 양방향 통신 채널
  • 웹 애플리케이션과 서버가 실시간으로 데이터를 주고받을 수 있도록 한다.
  • 데이터 송수신 채널을 생성해서 TCP/IP를 연결하며 데이터를 전달한다.

0개의 댓글