URI (Uniform Resource Identifier)
resource를 식별하는 통합된 방법으로 URI는 locator, name 또는 둘 다 추가로 분류될 수 있으며, URI 안에는 URL, URN이 있다.
URI의 단어 뜻
- Uniform : 리소스 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier : 다른 항목과 구분하는데 필요한 정보
URL, URN 단어 뜻
- URL - Locator : 리소스가 있는 위치를 지정
- URN - Name : 리소스에 이름을 부여
- 위치는 변할 수 있지만, 이름은 변하지 않는다 (URN)
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않았기 때문에 URL을 잘 기억하자.
- 앞으로 URI 와 URL을 같은 의미로 이야기하겠다.
URL 전체 문법
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
- 프로토콜(https)
- 호스트명(www.google.com)
- 포트 번호(443)
- 패스(Path) - /search
- 쿼리 파라미터 (q=hellog&hl=ko)
Scheme
주로 프로토콜을 사용하며 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙 (http, https, ftp 등)
userinfo
URL에 사용자 정보를 포함해 인증 (거의 사용하지 않는다)
host
호스트명, 도메인명 또는 IP주소를 직접 사용가능 (google.com)
PORT
포트(PORT), 접속 포트로 일반적으로 생략하며 http는 80, https는 443
Path
리소스 경로(path), 계층적 구조 (ex. /home/file1.jpg , /members , /members/100 , /items/iphone12
query
key=value 형태, ?로 시작하며 여러 개면 &로 추가 (?keyA=valueA&keyB=valueB)
queyr parameter, query string등으로 불리며 웹 서버에 제공하는 파라미터로 문자형태이다.
fragment
html 내부 북마크 등에 사용, 서버에 전송하는 정보가 아니다.
웹 브라우저 요청 흐름
HTTP 요청 메시지
- 전송 방식 (GET)
- path : /search
- query : q=hello&hl=ko
- HTTP 버전 : 1.1
- Host : www.google.com
HTTP 메시지 전송
위의 HTTP 요청 메시지를 TCP/IP 패킷으로 감싸서 전송한다.
HTTP 응답 메시지
- HTTP 버전 : 1.1
- 상태코드 : 200, 응답 : OK
- Content-Type : text/html 기반의 UTF-8
- Content-Length : Content의 크기 3423
- 응답 메시지 : <html> ... </html>
응답 메시지를 클라이언트 측에 전달하면 클라이언트는 응답 메시지를 통해 웹 브라우저에 HTML 렌더링을 수행한다.
참고 자료
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard