티스토리 뷰
네트워크 기본 - IP주소, PORT, DNS, URL, URI
1. IP주소
1) IP란?
IP(Internet Protocol)는 인터넷을 통해 데이터를 주고받을 때 사용되는 통신 규약으로서 OSI 7계층중 LAYER 3에 위치하는 프로토콜이다. IP는 데이터를 패킷 단위로 나누어 전송하고, 받는 쪽에서는 그 패킷들을 다시 조립하여 원래의 데이터로 변환하는 과정을 거친다. IP를 통해 전송되는 데이터는 인터넷 상의 다양한 기기들과 통신할 수 있다.
2) IP주소란?
- 인터넷에 연결된 각각의 기기를 구별하기 위해 사용되는 고유한 번호이다.
IP주소는 네트워크 내에서 특정 기기를 찾아 데이터를 전송할 수 있도록 도와주며, 기기들이 서로 통신할 때 필수적인 요소이다.
IP주소는 IPv4와 IPv6의 두 가지 버전이 있다.

IPv4 : 32비트로 구성된 IP주소로, 대략 43억 개의 고유한 주소를 생성할 수 있다. IPv4 주소는 4개의 0~255 사이의 숫자로 이루어져 있으며, 각 숫자는 점(.)으로 구분된다.
ex) 121.100.0.1
IPv6 : 128비트로 구성된 IP주소로, 거의 무한한 수의 고유한 주소를 생성할 수 있다. IPv6 주소는 8개의 4자리 16진수로 이루어져 있으며, 각 16진수는 콜론(:)으로 구분된다.
ex) 2002:0db8:85a3:0000:0000:8a2e:0370:7332
기본적으로 IP주소라고 하면, IPv4를 이야기한다.
하지만, IPv4는 대략 43억 개에 해당하는 고유한 주소만 생성할 수 있기 때문에 IPv4는 더이상 할당되지 않고 있다.
그러면 더이상 새로운 디바이스에서는 IPv4를 사용하여 인터넷 통신이 불가능하다는 문제가 생기지 않는가?
→ 이러한 문제는 유동IP, 고정IP를 이용하여 해결할 수 있다.
3) IP주소 작동 방식 (고정IP, 동적IP)
고정 IP주소 : 기기에 할당된 IP 주소가 변하지 않고 항상 동일한 주소를 사용하는 것이다. 고정 IP 주소는 웹 서버, 이메일 서버 등 인터넷 서비스를 제공하는 기기에 사용되며, 안정적인 통신을 위해 필요하다.
유동 IP주소(동적IP) : 기기에 할당된 IP 주소가 일정 시간이 지나면 변경되는 것이다. 유동 IP 주소는 인터넷 서비스 제공자(ISP)에 의해 임시로 할당되며, 일반 가정이나 회사에서 사용하는 인터넷 접속에 주로 사용된다. 이러한 동적 IP를 이용하여 IP주소를 효율적으로 관리하고, 부족한 IPv4 주소 활용에 도움이 될 수 있다.
4) IP주소의 역할
(1) 기기 식별 : IP 주소는 인터넷에 연결된 모든 기기를 구별할 수 있는 고유한 번호이다. 이를 통해 데이터를 전송할 대상을 정확하게 찾을 수 있다.
(2) 데이터 전송 : IP 주소는 데이터를 전송하는 과정에서 중요한 역할을 한다. 데이터를 패킷 단위로 나누어 전송하며, 받는 쪽에서는 패킷들을 조립하여 원래의 데이터로 변환하는 과정을 거친다.
(3) 라우팅 : IP 주소는 네트워크 상에서 데이터 패킷의 경로를 결정하는 데 사용된다. 라우터는 IP 주소를 통해 패킷이 어느 기기로 가야 하는지를 판단하고, 최적의 경로를 찾아 전송한다.
2. PORT
1) 포트(PORT)란?
포트는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만,
소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
사용법 : URI 문법에 의해서 사용 및 표기할 수 있으며, IP 주소와 함께 표기하는 예는 다음과 같다.
ftp://000.000.000.000:21
여기서 000.000.000.000은 IP 주소를 나타내며 : 다음의 21이 포트 번호를 의미한다.
2) 포트(PORT), 언제 사용 될까?
포트는 보통 항구나 공항을 나타낸다. 이러한 항구와 공항은 외부세계와 접속할 수 있는 관문이 된다.
컴퓨터에서도 마찬가지다. 컴퓨터에서의 포트(port)란 외부의 다른 장비와 접속하기 위한 플러그와 같은 것이다.
컴퓨터나 노트북의 뒷면이나 옆면을 보면 네트워크, 마우스, 키보드 등을 연결하기 위한 포트들을 확인할 수 있다.
이러한 포트 개념은 프로그램에도 있다.
만약 우리가 웹브라우저를 이용하여 인터넷상에 있는 서버를 접속할 때 컴퓨터에 있는 웹브라우저 프로그램과 서버에 있는 웹서버 프로그램간을 연결해주는 플러그와 같은 역할을 하는 것이 포트이다.
우리가 특정 서버에 접속하려면 URL이나 IP주소를 입력한다.
그러면 인터넷 상에서 URL 또는 IP를 토대로 해당 서버가 있는 컴퓨터로 찾아간다.
하지만, 대부분의 컴퓨터는 여러 개의 프로그램이 동시에 실행되고 있다.
따라서 이 여러 개의 프로그램 중 어느 프로그램이 접속하려는 프로그램인지 컴퓨터에게 알려주어야한다.
이때, 사용하는 것이 포트번호이다.
웹 브라우저로 서버에 접속을 하면 서버의 80번 포트를 가진 프로그램에 접속한다.
메일을 확인하기 위해 메일 서버에 접속하기 위해서는 110번 포트를 사용한다.
특정 프로그램에 SSH 접속을 할 경우에는 22번 포트를 사용한다.
즉, 포트는 "논리적인 접속장소를 나타내는 이정표"이다.
3) Well-Known PORT
포트는 0번 ~ 65535번으로 이루어져 있다.
이는 크게 3가지 종류로 구분된다.
| 0번 ~ 1023번 | Well-known port (잘 알려진 포트) |
| 1024번 ~ 49151번 | registered port (등록된 포트) |
| 49152번 ~ 65535번 | dynamic port (동적 포트) |
well-known port 중에서 자주 사용하는 포트

3. DNS
1) DNS란?
도메인 네임 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예:www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예:192.0.2.44)로 변환합니다.
2) DNS의 구성 요소
• 도메인 네임 스페이스 (Domain Name Space) : DNS가 저장 관리하는 계층적 구조
• 네임 서버 (Name Server) : 권한 있는 DNS 서버
• 리졸버 (Resolver) : 권한 없는 DNS 서버'
도메인 네임 스페이스라는 규칙(방법)으로 도메인 이름 저장을 분산한다.
네임 서버가 해당 도메인 이름의 IP 주소를 찾는다.
리졸버가 DNS 클라이언트 요청을 네임서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.
3) 도메인 네임 스페이스
DNS는 전세계적인 거대한 분산 시스템으로 도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미한다.

계층적 도메인 레벨
도메인 네임 스페이스는 일반적으로 트리 구조를 하고 있으며 최상위 레벨부터 순차적으로 계층적인 소속 관계를 나타낸다.
하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임된다.
- 예를 들어, ksh.kr 도메인은 kr 도메인을 관리하는 네임 서버에 등록되어있고 www.ksh.kr은 ksh.kr을 관리하는 네임서버에 등록되어 관리된다.
4) 네임 서버
문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.
일반적으로 데이터베이스 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현의 역할을 수행한다.
전 세계에 13개의 Root DNS 서버가 구축되어 있으며 이 네임 서버를 복사하여 같은 기능을 담당하는 미러서버가 존재한다.
네임서버는 Root DNS Server, Top-Level Domain(TLD) DNS Server, Second-Level Domain(SLD) DNS Server(Authoritative DNS Server), Anauthoritative DNS Server의 4가지로 분류할 수 있다.
5) DNS Resolver
DNS Resolver는 사용자의 컴퓨터나 네트워크에 위치한 DNS 클라이언트이다.
DNS Resolver는 사용자가 도메인 이름을 입력하면, 해당 도메인 이름을 IP주소로 변환하기 위해 DNS 서버에 요청하여 질문하는 역할을 한다. 어떤 네임 서버에서 찾아야하는지, 이미 캐시 되어있는지 등 어떻게든 찾아서 클아이언트에게 찾았으면 찾은 것을 못 찾았으면 못 찾았다고 전달하는 역할을 한다.

6) DNS 동작 방식

1. 브라우저 → DNS Resolver (캐시에 있으면 해당 IP주소 바로 반환)
2. DNS Resolver → Root DNS Server → DNS Resolver (TLD DNS Server의 IP주소 반환)
3. DNS Resolver → TLD DNS Server → DNS Resolver (Authoritative DNS Server의 IP주소 반환)
4. DNS Resolver → Authoritative DNS Server → DNS Resolver → 브라우저 (해당 도메인 이름에 대한 IP주소 반환)
역트리 구조로 최상위 Root DNS Server로부터 Top-Level DNS Server, Authoritative DNS Server 방향으로 원하는 주소를 단계적으로 찾아간다.
koreatech.ac.kr.을 예로 들면
koreatech. → 3차 도메인
co. → 2차 도메인
kr → TLD
. → Root DNS
즉, 재귀적으로 순환을 반복한다 (Reculsive query)
4. URI와 URL
1) URI (Uniform Resource Identifier)
- 자원을 식별하는 식별자를 통칭하며 URL과 URN을 포함하는 상위 개념이다.
- 모든 URL, URN은 URI이지만, 모든 URI는 URL, URN이 아니다.
- scheme는 URL의 경우 프로토콜이, URN은 urn 단어가 위치한다.

2) URL (Uniform Resource Locator)
- 위치로 리소스 식별
- 리소스의 위치가 변경되면 URL을 사용할 수 없다.
(1) URL 구조

• scheme : 프로토콜 명시. 웹에서는 http, https 사용
• domain : 통신할 서버의 도메인 명 (또는 IP 주소)
• Port : 통신을 위해 연결된 서버 호스트의 특정 프로세스에 접근하기 위해 필요한 번호. 일반적으로 생략
• Path : 리소스 경로, 계층적 구조
• Query String : 웹 서버로 보내는 key-value 형태의 문자열 데이터 (=쿼리 파라미터)
• Fragment : 앵커, 해시태그라고도 불리며, 메인 리소스 내에 존재하는 서브 리소스에 스크롤 없이 바로 접근할 때 사용 (서버에 전송하는 정보가 아님)
'Web > BackEnd' 카테고리의 다른 글
| 객체지향 프로그래밍 - OOP (0) | 2024.03.10 |
|---|---|
| 객체지향 프로그래밍 - SOLID 원칙 (0) | 2024.03.09 |
| JPA란? Spring Data JPA란? Hibernate란? (1) | 2024.01.02 |
| Mybatis란? (0) | 2024.01.02 |
| SQL Mapper와 ORM (1) | 2024.01.02 |
