URI, URL, URN
uri는 로케이터, 이름 또는 둘 다 추가로 분류될 수 있다.
uri : 가장 큰 개념이 있다 리소스를 식별하는 주민번호를 식별한다고 생각하면 된다.
거기에는 크게 2가지가 있는데
url : 리소스 로케이터 - 리소스가 이 위치에 있다라는 의미
urn : 리소스의 이름이다. - 이름을 가지고 찾아가는 것
우리가 평소에 쓰는 뭐뭐 닷컴같은것들이 uri이다.
urn은 이름을 부여해서 사용하지만 사실상 거의 이름을 찾을 수 없다.
urn은 잘 사용하지 않기 때문에 있다 정도만 알면 된다.
URL의 뜻
Uniform : 리소스를 식별하는 통일된 방식
Resource : 리소스란 우리가 구분할 수 있는 모든것을 리소스라고 생각하면 된다.
Identifier : 다른 항목과 구분하는데 필요한 정보
우리가 사용하는 url은 어떻게 구성되어 있는가?
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
프로토콜(https)
호스트명(www.google.com)
포트번호(443)
패스(/search)
쿼리 파라미터(q=hello&hl=ko)
Scheme
먼저 스키마는 주로 프로토콜이 사용되고
프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙이다. ex) http, hhtps, ftp등등
http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능하다.
https는 http에 보안(Secure)이 강화된 버전이라고 생각하면 된다.
host
호스트명
도메인명 또는 ip 주소를 직접 사용가능
PORT
포트(PORT)
접속 포트
일반적으로 생략, 생략시 http는 80, https는 443
path
리소스 경로(path), 계층적 구조
예)
• /home/file1.jpg
• /members
• /members/100, /items/iphone12
query
key=value 형태
?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
query parameter, query string 등으로 불림
웹서버에 제공하는 파라미터라는 의미, 쿼리가 문자열로 주로 쓰이기 때문에 query string이라고 불림
웹브라우저가 요청을 하면 어떤 흐름으로 요청이 처리될까?
간략하고 이해하기 쉽게 보자면
우리가 url을 웹 브라우저에 입력을 하면 DNS를 조회하여 ip주소를 찾아내고 포트정보를 찾아낸다.
그리고 http 요청 메시지를 생성한다.
요청메시지에는 http 버전, path, query, 호스트정보 등등이 들어간다.
1. 웹 브라우저가 http 메시지를 생성하면
2. 소켓 라이브러리릍 통해서 TCP/IP로 3way handshake로 서버와 연결을 하고 데이터를 전달한다.
3. TCP/IP에 패킷을 생성하여 ip포트정보가 포함된다.
4. 랜장비를 통해서 서버로 메시지가 출발한다.
수많은 노드들을 거쳐서 구글서버에 도착을 하면
구글 서버는 TCP/IP패킷을 버리고 HTTP 메시지를 해석한다.
그리고 http 응답 메시지를 보낸다.
응답 메시지에는 http버전, 정상이면 200ok를 보낸다.
그리고 똑같이 TCP/IP패킷을 씌워서 웹브라우저로 보내게 된다.
우리의 웹브라우저는 TCP/IP패킷을 벗겨서 안의 데이터를 보여주는 방식이다.
'WEB' 카테고리의 다른 글
비 연결성(connectionless) (0) | 2024.03.18 |
---|---|
상태유지(Stateful), 무상태(Stateless) (0) | 2024.03.18 |
인터넷 네트워크 (2) | 2024.03.11 |