공부용 블로그 | seokmin100
Trinity - 서버 [리눅스 패키지, DNS, FTP&TFTP, DHCP] 본문
리눅스 패키지
리눅스 패키지(Linux Package)란 리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음입니다.
패키지의 종류로는 소스 패키지(Source Package)와 바이너리 패키지(Binary Package)가 있습니다.
소스 패키지 & 바이너리 패키지
소스 패키지(Source Package)는 말 그대로 소스 파일이 들어있는 패키지로 컴파일 과정을 통해 바이너리 파일로 만들어야 실행할 수 있습니다.
즉, 소스 패키지는 설치할 때 컴파일 작업도 진행되므로 설치 시간이 길고 컴파일 과정에서 오류가 수도 있습니다.
바이너리 패키지(Binary Package)는 성공적으로 컴파일 된 바이너리 파일이 들어있는 패키지입니다.
이미 컴파일 되어 있으니 소스 패키지에 비해 설치 시간도 짧고 오류가 발생할 가능성도 적습니다.
따라서 리눅스의 기본 설치 패키지들은 대부분 바이너리 패키지입니다.
이렇게만 보면 바이너리 패키지가 장점이 훨씬 많은데 왜 소스 패키지도 함께 쓰는지 의문일 것입니다.
소스 패키지를 사용하는 이유는 내가 원하는대로 소프트웨어를 수정해서 사용할 수 있기 때문입니다.
리눅스에서는 많은 소프트웨어 패키지가 있으며 대부분 GPL 라이선스가 있는 무료 및 오픈 소스입니다.
따라서 원한다면 소프트웨어를 맘대로 수정해서 사용할 수 있는데 그러려면 당연히 소스 패키지를 다운로드하여 소스 코드를 수정하거나 컴파일 옵션을 변경하여 사용해야 합니다.
바이너리 패키지는 이미 컴파일되어 있어서 바로 설치할 수 있다는 장점이 있지만, 내 컴퓨터 환경과 바이너리 패키지가 컴파일된 환경이 달라서 문제가 발생할 수 있습니다.
즉, 내가 설치한 바이너리 패키지를 실행하기 위해서 특정 버전의 라이브러리들이 필요하다면 내가 그 라이브러리들을 가지고 있지 않을 경우 제대로 프로그램을 실행할 수 없습니다.
이렇게 바이너리 패키지를 제대로 실행하기 위해서는 특정 라이브러리나 다른 패키지가 필요할 수 있는데 이러한 패키지 간의 의존성을 패키지 의존성(Package Dependencies)이라 부릅니다.
리눅스 패키징 방식
리눅스 배포판 별로 다양한 패키징 방식이 있지만, 대표적으로 2가지 방식이 있습니다.1. Debian 계열 (Debian, Ubuntu, Linux Mint 등) : DEB2. Red Hat 계열 (Red hat, Fedora, CentOS 등) : RPM
리눅스 패키지 관리 방식
리눅스에서는 패키지를 관리하기 위해 패키지 관리 도구(Package Managemant Tool)을 사용합니다.패키지 관리 도구는 저수준 패키지 도구(Low Level Package Tool)와 고수준 패키지 도구(High Level Package Tool)로 구성됩니다.
저수준 패키지 도구
저수준 패키지 도구(Low Level Package Tool)는 패키지 파일을 설치하거나 제거할 때 사용하는 도구입니다.
저수준 패키지 도구는 각 패키지의 파일을 설치하고 제거할 수는 있어도 패키지 간의 의존성은 알지 못합니다.
고수준 패키지 도구
고수준 패키지 도구(High Level PAckage Tool)는 패키지 파일을 설치하거나 제거할 뿐만 아니라 다운로드가 가능한 패키지들을 검색하고 패키지 의존성을 해결하는 도구입니다.
패키지 의존성을 해결한다는 의미는 해당 패키지가 가지고 있는 패키지 간의 의존성을 파악하고 필요하다면 자동으로 설치해준다는 뜻입니다.
DNS
어떠한 웹 페이지가 공개한 IP주소 대신 사람이 기억하기 쉬운 영문 주소를 사용하는데 이를 도메인 네임(Domain Name)이라고 합니다.
즉, 도메인이란 숫자 형태의 IP주소를 사람이 기억하기 쉬운 문자로 표현한 주소 입니다.
DNS(Domain Name System)는 전세계적으로 약속된 규칙을 공유하는데 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 권한을 부여합니다.
DNS의 구성 요소로는 도메인 네임 스페이스(Domain Name Space), 네임 서버(Name Server), 리졸버(Resolver)가 있습니다.
- 도메인 네임 스페이스(Domain Name Space) : DNS가 저장 관리하는 계층적 구조 - 네임 서버(Name Server) : 권한 있는 DNS 서버 - 리졸버(Resolver) : 권한 없는 DNS 서버 |
도메인 네임 스페이스
DNS는 전세계적인 거대한 분산 시스템으로 도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미합니다.
도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있습니다.
- 계층적 도메인 레벨
도메인 네임 스페이스는 일반적으로 트리 구조를 하고 있으며 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타냅니다.
- Fully Qualified Domain Name(FQDN) 전체 도메인 이름
도메인의 전체 이름을 표기하는 방식입니다.
네임 서버
문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버를 네임 서버라고 합니다.
- Root DNS Server
DNS 서버의 최상위 네임서버로 DNS 해석부터 발생한 DNS 요청에 대하여 적절한 TLD 네임서버 정보를 반환합니다.
- Top-Level Domain(TLD) DNS Server
도메인 등록 기관이 관리하는 서버로 Authoritative DNS 서버의 주소를 저장하고 안내하는 역할을 합니다.
- Second-Level Domain(SLD) DNS Server (Authoritative DNS Server)
실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버입니다.
그래서 권한의 의미인 Authoritative가 붙었으며 일반적으로 도메인/호스팅 업체의 네임서버를 말합니다.
DNS Resolver
DNS Resolver는 사용자의 컴퓨터나 네트워크에 위치한 DNS 클라이언트입니다.
사용자가 도메인 이름을 입력하면, 해당 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버에 요청하여 질문하는 역할을 합니다.
DNS Query
DNS Query(쿼리)는 사용자가 도메인 이름을 입력하고 IP 주소를 얻기 위해 DNS 서버에 보내는 요청을 말한다. 이 요청은 DNS Resolver가 사용자 컴퓨터에서 생성하고 DNS 서버에 전송합니다.
DNS Query는 DNS 서버에 보내지며, DNS 서버는 이를 처리하고 응답을 반환합니다.
이 응답에는 사용자가 요청한 정보(IP 주소 등)가 포함되는데, DNS Query와 DNS 응답은 일반적으로 UDP(User Datagram Protocol)를 사용하여 전송됩니다.
DNS Query의 결과는 DNS Resolver에게 반환되는데 이를 통해 DNS Resolver는 사용자에게 도메인 이름에 대한 IP 주소를 반환하거나, 이를 찾을 수 없을 경우 에러를 반환합니다.
DNS 쿼리는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분됩니다.
Reculsive Query
재귀적 질의라고 하며 결과물(IP 주소)를 돌려주는 작업합니다.
Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답합니다.
Iterative Query
반복적 질의 라고 하며 Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업입니다.
Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아냅니다.
FTP & TFTP
FTP
FTP(File Transfer Protocol)는 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 프로토콜입니다.
인터넷에서 가장 오래되고 널리 사용되는 파일 전송 프로토콜 중 하나이며 대부분의 운영 체제와 웹 브라우저에서 지원됩니다.
FTP는 호스트 간에 두 가지 연결을 설정한다는 점에서 다른 클라이언트-서버 응용 프로그램과 다릅니다.
클라이언트의 구성 요소로는 사용자 인터페이스, 제어 프로세스, 데이터 전송 프로세스가 있고,
서버의 구성요소로는 제어 프로세스, 서버 데이터 전송 프로세스가 있습니다.
TFTP
FTP 프로토콜의 모든 기능이 필요 없이 단순히 파일을 복사해야 하는 경우가 있습니다.
예를 들어 디스크가 없는 워크스테이션이나 라우터가 부팅될 때 부트스트랩과 구성 파일을 다운로드해야 합니다.
여기서 우리는 FTP에서 제공되는 모든 정교함을 필요로 하지 않습니다.
파일을 빠르게 복사하는 프로토콜만 있으면 됩니다.
TFTP(Trivial File Transfer Protocol)는 이러한 유형의 파일 전송을 위해 설계되었습니다.
TFTP는 보안이 큰 문제가 되지 않는 기본 파일 전송에 매우 유용합니다.
주요 응용 프로그램은 DHCP와 함께 사용됩니다.
TFTP는 적은 양의 메모리만 필요로 하며 UDP 및 IP 서비스만 사용합니다.
DHCP
DHCP(Dynamic Host Configuration Protocol)는 우리가 지금도 사용중인 인터넷의 IP, 서브넷마스크, 기본 게이트웨이 등의 설정들을 자동적으로 제공해주는 UDP 기반 비연결형 서비스 프로토콜을 말합니다.
DHCP의 구성
- DHCP Server
클라이언트로부터 IP 할당 요청이 들어오면 IP를 부여하고, 할당 가능한 IP들을 관리합니다.
ISP에서는 중앙집중형 관리 정책을 사용하고 가입자에 대해 인증기능, IP할당을 처리하는 큰 규모의 DHCP 서버를 운영합니다.
공유기에도 DHCP 서버가 탑재되어 있으므로 각각의 PC에 사설 IP를 할당하기도 합니다. 이 경우 이전에 설명드린 NAT와 복합적으로 기능하게 되겠습니다.
- DHCP Client
DHCP 서버에 자신의 시스템을 위한 IP 주소를 요청하고, DHCP 서버로부터 IP 주소를 부여받으면 TCP/IP 설정이 초기화되고 다른 호스트와 TCP/IP를 사용해 통신할 수 있게 됩니다.
클라이언트에 해당하는 장비는 PC, 스마트폰, 등 최종 단말 장치로 모두 DHCP 클라이언트가 탑재되어 있습니다.
'Trinity > Server' 카테고리의 다른 글
Trinity - 서버 [DHCP] (0) | 2024.09.26 |
---|---|
Trinity - Server [GNS3] (2) | 2024.09.09 |
Trinity - 서버 [SSH] (0) | 2024.05.26 |