8월 29일!!!
대망의 소프티어 부트캠프 프로젝트 발표 및 질의응답 날이었다.
다른 팀의 발표가 끝나고 질의 응답을 진행하던 중 한 팀이 firebase 기반으로 배포하기에 Pull Request 또한 미리보기가 가능하다는 이야기에 프로트엔트 분께서 그럼 미리보기의 도메인은 어떻게 되는 것인지에 대한 질문을 하셨다. 질의응답을 진행하시다가 혹시 url 구조에 대해 설명해달라고 하셨는데 그 질문을 듣고 허거걱! 하는 나 자신을 발견했다.
이를 계기로 Url에 대해서 한 번 알아보고자 한다!!
인터넷 초창기에는 특정 서버에 저장된 정보를 접근하기 위해 사용자가 해당 서버의 IP 주소를 직접 입력해야 했습니다. 하지만 IP 주소는 숫자로 이루어져 있어 사람이 기억하기 어려웠고, 이에 대한 해결책이 필요했습니다.
192.168.1.12001:0db8:85a3:0000:0000:8a2e:0370:7334추가적인 내용은 TCP/IP에서 TCP와 IP에 대해 알아보자!에서 확인하실 수 있습니다!
인터넷이 발전하면서 정보는 다양한 서버에 분산 저장되었습니다. 하지만 긴 숫자로 이루어진 IP 주소를 기억하는 것은 비효율적이었고, 이를 해결하기 위해 URL(Uniform Resource Locator) 개념이 도입되었습니다. URL은 인터넷에서 자원의 위치를 체계적으로 지정하는 표준 형식을 제공합니다.
URL의 첫 부분으로 자원에 어떻게 접근할지에 대한 방법을 명시합니다.
HTTP : HTTP는 웹에서 문서와 데이터를 주고받는 기본 프로토콜입니다. 데이터는 평문으로 전송합니다!
HTTPS : HTTPS는 HTTP의 보안 버전으로 데이터를 암호화하여 전송합니다. 이 프로토콜은 SSL/TLS 암호화를 통해 사용자와 서버 간의 데이터 전송을 보호합니다.
FTP : FTP는 파일을 서버와 클라이언트 간에 전송하기 위한 프로토콜입니다. 보통 평문으로 데이터를 전송하지만 HTTPS와 유사하게 보안을 강화한 FTPS나 SFTP가 사용되기도 합니다.
SMTP : SMTP는 이메일을 송신할 때 사용하는 프로토콜입니다. 이메일 클라이언트가 메일 서버에 이메일을 보내거나 메일 서버 간에 이메일을 전달하는 데 사용됩니다.
Telnet : Telnet은 원격지의 컴퓨터에 접속하여 명령어를 실행할 수 있도록 하는 프로토콜입니다. 주로 원격 서버 관리에 사용되지만 보안이 취약하여 현재는 SSH(Secure Shell)로 대체되는 경우가 많습니다.
SSH : SSH는 Telnet의 보안 버전으로 원격지의 컴퓨터에 안전하게 접속하여 명령어를 실행할 수 있도록 하는 프로토콜입니다!
도메인은 인터넷에서 특정 웹사이트나 서버를 식별하는 고유한 이름입니다. 이는 사람이 쉽게 기억하고 입력할 수 있도록 IP 주소를 대신하는 역할을 합니다.
www.example.com이라는 도메인을 예를 들어보겠습니다!
도메인 이름의 맨 끝에 위치하며 일반적으로 도메인의 성격이나 목적을 나타냅니다!
.com: 상업적 사이트(Commercial)
.org: 비영리 기관(Organization)
.net: 네트워크 관련 사이트(Network)
.edu: 교육 기관(Education)
.gov: 정부 기관(Government)
www.example.com에서 com이 최상위 도메인입니다!
TLD 바로 앞에 위치하며 보통 조직, 회사, 브랜드 또는 개인의 이름을 나타냅니다.
www.example.com에서 example이 2차 도메인입니다!
2차 도메인 앞에 추가되며 이는 도메인 내에서 특정 섹션이나 서비스를 나타냅니다.
www.example.com에서 www가 하위 도메인입니다!
FQDN은 전체 도메인 이름을 이야기합니다! 다시 말해 하위 도메인, 2차 도메인, TLD를 합친 것입니다!
www.example.com이 전체 도메인 이름입니다!
DNS는 Domain Name System의 약자로 도메인 이름을 해당하는 IP 주소로 변환하는 역할을 합니다. 사용자가 www.example.com을 입력하면, DNS 서버가 이를 192.168.1.1과 같은 IP 주소로 변환하여 요청을 처리합니다.
도메인 동작 방식에 대한 설명은 도메인 동작 방식을 참고해 주세요!
도메인 이름 뒤에 위치하며 웹 서버에서 특정 자원의 위치를 가리킵니다. 경로는 사용자가 웹사이트 내에서 특정 페이지, 이미지, 문서, 파일 등을 쉽게 찾을 수 있도록 설계되어 있으며 이는 서버의 파일 시스템 구조와 비슷한 방식으로 구성됩니다. 이는 서버 관리자가 파일을 관리하고 웹 개발자가 자원을 조직화하는 데 도움을 줍니다.
https://www.example.com/products/laptops
위 URL에서 /products/laptops는 products 폴더 내 laptops 페이지를 나타냅니다.
쿼리 스트링(Query String)은 URL의 일부로 추가적인 정보를 서버에 전달하기 위해 사용됩니다. 주로 웹 애플리케이션에서 특정 데이터를 요청하거나 검색 조건을 지정하거나 세션 정보 등을 전달하는 데 많이 활용됩니다. ? 문자 뒤에 키-값 쌍 형태로 구성되며, 여러 개의 값은 &로 구분합니다.
https://www.example.com/search?q=hyoyoon&sort=price_asc
q=hyoyoon → 검색 키워드sort=price_asc → 가격 오름차순 정렬쿼리 스트링은 GET 요청에서 주로 사용되며, 서버로 특정 데이터를 전달하여 원하는 결과를 가져오는 역할을 합니다.
URL에서 특정 위치나 섹션으로 이동하기 위해 사용되는 부분입니다. 웹 페이지 내의 특정 요소나 섹션에 직접 접근할 수 있게 하며 # 문자로 시작됩니다.
https://www.example.com/page.html#section2
이 URL을 통해 브라우저는 page.html 페이지를 로드한 후 section2로 정의된 위치로 자동으로 이동하게 됩니다. 프래그먼트는 주로 HTML 문서 내의 특정 앵커(anchor) 태그나 요소의 id 속성과 연관되어 작동합니다.
프래그먼트는 브라우저에 의해 처리되며 페이지를 다시 로드하지 않고도 현재 페이지 내의 다른 위치로 이동할 수 있습니다. 이로 인해 페이지 이동 속도가 빠르며 서버에 추가 요청이 발생하지 않습니다. 해당 특징으로 단일 페이지 애플리케이션(SPA)에서 자주 사용됩니다.
https://www.instagram.com/#profile
https://www.instagram.com/#messages
# 뒤의 프래그먼트는 실제로는 서버 요청을 발생시키지 않고 SPA가 자바스크립트를 통해 화면을 전환하는 데 활용합니다.
URL에서 자주 보이지 않지만 특정 프로토콜이 사용하는 통신 포트를 지정할 때 사용됩니다.
포트 번호는 컴퓨터 네트워크에서 특정 프로세스나 서비스와의 통신을 식별하는 역할을 하는 숫자입니다. 네트워크에서 한 컴퓨터는 여러 개의 서비스나 어플리케이션을 동시에 실행할 수 있는데 포트 번호를 통해 어떤 서비스로 데이터를 보낼지 구분할 수 있습니다.