URI와 웹 브라우저 요청 흐름
URI와 웹 브라우저 요청 흐름
URI와 URL의 개념
URI, URL, URN의 개념과 그 차이에 대해 알아보았습니다.
URI는 리소스를 식별하는 통일된 방식이며,
URL과 URN을 포함하는 상위 개념입니다.
URL은 리소스의 위치를 나타내며, URN은 리소스의 이름을 지정합니다.
주요 개념 및 설명
- URI (Uniform Resource Identifier): 인터넷 상에서 리소스를 식별하기 위한 통합된 방식입니다.
- URL (Uniform Resource Locator): 리소스의 위치를 나타내는 방식으로,
우리가 일반적으로 웹 주소를 입력할 때 사용하는 형태입니다. - URN (Uniform Resource Name): 리소스의 이름을 나타내는 방식으로,
리소스의 위치와는 무관하게 동일한 이름으로 식별할 수 있습니다. - 리소스(Resource): URI로 식별할 수 있는 모든 것을 의미하며,
웹 페이지, 이미지, 동영상, 실시간 정보 등 다양합니다.
예시 및 추가 설명
- URL 예시:
https://www.google.com/search?q=hello&hl=ko
https
: 프로토콜(스키마)www.google.com
: 호스트명/search
: 경로(패스)q=hello&hl=ko
: 쿼리
- URN 예시:
urn:isbn:9783161484100
- 특정 책의 ISBN 번호를 URN으로 표현한 것입니다.
확인 문제
- 다음 중 리소스의 위치를 나타내는 것은 무엇인가요?
a) URI
b) URL
c) URN urn:isbn:9783161484100
은 어떤 유형의 URI인가요?
URI의 구성 요소 및 문법
URI는 리소스의 위치나 식별에 필요한 여러 구성 요소로 이루어져 있습니다.
각 구성 요소는 리소스에 접근하거나 식별하는 데 필요한 정보를 제공합니다.
주요 개념 및 설명
- 스키마(Scheme): 리소스에 접근하기 위한 프로토콜을 지정합니다. 예:
http
,https
,ftp
등. - 사용자 정보(User Info): 리소스에 접근하기 위한 사용자 이름과 비밀번호를 포함하며, 거의 사용되지 않습니다.
- 호스트명(Host): 리소스가 위치한 서버의 도메인 이름이나 IP 주소입니다.
- 포트 번호(Port): 서버에서 사용하는 포트 번호로, 기본값이 있는 경우 생략 가능합니다.
예: HTTP는 80, HTTPS는 443. - 경로(Path): 서버 내에서 리소스의 위치를 나타냅니다.
- 쿼리(Query): 추가적인 파라미터 정보를 전달하며,
?
로 시작하고&
로 구분합니다. - 프래그먼트(Fragment): 리소스 내의 특정 부분을 지정하며, 서버로 전송되지 않고 클라이언트 측에서 사용됩니다.
예시 및 추가 설명
- URI의 일반적인 구조:
[스키마]://[사용자 정보]@[호스트명]:[포트 번호]/[경로]?[쿼리]#[프래그먼트]
- 예시 분석:
https
: 스키마user:password
: 사용자 정보www.example.com
: 호스트명8080
: 포트 번호/path/to/resource
: 경로query=example
: 쿼리 파라미터section1
: 프래그먼트
https://user:password@www.example.com:8080/path/to/resource?query=example#section1
확인 문제
- 다음 URI에서 포트 번호는 무엇인가요?
ftp://user:pass@ftp.example.com:21/files
- URI의 어느 부분이 리소스의 경로를 나타내나요?
a) 스키마
b) 호스트명
c) 경로 - 다음 중 서버로 전달되지 않는 URI 구성 요소는 무엇인가요?
답변: 프래그먼트(Fragment)
웹 브라우저 요청 흐름
웹 브라우저에서 URL을 입력하면, 해당 리소스를 가져오기 위해 여러 단계를 거칩니다.
이 과정에는 DNS 조회, TCP 연결 설정, HTTP 요청 메시지 생성 및 전송 등이 포함됩니다.
주요 개념 및 설명
- DNS 조회: 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버를 조회합니다.
- TCP 연결 설정: 서버와의 통신을 위해 TCP 프로토콜을 사용하여 연결을 설정합니다.
- HTTP 요청 메시지 생성: 원하는 리소스를 요청하기 위한 HTTP 메시지를 생성합니다.
- HTTP 요청 전송: 생성된 메시지를 TCP/IP 계층을 통해 서버로 전송합니다.
- 서버의 응답 처리: 서버는 요청을 처리하고 HTTP 응답 메시지를 생성하여 클라이언트에 전송합니다.
- 브라우저의 응답 처리: 브라우저는 받은 응답 메시지를 해석하여 사용자에게 콘텐츠를 표시합니다.
예시 및 추가 설명
- URL 입력 및 DNS 조회:
- 사용자가
https://www.google.com/search?q=hello&hl=ko
를 입력합니다. - 브라우저는
www.google.com
에 대한 IP 주소를 얻기 위해 DNS 서버를 조회합니다.
- 사용자가
- TCP 연결 설정:
- 얻은 IP 주소(예:
172.217.161.164
)와 포트 번호(HTTPS의 기본 포트 443)를 사용하여
TCP 연결을 설정합니다.
- 얻은 IP 주소(예:
- HTTP 요청 메시지 생성 및 전송:
- 요청 메시지 생성:
GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com
- 생성된 메시지를 TCP/IP 계층을 통해 서버로 전송합니다.
- 요청 메시지 생성:
- 서버의 응답 처리 및 전송:
- 서버는 요청을 받아 처리하고, 응답 메시지를 생성합니다.
HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 1024 [HTML 콘텐츠]
- 응답 메시지를 클라이언트로 전송합니다.
- 서버는 요청을 받아 처리하고, 응답 메시지를 생성합니다.
- 브라우저의 응답 처리 및 렌더링:
- 브라우저는 응답 메시지를 해석하고, HTML 콘텐츠를 렌더링하여 사용자에게 표시합니다.
확인 문제
- 웹 브라우저가 도메인 이름을 IP 주소로 변환하기 위해 사용하는 서비스는 무엇인가요?
- TCP 연결을 설정하기 위한 과정은 무엇이라고 하나요?
- 다음 중 웹 브라우저가 서버로 전송하는 요청 메시지는 무엇인가요?
a) HTTP 요청 메시지
b) DNS 요청 메시지
c) FTP 요청 메시지
관련 용어 정리
- HTTP (HyperText Transfer Protocol): 웹 상에서 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜입니다.
- TCP/IP: 인터넷 프로토콜 스위트로, 데이터를 패킷으로 나누어 전송하고, 네트워크를 통해 목적지까지 전달하는 역할을 합니다.
- DNS (Domain Name System): 도메인 이름과 IP 주소를 매핑하는 시스템으로, 사람이 읽기 쉬운 도메인 이름을 사용하여 서버에 접근할 수 있게 해줍니다.
This post is licensed under CC BY 4.0 by the author.