네트워크에서 데이터를 주는 컴퓨터를 '서버(Server)'
데이터를 요청하고 받는 컴퓨터를 '클라이언트(Client)'
컴퓨터가 데이터를 주고받는 목적은 특정한 기능, 즉 서비스*를 제공하고 사용하기 위한 것입니다.
네트워크로 연결된 컴퓨터 중 서비스를 제공하는 쪽을 서버라 부르고
그 서비스를 요청하고 받는 쪽을 클라이언트라고 부른다.
서버 클라이언트 구조는 전 세계의 네트워크가 연결된 인터넷의 기반이 되었고, 이를 활용한 대표적인 서비스가 웹 서비스
ssh 설치
sudo apt install ssh
sudo apt install vsftpd
FTP 설정 파일: /etc/vsftpd.conf 파일
vsftpd.conf 옵션
- anonymous_enable: anonymous(익명) 사용자의 접속을 허가할지 설정
- local_enable: 로컬 사용자의 접속 허가 여부를 설정
- write_enable: 로컬 사용자가 저장, 삭제, 디렉터리 생성 등의 명령을 실행하게 할 것인지 설정
(anonymous 사용자는 해당 없음)- anon_upload_enable: anonymous 사용자의 파일 업로드 허가 여부를 설정
- anon_mkdir_write_eanble: anonymous 사용자의 디렉터리 생성 허가 여부를 설정
- dirlist_enable: 접속한 디렉터리의 파일 리스트를 보여줄지 설정
- download_enable: 다운로드의 허가 여부를 설정
- listen_port: FTP 서비스의 포트 번호를 설정(기본: 21번)
- deny_file: 업로드를 금지할 파일을 지정(예: deny_file={.mpg,.mpeg,*.avi})
- hide_file: 보여주지 않을 파일을 지정(예: hide_file={.gif,.jpg,*.png})
- max_clients: FTP 서버의 동시 최대 접속자 수를 지정
- max_per_ip: 1개 PC가 동시에 접속할 수 있는 접속자 수를 지정
FTP 서버 설정하고 동작시키기: /etc/vsftpd.conf 파일
systemd 데몬으로 관리
sudo systemctl stop vsftpd
sudo systemctl start vsftpd
telnet 0 21
22번 포트로 연결하여 보안 접속한 경우
자신의 NW 안의 클라이언트 컴퓨터가 부팅될 때 자동으로 IP주소, 서브넷 마스크, 게이트웨이 주소, DNS 서버 주소를 할당
장점: 관리 및 이용 편리, 한정된 IP주소로 더 많은 IP주소가 있는 것처럼 활용 가능
네임 서버 = DNS(Domain Name System) 서버
도메인 이름을 IP 주소로 변환시켜 주는 역할
= 이름 해석(Name Resolution)
예) www.nate.com → 120.50.131.112
①가장 초기의 네트워크 접속 방법
컴퓨터가 몇 대 안 됨
사용자가 모두 외워서 직접 IP주소로 접근함
② hosts 파일을 이용하여 네트워크 접속
인터넷에 연결된 컴퓨터가 수십 ~ 수백대로 늘어남
‘hosts’ 파일에 URL과 IP주소를 기록해 놓는 방식 사용
예) 102.54.94.97 rhino.acme.com
38.25.63.10 x.acme.com
127.0.0.1 localhost
::1 localhost
Windows
C:\Windows\system32\drivers\etc\hosts
리눅스
/etc/hosts
③ 네임 서버를 이용하여 네트워크 접속
기하급수적으로 늘어나는 네트워크 상의 컴퓨터에 대한 모든 IP 정보를 파일 하나에 기록하는 것은 무리
이름 해석(Name Resolution)을 전문적으로 해 주는 서버 컴퓨터가 필요 해짐 (=DNS 서버 = 네임 서버)
전화 안내 서비스인 114와 같은 역할
네임 서버는 인터넷에서 변화하는 모든 컴퓨터의 URL과 IP 정보를 거의 실시간으로 제공하므로, 사용자는 더 이상 URL에 해당하는 IP주소를 신경 쓸 필요가 없어짐.
URL만 알고 있으면 어디서든지 해당하는 컴퓨터에 접속
캐싱 전용 네임 서버
PC에서 URL로 IP주소를 얻고자 할 때, 해당하는 URL의 IP주소를 알려주는 네임 서버를 말함
마스터 네임 서버
도메인에 속해 있는 컴퓨터들의 이름을 관리하고, 외부에 해당 컴퓨터의 IP주소를 알려주는 역할
라운드 로빈(Round Robin) 방식의 네임 서버
여러 대의 웹 서버를 운영해서, 웹 클라이언트가 서비스를 요청할 경우에 교대로 서비스를 실시하도록 하는 방식
실습용 도메인과 대응 IP
도메인 대응되는 값
bind9.kr 1.1.1.1
dns.bind9.kr 2.2.2.2
kt.bind9.kr 3.3.3.3
ns.bind9.kr 4.4.4.4
www.bind9.kr dns.bind9.kr
sudo apt-get install bind9
서버를 네임서버로 인식시키기
/etc/resolv.conf 에 nameserver 값에 127.0.0.53 추가하여 네임서버가 자기 자신이 되도록 인식
sudo vi named.conf.default-zones 파일에 zone 도메인 정보 추가
sudo cp db.local db.bind9.zone 기존 파일의 틀 이용하기위해 복사
sudo db.bind9.zone
www.soobeen.com 도메인 생성
sudo vi /etc/bind/named.conf.options
방화벽 설정
- TCP 및 UDP 53 포트 개방
- ufw allow 53/tcp
- ufw allow 53/udp
• ufw 활성화 -> 비활성화 되어 있다면 활성화 시킬 때- sudo ufw enable
• ufw 상태 정보 조회- sudo ufw status
nameserver DNS server IP ex.192.168.160.130
네트워크 설정 재시작
sudo systemctl restart NetworkManager
또는
sudo nmcli networking off
sudo nmcli networking on
nslookup 으로 확인
‘testdb’ 데이터베이스를 생성하는 간략한 예제
mysql> show databases;
mysql> create database testdb;
mysql> use testdb;
mysql> CREATE TABLE test
(id smallint unsigned not null auto_increment,
name varchar(20) not null);
mysql> show tables;
mysql> INSERT INTO tablename(id, name) VALUES (1, 'Sample data' );
mysql> SELECT * FROM test;
용도 - 데이터베이스에서 데이터를 추출하여 문제 해결
입출력 - 입력은 테이블, 출력도 테이블
번역 - DBMS
사용 예 -
SELECT *
FROM Book;
릴레이션(relation) : 행과 열로 구성된 테이블
인스턴스 요소
• 투플(tuple) : 릴레이션의 행
• 카디날리티(cardinality) : 투플의 수
➊ 속성은 단일 값을 가진다
각 속성의 값은 도메인에 정의된 값만을 가지며 그 값은 모두 단일 값이어야 함
➋ 속성은 서로 다른 이름을 가진다
속성은 한 릴레이션에서 서로 다른 이름을 가져야만 함
➌ 한 속성의 값은 모두 같은 도메인 값을 가진다
한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음
➍ 속성의 순서는 상관없다
속성의 순서가 달라도 릴레이션 스키마는 같음
예) 릴레이션 스키마에서 (이름, 주소) 순으로 속성을 표시하거나 (주소, 이름) 순으로 표시하여도 상관없음
➎ 릴레이션 내의 중복된 투플은 허용하지 않는다
하나의 릴레이션 인스턴스 내에서는 서로 중복된 값을 가질 수 없음,
즉 모든 투플은 서로 값이 달라야 함
➏ 투플의 순서는 상관없다
투플의 순서가 달라도 같은 릴레이션임. 관계 데이터 모델의 투플은 실제적인 값을 가지고 있으며 이 값은 시간이 지남에 따라 데이터의 삭제, 수정, 삽입에 따라 순서가 바뀔 수 있음
여러 후보키 중 하나를 선정하여 대표로 삼는 키
데이터베이스 목록 확인: 기존 데이터베이스 목록을 출력
show databases;
데이터베이스 생성: 새로운 데이터베이스를 생성
create database 데이터베이스명;
데이터베이스 삭제: 지정한 데이터베이스를 삭제
drop database 데이터베이스명;
사용할 데이터베이스 지정: 여러 데이터베이스 중에서 작업할 데이터베이스를 선택
use 데이터베이스명;
sudo apt install mariadb-server
mariadb 접속
테이블 확인
테이블 기본 키 추가
테이블 레코드 입력
tessttable 테이블의 전체 레코드를 출력
Network File System, 네트워크를 통해 다른 시스템의 디스크를 연결하여 사용
NFS 서버가 설치되어야 하고, NFS 서버 측에서 디스크 공유
(Ubuntu 20에서부터 NFS 버전 3과 4를 지원)
서버
sudo apt install nfs-kernel-server
nfs-server 활성화: systemctl enable --now nfs-server
공유 디렉토리 생성: sudo mkdir /home/share -> sudo chmod 707 /home/share
sudo vi /etc/exports -> /home/share *(rw,sync,no_subtree_check,no_root_squash,insecure) 추가
sudo exportfs -a로 공유한 것이 제대로 적용되었는지 확인
방화벽 설정 ex) sudo ufw allow 2049
NFS 서버 재시작: sudo systemctl restart nfs-kernel-server
클라이언트
sudo apt install nfs-common
sudo mkdir /mnt로 마운트할 디렉토리 생성
sudo ufw allow 2049
mount로 NFS 공유 디렉토리 연결 : sudo mount nfs 192.168.139.3:/home/share /mnt