Published 2022. 6. 16. 12:33
본 문서는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 제 주관대로 정리한 글입니다.
URI(Uniform Resource Identifier)
URI? URL? URN?
- "URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다.
- https://www.ietf.org/rfc/rfc3986.txt - 1.1.3. URI, URL, and URN
- URI는 URL과 URN을 포함하는 개념이라 할 수 있다.
URI
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것
- Identifier: 다른 항목과 구분하는 데 필요한 정보
URL, URN
- URL - Locator: 리소스가 있는 위치를 지정한다.
- URN - Name: 리소스에 이름을 부여한다.
- 위치는 변할 수 있지만, 이름은 변하지 않는다.
- URN의 예시, urn:isgn:8960777331
- URN만으로 실제 리소스를 찾는 방법은 보편화돼 있지 않아서 주로 URL을 사용한다.
URL 분석
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com/search?q=hello&hl=ko`
- 요약
- 스키마(프로토콜): https
- 호스트: wwww.google.com
- 포트: 443
- 패스: /search
- 쿼리 파라미터: q=hello&hl=ko
- scheme
- 주로 프로토콜을 사용한다.
- 프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속
- E.g., https, https, ftp, etc.
- userinfo
- URL에 사용자 정보를 포함해서 인증
- 거의 사용하지 않음
- host
- 호스트명: 도메인명 또는 IP 주소 직접 사용 가능
- port
- 일반적으로 생략, 생략시 http는 80, https는 443
- path
- 리소스 경로, 계층적 구조
- E.g.
- /home/file1.jpg
- /members
- /members/100, /items/iphone12
- query
- key=value 형태
- ?로 시작하고, &로 추가 가능
- E.g., ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로도 부름
- fragment
- html 내부 북마크 등에 사용
- 서버로 전송되는 정보는 아님
웹 브라우저 요청 흐름
웹 브라우저가 https://www.google.com/search?q=hello&hl=ko로 요청을 보낸다 가정
www.google.com의 실제 IP 주소를 DNS를 통해 조회한다.- 포트 번호는 생략됐지만 https이기 때문에 기본적으로 443을 가진다.
- 다음과 같은 HTTP 요청 메세지를 만든다.
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
- 웹 브라우저가 생성한 HTTP 메시지를 여러 계층을 통해 TCP/IP 패킷으로 감싼 후, 인터넷을 통해 서버로 보낸다.
- 요청을 받은 서버는 다음과 같이 그에 맞는 응답 메시지를 만들어 다시 클라이언트(웹 브라우저)로 보낸다.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
- 서버의 응답을 받은 웹 브라우저는 메시지를 분석해 HTML을 렌더링 한다.
'Network > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
| [모든 개발자를 위한 HTTP 웹 기본 지식] 06. HTTP 상태 코드 (0) | 2022.06.20 |
|---|---|
| [모든 개발자를 위한 HTTP 웹 기본 지식] 05. HTTP 메서드 활용 (0) | 2022.06.19 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 04. HTTP 메서드 (0) | 2022.06.18 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 03. HTTP 기본 (0) | 2022.06.16 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 01. 인터넷 네트워크 (0) | 2022.06.16 |