브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다.
아래는 URL, URI의 구성이다.
Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.
URL은 scheme
, hosts
, url-path
로 구분할 수 있다.
scheme
은 통신 방식(프로토콜)을 결정하는데, 일반적인 웹 브라우저에서는 http(s)를 사용한다. hosts
는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다. url-path
는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.Uniform Resource Identifier의 줄임말로, URI는 URL의 요소(scheme
, hosts
, url-path
) + query
, fragment
를 포함한다.
query
는 웹 서버에 보내는 추가적인 질문으로, 위 그림의 http://www.google.com:80/search?q=JavaScript
를 브라우저의 검색창에 입력하면, 구글에서 JavaScript를 검색한 결과가 나타난다.
fragment
는 일종의 북마크 기능을 수행하며 URL에 fragment(#
)와 특정 HTML 요소의 id를 전달하면 해당 요소가 있는 곳으로 스크롤을 이동할 수 있다.
브라우저의 검색창을 클릭하면 나타나는 주소가 URI이며, URI는 URL을 포함하는 상위개념이다.
따라서, 'URL은 URI다.' 는 참이고, 'URI는 URL이다.' 는 거짓이다.
IP 주소는 인터넷상에서 네트워크에 연결된 특정 PC의 주소를 나타내는 체계이며, 그 주소에 진입할 수 있는 정해진 통로를 PORT라고 부른다.
IP는 Internet Protocol의 줄임말로, 인터넷상에서 네트워크에 연결된 특정 PC의 주소를 나타내는 체계이다. 이때, 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분되며 이것을 IPv4라고 한다.
IPv4는 Internet Protocol version 4의 줄임말로, IP 주소체계의 네 번째 버전을 뜻한다.
터미널에서 nslookup <scheme를 제외한 URI>
명령어를 입력하면 IPv4의 주소를 확인할 수 있다.
IPv4는 각 덩어리마다 0~255까지 나타낼 수 있으며 약 43억개의 IP주소를 표현할 수 있다.(2^(32))
그 중, 몇 가지는 이미 용도가 정해져 있으며 아래의 IP주소를 기억해두자.
localhost
, 127.0.0.1
: 현재 사용 중인 로컬 PC
0.0.0.0
, 255.255.255.255
: broadcast address로, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소이다. 서버에서 접근 가능 IP 주소를 broadcast address로 지정하면, 모든 기기에서 서버에 접근할 수 있다.
그러나, 개인 PC의 보급으로 인해 IPv4로 할당할 수 있는 PC가 한계를 넘어서게 되면서, 이를 해결하기 위해 IPv6가 등장했다.
IPv4 vs IPv6
구분 | IPv4 | IPv6 |
---|---|---|
길이 | 각 16 byte 총 128 bits | 각 4 bytes 총 32bits |
개수 | 약 43억개 | 약 2^(128)개(거의 무한대) |
표기 방법 | 2001:db8::ff00:42:8329 | 123.45.67.89 |
터미널에서 리액트를 실행하면 나타나는 화면에는, 로컬 PC의 IP 주소인 127.0.0.1 뒤에 :3000
과 같은 숫자가 표현된다.
이 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)를 의미하며, 리액트를 실행했을 때에는 로컬 PC의 IP 주소로 접근하여, 3000번의 통로를 통해 실행 중인 리액트를 확인할 수 있다.
이미 사용 중인 포트는 중복해서 사용할 수 없으며, 만약 다른 프로그램에서 3000번 포트를 사용 중이라면, 다른 포트 번호(3001)로 리액트가 실행된다.
포트 번호는 0~ 65535 까지 사용할 수 있다.
그중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있으며, 아래에 포트 번호를 기억해두자.
22
: SSH80
: HTTP443
: HTTPS이미 정해진 포트 번호라도, 필요에 따라 자유롭게 사용할 수 있으며, HTTP(:80), HTTPS(:443)과 같이 잘 알려진 포트의 경우 포트 번호를 URI에 생략할 수 있지만, 그 외의 잘 알려지지 않은 포트(3000과 같은 임시 포트)는 반드시 포트 번호를 포함해야 한다.
웹 브라우저를 통해 특정 사이트에 진입할 때, IP 주소를 대신해 사용하는 주소로, IP가 도로명 주소라면 Domain 이름은 상호라고 볼 수 있다.
따라서, 한 눈에 파악하기 힘든 IP주소를 보다 간단하게 나타낼 수 있다.
IPv4와 마찬가지로 터미널에서 nslookup
명령어를 사용해 IP 주소 및 Domain name을 확인할 수 있다.
로컬 PC를 나타내는 127.0.0.1
은 localhost
로 사용할 수 있지만, 그 외의 모든 Domain 이름은 일정 기간 동안 대여하여 사용한다.
브라우저의 검색창에 Domain 이름을 입력하여 해당 사이트로 이동하기 위해서는 해당 Domain 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하며, DNS (Domain Name System)에서 수행한다.
DNS는 호스트의 대여한 Domain 이름을 IP주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템으로, 만약 브라우저 검색창에 naver.com
을 입력하면, 이 요청은 DNS에서 IP주소(ex. 223.130.200.107
)를 찾은 후 IP주소에 해당하는 웹 서버로 요청을 전달하여 client와 server가 통신할 수 있도록 한다.
크롬 브라우저 사용중 만나는 에러 메시지는 웹페이지를 제공하는 server와 크롬 브라우저가 소통하는 단계, 또는 기기와 네트워크의 연결, 크롬 브라우저가 해석할 수 없는 데이터를 전송받은 경우 발생한다.
크롬 브라우저를 제공하는 구글은 에러 메시지를 핸들링하는 방법을 잘 설명해두었다.
아래는 크롬 브라우저가 웹 페이지를 로드하는 데에 문제가 발생한 경우의 에러 메시지들이다.
위의 에러 메시지를 만나면 아래와 같은 문제가 발생할 수 있다.
전체 에러 메시지 list는 크롬 브라우저 검색창에 chrome://network-errors/
을 입력해서 확인할 수 있다.
Reference: 코드스테이츠