Network
URL과 리소스
realizers
2023. 3. 18. 23:13
728x90
반응형
URL 문법
URL을 사용하여 인터넷 상의 모든 리소스를 찾을 수 있지만 리소스들은 scheme마다 접근 방법이 다릅니다.
💡 scheme
- scheme은 리소스를 가져오려면 어떤 프로토콜을 사용해서 서버에 접근해야 하는지 알려주는 중요한 정보입니다.
- scheme은 알파벳으로 시작해야합니다.
💡 사용자 이름과 비밀번호
- 몇몇의 scheme은 리소스에 접근하기 위해 사용자 이름을 필요로 합니다.
💡 호스트와 포트
- 호스트는 접근하려고 하는 리소스를 가진 인터넷상의 호스트 장비를 말합니다.(도메인명이나 IP주소)
- 포트는 서버가 열어놓은 네트워크 포트를 말합니다.
💡 경로
- URL의 경로는 얻고자 하는 리소스가 서버의 어느 위치에 존재하는지 알려줍니다.
- HTTP URL에서 경로는 '/' 문자를 기준으로 나뉩니다.
💡 파라미터(Matrix parameter)
- URL의 파라미터는 애플리케이션이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미터를 받는데 사용합니다.
- 파라미터는 이름/값 쌍으로 구성되며 ';' 문자를 기준으로 구분하여 URL에 기술합니다.
- 리소스에 접근하는데 필요한 어떤 추가 정보를 전달할 수 있습니다.
💡 질의(Query string)
- 질의는 물음표(?) 뒤에 붙일 수 있는 key=value의 값입니다. 예를들어 tistory.com/newpost?type=post의 URL이 있다면 ? 뒤에 있는 있는 key=value 입니다.
- Query String과 Matrix parameter의 차이점은?
💡 프래그먼트
- 리소스의 특정 부분을 가리킬 수 있도록 지시할 수 있습니다.
- 일반적으로 HTTP 서버는 객체의 일부가 아닌 전체만을 다루기 때문에 클라이언트는 서버에 플래그먼트를 전달하지 않습니다. 브라우저가 서버로부터 응답값을 받아 프래그먼트를 사용하여 보고자하는 리소스의 특정 부분부터 보여줍니다.
- 서버는 객체를 전체 단위로만 전송하기 때문에 URL 프래그먼트는 클라이언트에서만 사용됩니다.
단축 URL
💡 상대 URL
- URL은 상대 URL과 절대 URL로 나뉩니다.
- 절대 URL은 리소스에 접근하는데 필요한 모든 정보를 가지고 있습니다. 예를들어 naver.com/auth/login 으로 표현할 수 있습니다.
- 상대 URL은 모든 정보를 담고 있지 않습니다. 상대 URL을 통해 특정 리소스에 접근하기 위해서는 기저(base)라고 하는 다른 URL을 사용해야 합니다.
💡 상대 경로 표기법
- / : root 경로를 의미합니다.
- ./ : 현재 디렉토리를 의미합니다.
- ../ : 부모 디렉토리를 의미합니다.
<!doctype html>
<html>
<head>
<title>Example</title>
</head>
<body>
<a href="./logout">logout</a>
</body>
</html>
안전하지 않은 문자
- 안전한 전송이란 정보가 유실될 위험없이 URL을 전송할 수 있다는 것을 의미합니다.
- URL 설계자들은 모든 인터넷 프로토콜로 URL이 전송되길 바랬고, 이와 같이 가독성도 있길 원했습니다. 하지만 URL 설계자들은 특정 사용자들이 안전한 알파벳 외의 문자도 포함하려고 할 때가 있다는 것을 알았고 그래서 이스케이프라는 기능을 추가하여, 안전하지 않은 문자를 안전한 문자로 인코딩할 수 있게끔 하였습니다.
💡 escape
- 컴퓨터 시스템의 기본 문자 집합은 보통 영어 중심으로 설정되어 있습니다. 역사적으로 US-ASCII 문자 집합을 사용해왔습니다. US-ASCII는 문자를 서식화하고 하드웨어상에서 신호를 주고받기 위해 7비트를 사용하여 영문 자판에 있는 키 대부분과 몇몇 출력되지 않는 제어 문자를 표현합니다. 하지만 적은 수의 문자만을 포함하기 때문에 많은 언어들까지 US-ASCII가 지원하지 않습니다.
- 또한 URL에 특정 이진 데이터를 포함해야하는 경우 이를 지원하기 위해 URL에 escape string을 사용할 수 있도록 하였습니다.
- escape string은 US-ASCII에서 사용이 금지된 문자들로, 특정 문자나 데이터를 인코딩할 수 있게끔하여 이동성과 완성도를 높였습니다.
- 인코딩은 안전하지 않은 문자를 '%' 기호로 시작해 ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 escape string으로 바꿉니다.
728x90
반응형