URI
URI, URL, URN
- URI(Uniform Resource Identifier)는 로케이터(Uniform Resource Location), 이름(Uniform Resource Name) 또는 둘다로 구분될 수 있다.
- URI라는 개념은 리소스를 식별하는 것. 다시 말해 리소스의 위치와 이름을 식별하는 것을 말한다.
[URI, URL URN의 관계]
URL과 URN
- 리소스를 찾을때 대부분의 경우 URN보다는 URL을 이용한다.
- URL은 우리가 흔히 웹 브라우저에서 사용하는 주소이다.
- URN은 리소스에 이름을 부여하는것을 말한다. 하지만, 이름만 가지고는 주소를 찾아갈 수 없기 때문에 실제로 사용하기는 힘들다.
[URL과 URN의 구성]
URI의 의미
- Uniform : 리소스를 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음 - HTML파일, 실시간 교통정보 등)
- Identifier : 다른 항목과 구분하는데 필요한 정보
URL, URN
- URL : Locator로 리소스가 있는 위치를 나타낸다.
- URN : Name으로 리소스의 이름을 가리킨다.
- URL(위치)는 변할 수 있지만, URN(이름)은 변하지 안흔ㄴ다.
- URN(이름)만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되어있지 않다.
URL 구조 분석
URL구조 : scheme://[userinfo@]host[:port][/path][?query][#fragment]
URL예시 : https://www.google.com/search?q=hello&hl=ko
- 프로토콜 :
https
- 호스트명 :
www.google.com
- 포트번호 :
443
- 패스 :
/search
- 쿼리 파라미터 :
q=hello&hl=ko
schema
- 주로 프로토콜이 사용된다.
- 프로토콜이란 어떤 방식으로 자원에 접근할 것인지 정해놓은 규칙이다.
- 대표적인 프로토콜에는
http
, https
, ftp
등이있다.
http
는 80
포트, https
는 443
포트를 주로 사용한다.
- 포트는 생략이 가능하다.
https
는 http
에 보안기능이 추가된것이다.(HTTP Secure)
userinfo
- URL에 사용자 정보를 포함해서 인증할때 사용한다.
- 거의 사용하지 않는다.
host
- 호스트명을 말한다.
- 도메인명 또는 IP주소를 직접 사용가능하다.
port
- 접속 포트를 말한다.
- 일반적으로 생략된다.
- 생략시
http
는 80, https
는 443이다.
- 특정 서버에서 따로 접근할경우 명시해주어야 한다.
path
- 리소스 경로를 말하며, 계층적 구조로 되어있다.
/home/file1.jpg
/members
/members/100
, /items/iphone12
query
key
= value
형태로 구성되어있다.
?
로 시작하고 &
로 추가 가능하다.
- query parameter, query string등으로 불린다.
- 웹 서버에서 제공하는 파라미터이며 문자형태를 갖는다.
fragment
- html 내부 북마크 등에 사용한다.
- 서버에 전송하는 정보가 아니다.
웹 브라우저 요청흐름
URL 요청과 HTTP메시지 생성
https://www.google.com/search?q=hello&hl=ko
URL을 웹브라우저가 요청했을 때 그 처리과정을 살펴보자.
[웹 브라우저와 구글서버]
- URL을 통해 웹 브라우저는 DNS 서버에서 IP주소를 조회한다.
google.com
을 DNS에 조회해 IP주소를 찾는다.
- HTTP 포트는 생략된다.(
443
)
- HTTP 요청 메시지가 생성된다.
[HTTP 요청 메시지]
HTTP 메시지 전송
[HTTP 메시지 전송과정]
1. 웹 브라우저가 HTTP 메시지를 생성한다.
2. SOCKET 라이브러를 통해 TCP/IP가 있는 전송계층으로 전달된다.
- 이전 단계에서 찾은 IP와 PORT정보를 가지고
SYN
, SNY+ACK
, ACK
과정을 통해 서버 컴퓨터와 가상으로 연결한다.
- 연결이 성공하면 TCP/IP가 있는 전송계층으로 데이터를 전달한다.
- TCP/IP 패킷을 생성한다. HTTP 메시지가 포함된다.
[TCP/IP 패킷 구성]
- 서버는 패킷이 도착하면 패킷 내부의 HTTP 메시지를 분석해 해당 동작을 수행한다.
- 서버에서 HTTP 응답 메시지를 생성한다.
[HTTP 응답 메시지 예시]
- 클라이언트는 응답메시지를 받아 동작(ex: 렌더링)을 수행한다.
[Reference]
gparkkii.log
Catsbi's Dlog
김영한 - HTTP 웹 기본지식 강의