CS/네트워크

[네트워크] URI와 웹 브라우저 요청 흐름

연듀 2023. 2. 5. 14:52

 

URI(Uniform Resource Identifier)

 

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

 

HTTP 웹 기본 지식-인프런

 

 

URI 단어 뜻

Uniform: 리소스 식별하는 통일된 방식

Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)

Identifier: 다른 항목과 구분하는데 필요한 정보

 

URL, URN 단어 뜻

URL-리소스의 위치를 지정

URN-리소스의 이름을 부여 (URN이름만으로 실제 리소스를 찾을 수 있는 방법은 보편화되지 않음)

URI와 URL을 같은 의미로 봐도 무방하다. (URI가 URL을 포함하기 때문에) 

 

 

 

URL 문법

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

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

 

 

scheme: 주로 프로토콜 사용

프로토콜이란 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙(http, https, ftp 등) 

http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능

https는 http에 보안 추가 (HTTP Secure)

 

userinfo: URL에 사용자정보를 포함해서 인증. 거의 사용하지 않음

 

host: 호스트명. 도메인명 또는 IP 주소를 직접 사용할 수 있음

port: 접속 포트. 일반적으로 생략한다. 생략시 http는 80, https는 443

path: 리소스 경로(path), 계층적 구조

query: key=value 형태. ?로 시작, &로 추가 가능

query parameter(웹 서버에 제공되는 파라미터), query string(문자 형태) 등으로 불림

 

fragment: html 내부 북마크 등에 사용. 서버에 전송하는 정보 아님

 

 

 

 

웹 브라우저 요청 흐름

 

 

1. 웹  브라우저가 http 요청 메세지를 생성

 

클라이언트가 아래 주소로 접속한다.

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

 

웹 브라우저가 DNS 서버를 조회해 호스트명(www.google.com)으로 IP주소를 찾아낸다. 

포트는 https이므로 생략된 443이다. 

이 IP주소와 포트번호로 HTTP 요청 메세지를 생성한다. 

 

HTTP 요청 메세지는 아래와 같이 생겼다.

 

더보기

GET /search?q=hello&hl=ko HTTP/1.1

Host: www.google.com

메서드, path, 쿼리 정보, http 버전 정보, host 정보 포함 

 

 

2. HTTP 메시지 전송

HTTP 웹 기본지식 - 인프런

 

 

1) tcp/ip 패킷에 http 메시지를 포함해 요청 패킷을 서버에게 전달 

2) 서버에서 HTTP 응답 메세지(TCP/IP패킷 + HTTP메세지)를 만들어 응답 패킷을 클라이언트에게 전달

 

 

응답 메세지는 다음과 같은 형태이다.

더보기

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423


<html>
 <body>...</body>
</html>

 

3) 웹 브라우저에서 HTML 렌더링