URI(Uniform Resource Identifier)
URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다.
Uniform - 리소스 식별하는 통일된 방식
Resource - 자원, URI로 식별할 수 있는 모든 것(제한 없음)
Identifier - 다른 항목과 구분하는데 필요한 정보
URL - Uniform Resource Locator
- 리소스가 있는 위치를 지정
- URI를 URL과 같은 의미로 많이 사용
URN - Uniform Resource Name
- 리소스에 이름을 부여
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음.
URL 전체문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
- scheme : 주로 프로토콜 사용, 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙 예) http, https, ftp 등
- [userinfo@] : URL에 사용자정보를 포함해서 인증, 거의 사용하지 않음
- host : 호스트명, 도메인명 또는 IP 주소를 직접 사용가능
- [:port] : 접속포트, 일반적으로 생략, 생략시 http는 80, https는 443
- [/path] : 리소스 경로(paht), 계층적 구조
- [?query] : ket=value 형태, ?로 시작, &로 추가 기능 (query parameter, query string등으로 불림)
- [#fragment] : html 내부 북마크 등에 사용, 서버에 전송하는 정보 아님
웹 브라우저 요청 흐름
- 클라이언트가 패킷을 생성해서 출발지 IP, PORT, 목적지 IP, PORT 전송 데이터(HTTP 메시지)를 서버에 요청한다.
- 데이터는 수많은 노드들을 거쳐서 서버에 전달된다.
- 서버는 TCP/IP 패킷을 제거 후 HTTP 메시지를 해석하여 응답 메시지를 생성한다.
- 서버도 똑같이 TCP/IP 패킷으로 감싼 후 클라이언트에 전달한다.
참고
inflean 강의 (모든 개발자를 위한 HTTP 웹 기본 지식, 김영한)