URI(Uniform Resource Identifier)
URI는 resource를 통일된 방식으로 다른 항목과 구분하는 식별자이다. 여기서 resource는 URI로 식별 가능하면 무엇이든 될 수 있다. (딱히 제한 없다.) 강의에서도 그렇고 구글링을 해본 결과 보통 URI와 URL을 혼용해서 사용한다. 그 이유를 자료들과 나의 해석을 섞어서 설명해보겠다.
그림을 보면 알 수 있듯이 URI는 URL, URN을 포함하고 있다. URI는 Identifier이다. 식별자이다. 식별하는 방법에는
경로(Locator), 이름(Name)을 사용하는 두 가지 방법이 있다. 단어에서 알 수 있듯이 Locator를 사용해서 리소스를 찾는
방법이 URL, Name을 사용해서 찾는 방법이 URN이다. 하지만 Name만으로 리소스를 찾는 방법이 보편화되지 않았다고 한다. 그래서 Locator를 이용하는 방법만 사용되기에 URI = URL으로 설명, 사용하는 경우가 많은 것이다.
우리가 자주 보는 https://www.google.com/XXX 이런 것이 경로(Locator)를 사용해서 리소스를 식별(Identify)하는 것이다. URL을 작성할 때도 규칙이 있다. 나눠서 분석해보며 문법을 확인해 보겠다.
https://www.google.com:443/search?q=hello&hl=ko
구글에 hello를 검색했을 때의 URL이다. scheme://[userinfo@]host[:port][/path][?query][#fragment] 이것이 URL의 문법이고 위의 케이스와 비교해가며 설명을 해보겠다.
- scheme -> https : sheme에는 주로 프로토콜을 사용한다. (http, https, ftp etc,,)
- [userinfo@] -> x : 사용자 정보를 포함해서 인증할 때 사용한다는데 거의 사용하지 않는다고 한다.
- host -> www.google.com : 호스트명 위치이며 도메인명 또는 ip 주소를 직접 사용한다고 한다. (저번에 포스팅했던 DNS 때문에 둘 다 같은 의미인 거 ㅇㅋ?)
- [:PORT] -> 443 : 접속 포트이며 http는 80, https는 443이다. 일반적으로 생략한다.
- [/path] -> search : 리소스 경로를 나타내며 계층적 구조이다. 우리가 코딩할 때 예를 들면 html 파일 /member/login 이런 느낌 알지. ex) /home/file1.jpg, /items/iphone12
- [?query] -> ?q=hello&hl=ko : key = value 형태로 구성된다. ?로 시작하고, &로 복수 작성 가능하다. query parameter, query string으로 불린다. 위의 q, hl key는 구글에서 설정한 것이다. 아마 q=> 요청 값, hl=> 언어이지 않을까?
- [#fragment] => x : html 내부 북마크 등에 사용하며 서버에 전송하는 정보는 아니다.
위의 URL을 전송하면 HTTP 요청 메시지를 만들어서 http버전이 1,2라면 TCP, 3이면 UDP를 연결해서 패킷을 생성한다. 이를 서버에 보내면 서버가 응답 메시지를 전송해주고 그 결과 클라이언트 화면에 지금 우리가 보고 있는 웹 사이트가 나타나는 것이다.
(HTTP 메시지는 다음 강의에서 자세히 설명하는 것 같다... 아마도..... 눈 아프다....)
'Network & CS' 카테고리의 다른 글
http 일반 헤더 (쿠키?) (3) | 2022.09.11 |
---|---|
HTTP 상태 코드 (404 error??) (1) | 2022.09.02 |
HTTP 메서드 (GET, POST, PUT, PATCH, DELETE), 메서드 속성 (0) | 2022.08.23 |
HTTP란? & HTTP 메시지 (0) | 2022.08.19 |
인터넷 네트워크 (IP, TCP, UDP, PORT, DNS) (0) | 2022.08.16 |