티스토리 뷰

URL과 URI

 

브라우저의 주소창에 입력한 URL은 인터넷에서 웹페이지, 이미지, 비디오 등 리소스가 존재하는 위치를 나타낸 문자열이다. 

URL는 Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. URL은 scheme, hosts, url-path로 구분한다. scheme은 통신방식(프로토콜)을 결정하고 hosts는 웹 서버의 이름이나 도메인, IP 등의 주소가 온다. url-path는 CLI에서 파일에 접근하는 것처럼 웹 서버에서 지정한 루트 디렉토리부터 시작하여 파일의 경로와 파일명을 나타낸다.

URI는 Uniform Resource Identifier의 줄임말로, URL의 기본 요소에 더해 query와 fragment를 포함한다. URI는 URL을 포함하기 때문에 URL보다 상위 개념이다. query는 웹 서버에 보내는 추가적인 질문이다. 위의 예시에서는 구글에서 JavaScript를 검색한 결과가 나타날 것이다. fragment는 브라우저에게 북마크된 지점에 위치한 컨텐츠를 보여주기 위해 사용한다. 벨로그의 사이드바에서 헤더를 클릭하면 해당 문단으로 이동하는 것처럼 #과 어떤 HTML요소의 id를 전달하면 해당 요소가 있는 곳으로 스크롤을 이동시킬 수 있다.

부분 명칭 설명
file://
http://
https://
scheme 통신 프로토콜
127.0.0.1
www.google.com
hosts 웹 페이지, 이미지, 동영상 등의 파일이 위치한
웹 서버 이름 또는 도메인 또는 IP
:80
:443
:8000
port 웹 서버에 접속하기 위한 통로
/search
/Users/username/Desktop
url-path 웹 서버의 루트 디렉토리부터 해당 파일 위치까지의 경로
?q=JavaScript
?key1=value1&key2=value2
query 웹 서버에 전달하는 추가 질문
? qeury string 시작
parameter name=parameter value
& query string separator
#print fragment 웹 페이지의 특정 요소로 스크롤 이동
#HTML요소id

 


 

IP와 Port

우리나라의 주소체계에 지번 주소와 도로명 주소가 있다. 이처럼 컴퓨터 세계에도 네트워크의 주소 체계가 있다. 바로 IP address(Internet Protocol address, IP주소)이다. IP주소는 특정 PC의 주소를 나타낸다. 그리고 그 PC에 진입할 수 있는 정해진 통로가 있는데 PORT(포트)라고 부른다. 

https://www.one.com/en/hosting/what-is-ipv6

IP는 주소 체계인데 주소 체계도 버전이 있다. IPv4는 버전4라는 뜻이다. IPv4는 nnn.nnn.nnn.nnn의 형태로 0<=nnn<=255이다. 2^(32)인 약 43억 개의 IP 주소를 표현할 수 있었는데 인터넷의 보급이 늘어남에 따라 부족해졌다. IPv6는 2^(128)개의 IP 주소를 표현할 수 있는 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx의 형태로 x는 16진수이다.
다음과 같이 용도가 정해져 있는 IP주소도 있다. 외우자.

  • localhost, 127.0.0.1
    현재 사용 중인 로컬 PC를 가리킨다.
  • 0.0.0.0, 255.255.255.255
    broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소이다. 서버에서 접근 가능 IP주소를 broadcast address로 지정하면 모든 기기에서 서버에 접근할 수 있다.

 

포트 번호가 없는 IP주소는 택시를 타고 백화점 주소로 가서 백화점에 들어가지는 못하는 것이다. 백화점에 1번 게이트, 2번 게이트로 진입할 수 있는 것처럼 IP주소가 가리키는 PC에 접속할 수 있는 통로(채널)가 존재한다. 포트 번호는 0~65535 까지 사용할 수 있고 그 중에서 0~1024의 포트 번호는 통신 규약에 따라 이미 정해져 있다. 예를 들어 22: SSH, 80: HTTP, 443: HTTPS 로 정해져 있다. 이러한 잘 알려진 포트의 경우 포트번호를 URI에 생략할 수 있지만 잘 알려지지 않은 포트(3000, 4000과 같은 임시포트)는 반드시 포트 번호를 포함시켜야 한다. 


IP는 특정 PC를 나타내는 고유 번호이다. 그리고 PORT는 IP가 가리키는 컴퓨터에서 네트워크나 특정 프로세스를 식별하기 위한 수단이다. 예를 들어 어떤 IP 주소를 할당받은 컴퓨터가 있다. 이 컴퓨터에 카카오톡, 디스코드, 슬랙 프로세스가 실행 중이다. 컴퓨터가 메세지를 받았을 때 아무런 정보가 없다면 어떤 프로세스로 해당 메세지를 보내야 할 지 알 수 없다. 이 때 프로세스별로 각각 자신의 포트 번호를 가지고 있고, 그 포트를 통해서 데이터를 받으니 카카오톡 메세지인지 디스코드 메세지인지 슬랙 메세지인지 분류할 수 있다.

 


 

Domain과 DNS

서울 서초구 신반포로 176 의 주소는 어디일까? 신세계백화점 강남점이다. 실제 주소체계보다 이름표를 붙이듯이 네이밍을 한 것이 기억하기도, 소통하기도 쉽다. 때문에 우리는 IP주소인 223.130.200.104보다 사람이 읽을 수 있는 주소인 도메인 naver.com을 사용한다.
네트워크 상에 존재하는 모든 PC는 IP주소가 있다. 그러나 모든 IP주소가 도메인을 가지는 것은 아니다. 로컬 PC인 127.0.0.1은 localhost를 계속 사용할 수 있지만 그 외의 모든 도메인은 일정 기간 대여를 해서 사용해야 한다. 

도메인은 최상위 도메인, 차상위 도메인(서브 도메인), 도메인 이름으로 구성되어 있다.
최상위 도메인(TLD, Top Level Domain): .com, .org, .net, .github.io(예외적으로 .io는 바로 왼쪽의 주소를 합한 것)
차상위 도메인(SLD, Second Level Domain): www., m., dev.
도메인이름(Domain Name): naver, tistory

www.naver.com // 서브도메인.도메인이름.최상위도메인

 

DNS는 Domain Name System의 준말이다. 컴퓨터는 사람의 언어인 도메인을 이해하지 못한다. 브라우저에 도메인을 입력하면 컴퓨터가 알 수 있는 원래 IP주소로 바꿔줘야 하는데, 도메인과 매칭된 IP주소를 확인하는 시스템이 DNS이다. 전화번호부같은 것이다. 호스트의 도메인 이름을 IP주소로 변환하거나 반대의 경우를 수행하도록 개발된 데이터베이스 시스템이다. 브라우저에 도메인을 입력하면 DNS에서 매칭되어 있는 IP주소를 찾고 해당 웹 서버로 요청을 전달하여 클라이언트와 서버가 통신할 수 있도록 한다.

 


 

회고

한 6일동안 코태기였던 것 같다. 날씨가 따뜻해졌다 추워졌다 해서인지 건강도 안좋았고 블로그가 손에 잡히지 않았다. 그리고 리액트를 시작하면서 리액트에 대해 블로그를 정리하는 것이 집중이 안됐다. 그래서 리액트를 배운 기간동안 리액트를 써보는 과제에만 집중하고 블로깅은 넘겼다. 음, 차라리 아예 몰랐던 것을 새롭게 알게 되면 블로그에 정리하는 것이 즐거운데 리액트처럼 조금 안다고 생각하는 것이 더욱 그런 것 같다. 그런데 이 때를 잘 해결해야 한다. 안다고 착각하는 것이기 때문이다🙄 JSX가 무엇인가? 컴포넌트가 무엇인가? State와 Props가 무엇인가? 리액트의 특징이 무엇인가? 이런 질문에 대해 나의 언어로 제대로 대답할 수 있는가?

나의 부트캠프 기간동안 가장 큰 목표는 '기록하는 습관 기르기'였다. 결국 미루었던 일을 끝마치기로 마음을 잡았다. 이 때 친구의 조언이 큰 도움이 되었다. '요즘 무기력하다. 내일 밀린 것 다 해야되는데 이런 마음으로는 내일도 어려울 것 같다' 라는 나의 말에 '내일 그 미룬 것들을 다 끝내버릴 수 있는 날이다. 너무 홀가분 한 날이지 않겠느냐' 라니. omg. 발상의 전환이다. 오늘 다 끝낼 수 있다는 생각에 기분 좋게 밀린 일을 해치우고 있다. 고맙다 😊

반응형

'개발 > CS, Network' 카테고리의 다른 글

SOP와 CORS  (0) 2023.04.04
REST API, REST 성숙도 모델  (0) 2023.03.29
Client Server Architecture / Protocol / API  (0) 2023.03.28
CDN(Content Delivery Network)이 무엇일까?  (0) 2023.03.07
Virtual DOM을 왜 사용할까?  (0) 2023.03.06
댓글