URI란?
URI(Uniform Resource Identifier)
Uniform : 리소스를 식별하는 통일된 방식.
Resource : 자원, URI로 식별할 수 있는 모든 것.
Identifier : 다른 항목들과 구분하는데 필요한 정보.
인터넷에 있는 자원을 나타내는 유일한 주소로, 통합 자원 식별자라고 한다.
URI의 종류
URI에는 URL과 URN이 있다.
URL : Uniform Resource Locator, 리소스가 있는 위치를 지정하는 방식으로 특정 서버의 리소스에 대해 정확히 어디에 위치해 있고 어떻게 접근할 수 있는지 알려준다.
URN : Uniform Resource Name, 리소스에 이름을 부여하는 방식으로 리소스의 위치에는 영향을 받지 않고 그 리소스 자체를 나타내는 이름 역할을 한다.
따라서, URN은 리소스의 위치가 변해도 상관 없는 반면 URL은 특정 시점에 리소스의 위치를 알려주기 때문에 리소스가 옮겨지면 해당 URL을 더이상 찾을 수 없고 리소스에 접근할 수 없게 된다.
URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았기 때문에 URL이 대중화되었다.
URL의 구조
scheme :// [userinfo@] host [:port] [/path] [?query] [#fragment]
scheme - http, https, ftp 등 프로토콜이 사용됨. 어떤 방식으로 자원에 접근할 것인가 하는 약속, 규칙
[userinfo@] - URL에 사용자 정보를 포함하여 인증해야할 때 사용, 현재 거의 사용x.
host - 호스트명으로 도메인 네임이나 IP주소를 직접 사용
[:port] - 생략가능, https는 80, https는 443(well-known port)
[/path] - 리소스가 있는 경로, 디렉토리 같이 계층적 구조.
[?query] - 쿼리, key-value형태, ?로 시작, &으로 추가 가능
[#fragment] - html 내부 북마크 등에 사용되며 서버로 전송하지 않는 값
웹 브라우저의 요청 흐름.
웹 브라우저에서 리소스를 요청하면(https://google.com/search?q=hello 등의 URL을 입력하면),
1. 해당 URL을 바탕으로 DNS 정보를 DNS 서버에서 조회하여 서버의 IP주소를 알아낸다. 또한 http 요청 메시지를 생성한다.
- http 요청 메시지에는 GET, POST 등의 메소드와 path, query 정보, http 버전 정보, host 정보(어디로 보낼지)등의 내용이 들어 있다.
2. SOCKET 라이브러리를 통해 TCP/IP로 3-way handshake 과정을 진행하여 서버와 연결한다.
3. 운영체제 TCP/IP 계층으로 데이터를 전송하기 위해 데이터를 전달한다.
4. HTPP 메시지가 포함된 TCP/IP 패킷을 생성한다.
5. 패킷 정보를 인터넷으로 보낸다.
6. 서버에 요청 패킷이 도착하면 패킷의 HTTP 메시지를 서버가 해석한다.
7. HTTP 응답 메시지를 위와 같은 방식으로 패킷을 생성하여 응답 패킷을 웹 브라우저로 전송한다.
8. 수 많은 노드들을 통해 응답 패킷이 도착하게 되면 웹 브라우저가 HTML을 렌더링하여 웹페이지를 화면에 보여준다.
사진 출처) https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'Knowledge' 카테고리의 다른 글
[VNC] 내 컴퓨터에서 원격 컴퓨터로 파일 옮기기 (0) | 2022.11.30 |
---|---|
[VNC] 라즈베리파이 화면 해상도 설정 (0) | 2022.11.30 |
[파이썬] 소켓 통신 과정 (0) | 2022.04.27 |
인터넷 네트워크 기본 (0) | 2022.01.07 |
네트워크와 소켓 (0) | 2021.08.22 |