URI (Uniform Resource Identifier)
정의: 리소스를 식별하는 통합된 방법
URI vs URL vs URN
URL: 우리가 웹 브라우저에서 적는 주소
URN: 실제 이름을 부여 -> 리소스 결과와 매핑이 안되어 이름만으로는 실제 리소스를 찾는 방법이 보편화 되지 않음
Uniform: 리소스 식별하는 통일된 방식
Resouce: 자원, URI로 식별할 수 있는 모든 것(제한 없음, 파일뿐 아니라 실시간 교통정보등 우리가 구분할 수 있는 모든 것)
URL - Locator: 리소스가 있는 위치를 지정
URN - Name: 리소스에 이름을 부여
ex) https://www.gooogle.com:443/search?q=hello&hi=ko
프로토콜(https) : 어떤 방식으로 자원에 접근할 것인가 하는 약속, 규칙
ex) http(포트 80), https(포트 443) : 둘 다 포트 생략 가능 + ftp도 있음
호스트명(www.google.com) : 도메인명이나 IP주소를 직접 입력 가능
포트번호(443) : 생략가능, 일반적으로 http는 80, https는 443
패스(/search) : 리소스 경로(path), 계층적 구조
쿼리 파라미터(q=hello&hi=ko) : key=value 형태, ?로 시작, &로 추가기능
ex) ?keyA=valueA&keyB=valueB
query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
fragment : html 내부 북마크등에서 사용, 서버로 전송되는 정보는 아님
웹 브라우저 요청 흐름
TCP/IP 에서 패킷을 씌움 (IP,PORT 정보 들어있음)
HTTP 메세지를 포함시킴
구글 서버가 요청패킷의 TCP/IP 패킷을 다 까서 버리고 HTTP 메세지를 끄집어냄.
Content-Type : 내가 응답하는 데이터가 HTML형식이고 언어는 UTF-8로 charset되어 있다.
Content-Length: 실제 HTML 데이터의 길이
응답 패킷에는
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
<html>
위와 같이 HTML 정보가 들어있고, 이걸 까서 웹 브라우저가 HTMl 렌더링을 하고 사용자가 결과를 볼 수 있다.
=> 다음학습 : HTTP가 무엇인가?
Reference
김영한 님 - 모든 개발자를 위한 HTTP 웹 기본 지식