URI(Uniform Resource Identifier)

Uniform: 리소스를 식별하는 통일된 방식.
Resource: 자원, URI로 식별할 수 있는 모든 것들.
Identifier: 다른 항목과 구분하는데 필요한 정보.

 

URL(Uniform Reource Locator)

리소스가 있는 위치를 지정. 

형식: scheme://[userinfo@]host[:port][/path][?query][#fragment]
  ex) https://www.google.com:443/search?q=hello&hl=ko

scheme에는 주로 프로토콜(어떤 방식으로 자원에 접근할 지 하는 약속된 규칙) 사용.
userinfo는 사용자 정보를 포함해서 인증하는 것인데 거의 사용하지 않음. 
host에는 도메인명 또는 IP 주소 직접 사용가능하고 포트는 일반적으로 생략하는데 특정 서버에 접근 시 적어주기.
path는 리소스가 았는 경로로 보통 계층적 구조로 되어 있음.
query는 key=value의 형태로 ?로 시작하고 여러개 추가 시 &로 추가 가능. 웹서버에서 제공하는 파라미터로 문자형태.
fragment는 html 내부 북마크 등에서 사용하고 서버로 전송되는 정보는 아님.

 

URN(Uniform Reource Name)

리소스에 이름을 부여.
이름은 변하지 않지만 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음.

 

웹브라우저 요청 흐름

HTTP 요청 메시지 예시

GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com

HTTP 메시지 전송하면 그 다음은 패킷 생성하고 웹브라우저가 구글 서버에 요청 패킷 전달.
요청 패킷이 도착하면 TCP/IP 패킷은 버리고 HTTP 메시지를 해석. 
그 다음은 데이터 찾아서 구글서버는 다시 웹브라우저에게 HTTP 응답 메시지 만들기. 

HTTP 응답 메시지 예시

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
 <body>...</body>
</html>

응답 패킷을 구글 서버가 전달해서 웹브라우저에게 도착하면 HTML 들어 있으니까 이걸로 랜더링.
랜더링 한 결과를 우리가 볼 수 있게 되는 것.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com