-
[HTTP] URI /URL / URNHTTP 2023. 1. 21. 20:17
URI (Uniform Resource Identifier)
URI는 resource(자원)을 통일된 방식으로 다른항목과 구분하는 식별자이다.
- URI는 식별자이다. 경로(locater)-URL, 이름(Name)-URN을 사용해 식별할 수 있다.
- resource는 URI로 식별가능한 모든것이다. (무엇이든 가능)
- URI는 URL을 포함하는 개념으로 혼용해서 사용한다,
URL,URN을 포함하는 URI구조 - Uniform : 리소스를 식별하는 통일된 방식
- Resource : URI로 식별할 수 있는 모든 것
- Identifier : 다른 항목과 구분하는데 필요한 정보 (주민등록번호, 등)
URL과 URN의 차이 URL (Resource Locater) : 경로를 통해 식별하면?
Locater를 이용해 식별하는 방법으로 리소스가 있는 위치를 지정한다.
URN( Resource Name) : 이름을 통해 식별하면?
Name을 이용해 식별하는 방법으로 리소스의 이름을 부여한다.
- URN으로 식별하기는 어렵다. 이유는 이름만으로는 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았기때문.
- 그래서 거의 Locater를 이용하여 식별하는 URL을 쓰기떄문에 URL = URI로 개념을 두고 사용하는것이 보편적이다.
URI URL 분석 - (구글에 hello를 검색했을때 URL)
https://www.google.com/search?q=hello&hl=ko
URL의 전체문법
scheme://[userinfo@]host[:port][/path][?queary][#framgment]
URL문법을 통해 구글에 hello를 검색했을떄 URL을 하나하나 분석해보자
scheme -> https
주로 프로토콜 사용한다.
"프로토콜이란 ? 어떤 방식으로 자원에 접근할 것인가하는 약속규칙이다." ex) http, https, ftp
https 는 http에 보안(HTTP Secuare)이 추가된것이다.
[userinfo@]
URL에 사용자정보를 포함에서인증, 거의 사용하지않음
host -> www.google.com
호스트명 위치 (도메인명 혹은 ip주소를 직접 사용)
도메인명으로 DNS서버에서 iP주소를 얻을 수 있다.
[:port] -> :445
http - 80port, https-443port를 사용하며, 포트는 생략 가능하다.
[/path] -> /search
리소스 경로, 계층적 구조
ex) lee-ding.tistory.com/manage/newpost . . . 와같은 계층적구조
[?quaery] -> ?q=hello&hl=ko
key=value형태로 구성된다.
?로시작한다. &로 파라미터 추가가능
[#fragment] -> #getting-started-introducing-spring-boot
html내부 북마크에서 사용, 서버에 전송되는 정보는 아님
웹 브라우저의 요청 흐름 (위의 분석한 URL은 서버-클라이언트에서 어떻게 사용될까)
<client>
1. DNS로 URL에 포함되어있는 도메인명 조회 : DNS 서버에 도메인명(ww.google.com:443)을 조회해서 ip를 얻음 ->IP
2. URL에서 Port정보->TCP 찾아냄 (HTTPS PORT 443)
3. HTTP 요청 메시지 작성 (GET/serarch?q=hello&hl=ko HTTP/1.1 Host:www.google.com)
4. SOCKET라이브러리를 통해 HTTP메세지가 OS로 전달되고
OS에서 요청패킷<TCP/IP(IP,PORT)패킷 +HTTP메세지(전송데이터)> 생성후 데이터 전달
<server>
5. 서버가 요청패킷이 도착하면 패킷을 벗겨내고 요청메세지만 분석후 데이터를 찾음
6. 서버에서 HTTP응답 메세지를 만든다.
7. HTTP응답메세지에 TCP/IP패킷 씌어서 다시 브라우저로 보낸다.
<client>
8. 패킷을 벗겨내고 렌더링 하면 우리가 원하는 요청 메세지(웹 사이트)가 보인다.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
'HTTP' 카테고리의 다른 글
[HTTP] API설계 예시로 알아보는 URI 설계 개념(컬렉션,스토어,컨트롤URI) (0) 2023.01.26 [HTTP] Client에서 Server로 데이터를 전송하는 방법 (0) 2023.01.25 [HTTP] http 메서드(GET, POST, PUT, PATCH, DELETE) (0) 2023.01.24 [HTTP] HTTP (0) 2023.01.23 [HTTP] IP, TCP, UDP, DNS (0) 2023.01.20