URI 과 URL
URI(Uniform Resource Identifier)는 인터넷에 있는 자원을 나타내는 유일한 주소이다. 인터넷에서 요구되는 기본 조건으로써 인터넷 프로토콜에 항상 붙어 다닌다. URI라는 개념은 어떤 형식이 있다기 보다는 특정 자원을 식별하는 문자열을 의미한다. URI은 scheme, hosts, url-path, query로 구분할 수 있다.
URL(Uniform Resource Locator)은 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다.
URI는 URL의 상위개념이기때문에 URL은 URI다는 참이지만 그 반대는 거짓입니다.
URI는 식별이고 URL은 위치이다.

| 부분 | 명칭 | 설명 |
| file://, http://, https:// | scheme | 통신 프로토콜 |
| 127.0.0.1, www.google.com | hosts | 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP |
| :80, :443, :3000 | port | 웹 서버에 접속하기 위한 통로 |
| /search, /Users/username/Desktop | url-path | 웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등의 파일이 위치까지의 경로 |
| q=JavaScript | query | 웹 서버에 전달하는 추가 질문 |
IP address
IP 통신에 필요한 고유 주소를 말하며, 통신 기능이 제공되는 기기들이 서로 통신을 하기 위해 필요한 고유 번호이다. 각 장치들 간 통신을 식별할 수 있는 전화번호라고 생각하면 쉽다. 스마트폰이나 노트북에도 IP주소가 있다.

IPv4
IPv4주소는 32비트 길이의 식별자로 0.0.0.0~255.255.255.255까지의 숫자의 조합으로 이루어지며 총 네구간으로 나눠져있으며 최대 12자리의 번호로 이루어져 있습니다. IPv4를 통해 최대 약 43억개의 서로 다른 주소를 부여할 수 있습니다. 하지만 전세계 공용으로 사용되며 인터넷 사용자수가 급증하면서 IPv4주소가 고갈될 문제에 처해있습니다. 이러한 고갈 문제를 해결하기 위해 등장한 주소가 바로 IPv6입니다.
IPv6
IPv6주소는 기존의 IPv4주소체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소입니다. IPv6주소의 경우 일반적으로 16비트 단위로 나누어지며 각 16비트 블록은 다시 4자리 16진수로 변환되고 콜론으로 구분되어 집니다. 기존에 IPv4주소가 최대 43억개를 만들 수 있는 반하여, IPv6주소는 3.4*10 38개의 주소를 생성할 수 있습니다
포트(PORT)
포트는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미한다. 리액트를 실행했을 때에는 로컬 PC의 IP 주소로 접근하여, 3000번의 통로를 통해 실행 중인 리액트를 확인할 수 있습니다. 이미 사용 중인 포트는 중복해서 사용할 수 없습니다. 만약 다른 프로그램에서 3000번 포트를 사용 중이라면, 다음과 같이 다른 포트 번호로 리액트가 실행됩니다.

포트번호
- 0 ~ 1023 : 잘 알려진 Well-Known Port 라고 부르며, 웹 서버나 메일 서버 등의 일반적인 프로그램들이 사용합니다.
- 1024 ~ 49151 : Registered Port 라고 부르며, 잘 알려져 있는 프로그램들이 아닌 다른 용도의 프로그램들이 사용합니다.
- 49152 ~ 65535 : 동적 포트(Dynamic Port)로 서버가 클라이언트를 식별할 때 사용합니다.
- 22 : SSH : SSH( Secure Shell ), [11] 보안 로그인, 파일 전송 ( scp , sftp ) 및 포트 포워딩
- 80 : HTTP: HTTP( Hypertext Transfer Protocol ) [48] [49] 버전 1.x 및 2에서 TCP를 사용, HTTP/3 은 UDP 위에 전송 프 로토콜 인 QUIC 를 사용
- 443: HTTPS. : HTTPS( Hypertext Transfer Protocol Secure ) [48] [49] 버전 1.x 및 2에서 TCP를 사용합니다. HTTP/3 은 UDP의 상위 전송 프로토콜 인 [50] QUIC를 사용합니다 .
도메인
IP는 사람이 기억하기 어렵기 때문에 이를 위해서 각 IP에 이름을 부여할 수 있게 했는데, 이것을 도메인이라고 한다. IP주소를 입력하지 않고 도메인 이름만 입력해도 해당 사이트로 이동이 가능하다.

도메인의 구조

- Root : 가장 최상위 도메인이며 맨 끝에 오며 주로 생략한다.
- TLD(Top Level Domain) : Root의 직속 하위를 Top level 도메인이라 하며 .com .net .kr 등이 있으며 국가코드를 사용하기도 한 다.
- SLD(Second Level Domain) : TLD의 서브도메인이며 같이 국가 코드를 사용하기도 한다.
- Sub : 서브도메인
DNS(Domain Name System)
인터넷에서 웹사이트 정보를 보유하고 있는 정보시스템이며 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.

1. 검색창에 http://example.com를 검색하면, 먼저 내 컴퓨터에 있는 로컬 DNS(캐싱된 도메인이 있나)에서 hosts 파일에 해당 도메인 주소가 있나 찾아본다.
2. 이미 로컬 DNS가 알고 있으면 바로 알려주나 없을 시엔 다른 DNS에게 물어보아야한다.
3. 먼저 루트 DNS에게 물어보며 루트 서버는 해당 도메인의 최상위 도메인을 어떤 DNS가 관리하는지 로컬 DNS에게 알려준다.
4. .com을 관리하는 TLD DNS에게 example.com에 대해 쿼리한다.
5. TLD DNS는 example.com을 관리하는 네임 서버를 알려준다.
6. example.com의 도메인을 관리하는 네임 서버에 http://example.com에 대해 쿼리하면 주소를 알려준다.
7.로컬 DNS는 네임서버에게 받은 IP주소를 내 컴퓨터에게 넘겨주고 내 컴퓨터는 받은 주소를 통해 서버와 통신 할 수 있다.
권한있는 도메인 서버 : 실제로 DNS 리소스 레코드를 보유하고 담당하는 서버 - example 도메인을 관리하는 네임서버
'TIL' 카테고리의 다른 글
| 9일차 HTTP메소드 및 상태 코드 (0) | 2022.04.27 |
|---|---|
| 9일차 웹서비스 개발 기초 (0) | 2022.04.27 |
| 7일차 웹서비스 개발 기초 (0) | 2022.04.25 |
| 6일차 리눅스 (0) | 2022.04.22 |
| 5일차 리눅스 (0) | 2022.04.21 |