rpm 설치  

rpm -ivh [rpm파일명]  :  설치만 함 
 

★★★★ rpm -Uvh [rpm파일명]  :  업데이트 및 설치  

rpm - e [패키지이름]   :   패키지 삭제 

 

rpm 여러가지 명령어

rpm -q [패키지이름]  :  설치된 패키지 정보, 설치 여부 확인

★★  rpm -qa [패키지이름]   /  grep [패키지이름]   :   리눅스에 설치된 모든 패키지 확인

 

rpm -qf [파일이름]   :   어떤 파일이 어떤 패키지에 속하는지 검색

rpm -qf /bin/passwd

rpm -qip [파일이름]   :   rpm 파일의 상세 정보 보기 

 
 

★★ rpm -qi [패키지명]   :   해당 패키지의 상세 정보 보기

rpm -qi mc

 

rpm -qif   :   해당 파일이 속한 패키지의 상세 정보 보기

rpm -qif /bin/passwd
  

 

rpm -ql [패키지이름]   :   해당 패키지가 설치한 파일 목록 보기

rpm -qR [패키지이름]   :   해당 패키지의 의존성 확인하기 ( 이 패키지들이 있어야 사용 가능 > 의존성 )

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

yum ( yum -> dnf 최근 이름이 바뀌고 있는 중 )

 

yum list   :   

 

yum list installed   :   설치된 패키지 확인  

yum list update   :    업데이트 가능한 목록 확인  

yum info [패키지이름]   :   패키지 정보 확인  

yum deplist [패키지이름]   :   의존성 확인

 

yum install [패키지이름] -y :   패키지 설치, 의존성이 필요한 경우 해당 패키지도 같이 설치

-y 붙이면 질문에 모두 수락

 

yum remove [패키지이름]

yum erase [패키지이름]

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

파일 아카이브 ... . ... .. 압축과는 다르다. 그냥 파일을 묶는 느낌? .

 

tar -cvf [아카이브 파일][파일명]   :  [파일명] 들로 아카이브 만들기  

 

tar -xvf [아카이브 파일]   :   아카이브 해제

 

tar -tvf [아카이브 파일]   :   아카이브 풀지 않고 내용 확인

-z 옵션  :  압축까지 함께

 

 

압축 :  용량을 줄이는 기술

gzip / gunzip          gz파일

 

gzip   :  gz파일로 압축

gunzip   :   gz파일을 압축 해제

 

중요한 것
tar cvf     아카이브
tar czvf    아카이브 및 gzip 압축
tar xvf      아카이브 해제      압축 및 아카이브 된 파일 해제

압축 : gzip / gunzip

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

10장  

 

사용자 계정 관련 파일

 

 

 

 

 

 

 

이거를 저희가 공부하는게 맞나요 ????


 

 

 

 

사용자 계정의 설정과 관련된 기본 값을 정의

/etc/login.defs

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

사용자 계정 관리 명령   

여기 파트는 암기보단 책 보고 다시 복기 할 수 있을 정도로만 알아두기

 

계정 생성하기 useradd

계정 수정하기 usermod

 

계정명           uid       주그룹   보조그룹    홈디렉터리              기본쉘
user02          2000      2000      wheel        /home/user             /bin/sh

useradd -u 2000 -G wheel -m -d /home/user -s /bin/sh user02
 

계정명           uid       주그룹     홈디렉터리              기본쉘
user03       uid 1400     10      /home/guest/user03   /bin/sh

useradd -u 1400 -g 10 -m -d /home/guest/user03 -s /bin/sh user03
-u  UID
-g  GID
-m  -d 랑 같이 붙여서 써주면 좋다고 하네요
-d  홈디렉토리
-s  기본 쉘
계정명

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
UID  :  사용자가 로그인할 때 사용한 계정의 UID
EUID  :  현재 명령을 수행하는 주체의 UID

6장 프로세스
데몬 프로세스 : 특정 서비스를 제공하기 위해서 24시간 백그라운드에서 동작하는 프로세스
고아 프로세스 : 자식보다 부모가 먼저 종료된 프로세스.
좀비 프로세스 : 자식 프로세스가 실행을 종료 했는데도 프로세스 테이블 목록에 남아있는 프로세스.

ps [옵션] : 현재 실행 중인 프로세스의 목록을 보여줌
UNIX 옵션( 자주 사용 ) -ef  :  -e 와 -f 를 합친 옵션,   프로세스의 자세한 정보를 출력한다.
BSD 옵션  -aux  :  프로세스의 자세한 정보를 출력한다.


ps -ef grep | 문자열   >>  실행중인 프로세스의 자세한정보 출력. ( PID를 확인한다 )
프로세스 종료하기  kill -9 PID   ( 9번은 강제 종료이기 때문에 최후의 수단으로 사용하자 )
kill 기본값 : 15 ( 정상적인 마무리 )

백그라운드 작업 하는법  :  [명령어] &
Ctrl + Z  :   현재 포그라운드 작업을 정지 시킨 후 백그라운드로 전환
jobs  :  백그라운드 작업 정보
bg %작업 번호  :   해당 작업을 백그라운드로 전환
fg %작업 번호  :  해당 작업을 포그라운드로 전환

nohup [명령어] &  :  로그아웃 후에도 백그라운드 작업 계속 하게 하기
결과 출력은 nohup.out 에 저장된다.
nohup [명령어] > [파일명] 2>&1 &   :   nohup.out 말고 다른 파일에 저장하기


at   :   실행 예약
at -l  :  실행 예약중인 목록 보기
at -d [작업번호]  :  예약 취소 하기

과제 : ps -ef 명령어를 실행해서 /root/at/psfile01에 저장하게 하라
           2분이나 3분뒤에 저장되게 하라
at now +3min     
ps -ef > /root/at/psfile01 
ctrl+d

 

 

 

crontab  :  지정 시간마다 반복적으로 명령 실행
crontab -e : 편집 (생성, 삭제 등)
crontab -l : 예약작업 리스트 출력
crontab -r : 현재 계정의 crontab 내용 모두 삭제(일부만 삭제는 -e로 편집)
* 11 21 7 * ls -al > /tmp/crontab.out

* 기호를 입력한 필드에서는 모든 값에서 cron이 수행된다.  위 예제에서는 매 분마다.

예시

매년 1월 첫번째 일요일에 재부팅이 되도록 설정

0 0 1-7 1 0 reboot

매월 오후 1시부터 5시까지 10분마다 date 명령어를 실행해서 date01에 이어쓰기로 저장하도록 설정

*/10 13-17 * * * date >> date01

------------------------------------------------------
test 사용자가 매년 크리스마스에 메리크리스 메시지를 /tmp/christmas 파일에 덮어쓰기를 하게 해보자
root계정에서 
crontab -e -u test
0 0 25 12 * echo "Merry Christmas" > /tmp/christmas

엑세스 제어 설정 파일
<Centos7 기준> -> 다른 리눅스, 유닉스는 다를 수 있음

at
/etc/at.deny
/etc/at.allow

crontab
/etc/cron.deny            
/etc/cron.allow

1. *.allow 파일은 존재하지 않고 *.deny 파일만 존재하면 *.deny 파일에 등록된 사용자는 스케쥴링 명령 사용불가
2. *.allow 파일과 *.deny 파일이 둘다 존재하면 *.allow에 등록된 사용자만 스케쥴링 명령 사용 가능
3. 둘다 존재하지 않으면 root만 스케쥴링 명령 사용가능
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
8장 리눅스의 부팅
바이오스 단계
pc에 장착된 기본적인 하드웨어 (키보드 디스크) 의 상태를 확인한 후 부팅 장치를 선택하여 디스크의 첫 섹터에서
512바이트를 로딩 ( master boot record , MBR )

init 프로세스에서 사용하던 런레벨 ( Run Level )의 개념에 대한 이해 필요.
init 프로세스 = systemd으로 바뀌기 전의 1번 프로세스

 

 

 

init 5  :  GUI 모드 ( 지금 실습 중인 모드 )
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
systemd 서비스
systemd 를 기반으로 서비스를 시작하거나 종료할 때 사용하는 명령어는 systemctl
systemctl start httpd    http 서비스를 위해서 서버 시작 ( 아파치 인듯 )
systemctl status httpd   httpd 서비스 상태 확인

cd /var/www/html    >> 웹 서버 기본 홈 디렉토리 
vi index.html
<marquee>hello world </marquee>
파이어폭스 > 127.0.0.1 접속


-----------------
80 포트 열기    ( 포트 개방을 하면 윈도우 브라우저에서 ip주소로 접속 가능 )

firewall-cmd --add-service=http    -> 재부팅하면 다시 닫힘
firewall-cmd --add-port=80/tcp

firewall-cmd --permanent --add-service=http           https(443),telnet,ftp.....
firewall-cmd --reload

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

firewall-cmd --permanent --remove-service=http 
firewall-cmd --reload

firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --reload
-----------
systemd 와 런레벨    근데 target 이 뭐죠 ?? 컴퓨터가 부팅할 때 불러들이는 타겟 ??? 부팅 모드인것 같습니다.
종료
복구모드 ( 안전모드 )
CLI 
GUI
재부팅

 

셸 환경설정

 

 

 

변수 출력하기   echo $PATH

 

변수 설정하기 export [변수] = [값]

 

에일리어스 ( 별명 )  

alias 이름 = '명령'  

 

별명 해제

unalias

 

접근 권한의 표기 방법

d ( 디렉터리 여부 )

 

소유자 3글자 / 그룹 3글자 / 기타 사용자 3글자

r = 읽기 권한  w = 쓰기 권한   x = 실행 권한

 

 

 

 

 

권한 변경 명령어

chmod

 

 

 

chmod u+x 파일명   =    파일 소유자 ( u ) 에게 실행 ( x ) 권한을 부여 ( + )

 

 

 

새 터미널 실행

su - centos 

centos 계정으로 로그인

 

chown 계정명 파일명     소유자 바꾸는 명령어

chown centos file1        file1의 소유자가 centos 계정이 됨

chown :centos file1        file1의 소유 그룹이 centos그룹이 됨

chown centos1:centos2 file1       file1의 소유자가 centos1계정이 되고
                                                     소유 그룹이 centos2그룹이 됨
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

8진수 모드

r  100  4
w  010  2 
x  001  1
소유주  /  그룹  /  기타사용자
7           7            7
 

예제

touch p1 p2 p3 p4             /tmp 같은 디렉터리에서 작업

 p1 8진수 방식으로 소유주 읽기 실행, 소유 그룹 실행 권한만, 기타 사용자에게는 쓰기 권한만
chmod 512 p1

 p2 8진수 방식으로 모든 사용자 모든 권한 삭제
chmod 000 p2

 p3 8진수 방식으로 소유그룹만 읽기, 쓰기 권한 줄 것
chmod 060 p3

 p4 8진수 방식으로 모든 사용자에게 실행 권한만 줄 것
chmod 222 p4

 /root/filea 디렉토리에 기타 사용자가 들어올 수 없도록 권한을 변경하시오. ( 실행 권한 제거 )   
chmod o-x /root/filea

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

<기본 퍼미션>
일반 사용자     664
                    775

root             644
                   755

파일은 생성 될때 기본값이 666
디렉터리는 생성될때 기본값이 777

일반사용자는 마스크값이 0002             664( 일반 )            775( 루트 )
root는 마스크값이 0022                   644( 일반 )            755( 루트 )  
기본값 - 마스크값 = 변경된 기본값 .  단, 쉘을 다시 시작하면 설정 값이 사라짐

 

마스크값 변경 명령어 umask [숫자]

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

특수 접근 권한

접근 권한은 원래 4자리

setUid  앞자리 4

setGid  앞자리 2

sticky bit  앞자리 1

 

setuid 는 파일에만 설정한다.

sticky bit 는 디렉터리에만 설정한다.

setgid는 파일에 설정 가능 하면서 디렉터리에도 설정이 가능하다. 만약 디렉터리에 setgid를 설정하면 해당 디렉터리에서 생성한 파일의 
소유 그룹은 해당 디렉터리 소유 그룹으로 자동 설정된다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
6장 프로세스
데몬 프로세스 : 특정 서비스를 제공하기 위해서 24시간 백그라운드에서 동작하는 프로세스
고아 프로세스 : 자식보다 부모가 먼저 종료된 프로세스.
좀비 프로세스 : 자식 프로세스가 실행을 종료 했는데도 프로세스 테이블 목록에 남아있는 프로세스.

ps [옵션] : 현재 실행 중인 프로세스의 목록을 보여줌
UNIX 옵션( 자주 사용 ) -ef  :  -e 와 -f 를 합친 옵션,   프로세스의 자세한 정보를 출력한다.
BSD 옵션  -aux  :  프로세스의 자세한 정보를 출력한다.


ps -ef grep | 문자열   >>  실행중인 프로세스의 자세한정보 출력. ( PID를 확인한다 )
프로세스 종료하기  kill -9 PID   ( 9번은 강제 종료이기 때문에 최후의 수단으로 사용하자 )
kill 기본값 : 15 ( 정상적인 마무리 )

 

입력 모드 , 명령 모드 가 있다.

 

입력 모드로 전환하기 위해선   ESC >  i a o

g -> 첫 행으로 이동한다.
G   -> 마지막 행으로 이동한다.

x -> 1글자 삭제
dd -> 1행 삭제
u  -> 취소
:e!  -> 초기화(저장상태 처음부터)

dd -> 행 잘라내기
yy -> 행 복사하기
p -> 아랫줄에 붙여넣기

/텍스트      -> 검색        n누르면 다음검색으로 이동

/%s/텍스트1/텍스트2/      -> 전체 텍스트에서 텍스트1을 텍스트2로 바꾼다.

:set [값]        -> 환경설정

:set nu          -> 행에 번호 매기기
:set nonu         -> 행에 번호 매기기 취소

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

셸의 특수문자

주요 특수문자   *   ?   [ ]   ~   | (쉬프트 \) 

* , ?   SQL 에서 활용하는것과 동일하다.'

 

[ ]   [ ] 안에 포함된 문자 중 하나를 나타냄.  예시) ls tmp[135].txt  tmp1.txt    tmp3.txt    tmp5.txt 해당 파일이 있으면 출력한다.

 

;  연결된 명령을 왼쪽부터 차례로 실행한다.    예시)  pwd;  ls /tmp;   

 

| (쉬프트\)  왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달한다. 

 

'  ' (작은따옴표)    모든 특수 문자의 기능을 없애고 문자를 감싸서 문자열로 만들어줌

 

"  " (큰따옴표)    $,  ``,  \  를 제외한 모든 특수 문자의 기능을 없애고 문자를 감싸서 문자열로 만들어줌

 

`  ` (홑따옴표)   `  ` 로 감싸인 문자열을 명령으로 해석함   예시  echo  "Today is   `date`   "

 

\  바로 뒤의 특수 문자의 효과를 없애고 일반 문자처럼 처리한다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

리다이렉션  셸 스크립트를 작성할 때 유용하다고 한다.

 

>  <   >>   입출력의 방향을 바꾼다.   

예시)   ls -l > res     명령의 실행 결과를 res파일에 저장한다

예시) cat >> test  명령 이후 사용자가 작성하는 입력을 파일로 저장한다.  종료는 Ctrl + D

 

>   덮어쓰기    >>  기존 파일의 내용 뒤에 결과를 추가   

 

 

기본값은  1과 동일했다.   명령 > 파일명  =  명령 1> 파일명

 

 

 

 

1 2 3 빈 파일을 만들었다

ls 1 2 3 4 5 6 > A  2> B     =  파일 정보 정상 출력은 A파일에 저장하고 오류 출력은 B에 저장하라는 명령

cat A = 정상 처리된 1 2 3 이 나온다

cat B = 존재 하지 않는 4 5 6 오류 결과가 나온다

 

 

 

표준 출력과 표준 오류를 한 파일로 리다이렉션 하기

 

ls 1 2 3 4 5 6 > ls.out 2> &1  =  1 2 3 4 5 6 파일 목록의 정상 출력(>)을 ls.out 에 저장하고 오류 정보를 표준 출력 파일(&1)으로 리다이렉션(2>)

 

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

셸 환경설정

 

 

 

변수 출력하기   echo $PATH

모든 리눅스에는 root 계정이 존재한다.

 

파워셀 명령어 (?)

ssh -i 키파일

ssh id@ip주소 (호스트주소)

 

 

파워셀에서 ssh root@192.168.100.128 입력하면 원격 네트워크로 접속 가능 

 

 

CentOS

우측상단 전원버튼 - wired connected   >> NIC 설정 가능

 

ifconfig : 윈도우에서 ipconfig 의 기능

 

VMWare -  Edit

 

ip 변경 가능

 

 

파워셀에서 ssh root@192.168.100.128 입력하면 원격 네트워크로 접속 가능  ( 신기해서 두 번 적음 )

< ssh 관련 접속 추천 툴 >
Xshell

 

 

 

 

리눅스 커널 - 운영체제 본체 

셀 - 운영체제와 대화를 할 수 있게 해줌 ( 사용자 인터페이스 )

 

리눅스 명령의 구조  

형식  :  명령 [옵션] [인자]    

명령 = date , ls , man, cp, cd 등 수백 가지가 있다.

옵션 = - 나 -- 로 시작하는 경우가 많고 영문 소문자나 대문자로 구성된다.

인자 = 주로 파일명이나 디렉터리 명이 사용된다. 인자는 없을 수도 있다.

 

# 프롬프트 : root 권한을 갖고 있는 계정의 프롬프트 라는 의미.

$ 프롬프트 : 일반 사용자의 프롬프트 이다.

 

 

★  기초 명령어  

 

  man [명령] : 명령어의 사용법을 알려줌 ( 유용함 ★ )

file [인자] : 인자의 파일 정보를 알려줌

pwd : 현재 위치를 확인한다.

cd [인자] : 지정한 디렉터리로 이동한다.   명령)   cd ~centos   =   centos 계정의 홈 디렉터리로 이동  >>  /home/centos

 

ls [옵션] [인자] : 디렉터리 내용 보기 
-a 숨김 파일 포함 모든 파일을 출력  ,  -F 파일의 종류 표시 
-d 디렉터리 자체 의 정보 출력,  -l ( 엘 ) 파일의 상세 정보 표시

 

mkdir [옵션] [인자] : 디렉터리 만들기 , -p 중간 단계의 디렉터리를 자동으로 생성해줌

rmdir [옵션] [인자] : 디렉터리 지우기 , -p 중간 단계의 디렉터리를 자동으로 삭제해줌

 

cat [옵션] [인자]  : 파일의 내용을 출력한다. ,  -n 행 번호를 붙여서 출력한다.

more [옵션] [인자] : 파일의 내용을 화면 단위로 출력한다.   ,  +(행 번호)  +500 = 500번째 행 부터 출력

 

tail [옵션] [인자] : 파일의 뒷부분 몇 행을 출력한다. 기본값은 10  ,  -f  주기적으로 계속 출력한다

 

cp [옵션] [인자] [인자] ...  :   -r  디렉터리를 복사할 때 지정한다

두 인자가 모두 파일인 경우

( 앞 인자 ) 앞 파일을   ( 뒤 인자 )  해당 이름으로 현재 디렉터리에 복사한다.

 

뒤 인자가 디렉터리인 경우

( 앞 인자 ) 앞 파일을  ( 뒤 인자 ) 해당 경로 디렉터리에 복사한다.

 

인자를 여러 개 지정하는 경우

마지막에 지정한 디렉터리로 앞서 지정한 파일들이 모두 복사 됨. 

 

cp /etc/hosts /etc/services /etc/passwd .   =  hosts, services, passwd 파일 3개를   ' . ' ( 현재 디렉터리 ) 에 복사한다. 

 

 

mv [옵션] [인자] [인자] : 파일을 이동하거나 이름을 바꾼다

앞 인자의 파일을 뒤 인자의 파일로 이름을 바꾼다. or 뒤 인자의 경로로 이동한다

 

rm -rf [인자] : 물어보지 않고 강제로 파일, 디렉터리 삭제

 

 

grep [옵션] [패턴] [인자]

 

find [경로 검색] [동작]

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

리눅스 파일의 종류와 특징

 

리눅스에서는 디렉터리도 파일로 취급  ★

 

ELF 파일 = 리눅스 실행 파일

심벌릭 링크 = 원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것 파일명 끝에 @가 붙어있음 ( 윈도우의 바로가기 같은거 )

 

주요 디렉터리

dev = 장치 파일이 담긴 디렉터리

 

home = 홈 디렉터리 ( 윈도우로 치면 사용자. (금정산1_pc) )

 

media = cd-rom 이나 usb 같은 외부 장치를 연결하는 디렉터리

 

root = root 계정의 홈 디렉터리 ( ' / ' 디렉터리와 다른 것이므로 혼동하지 않도록 한다. )

root 계정의 home 디렉터리 이기 때문에 디렉터리 이름이 root 이다.

centos 계정의 home 디렉터리 라면 centos .

 

usr

etc = 주로 설정파일이 들어있음

tmp = 자유로운 디렉토리. 단, 재시작 시 파일이 모두 삭제 됨

var = 데이터나 로그, 내용이 자주 바뀌는 파일이 저장된다.

 

 

 

 

 

 

 

절대 경로명 : 항상 ' / ' 디렉터리 부터 시작한다.

 

상대 경로명 : ' / ' 이외의 문자로 시작한다. 현재 디렉터리를 기준으로 작성한다.

예시)  cd 디렉터리명  /  cd ..  

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

리눅스의 일반적인 경우 

파일 = 파일 + inode + 실제 파일 데이터

inode : 파일의 메타 데이터 ( 소유자 , 소유 권한, 수정 날짜 파일의 위치 등등.. )

ls -i  로 inode 확인 가능.

파일 이름이 달라도 inode 번호가 같다면 같은 파일.

 

하드디스크에는 파일의 실제 데이터가 여기저기 분산 되어 저장되어있다. 

 

하드 링크 만들기 명령어 

ln [원본 파일] [링크 파일] : 파일의 링크를 생성한다.   , -s  심벌링 링크를 생성한다.

하드 링크  파일은 inode가 같은 파일이다. ( 아직 뭐가 장점인지는 잘 모르겠다. )

 

하드 링크로 1기가 파일을 100개 만들어도 하드디스크에는 1기가만 소모된다.

1기가 파일을 100개 복사 했다면  100기가를 소모한다.

 


과제 

1. 사용자 홈 디렉터리에 임의의 이름으로 파일 생성    >> touch 로 생성 했음

A.jpg A.txt A.avi A.conf
B.jpg B.txt B.avi B.conf
C.jpg C.txt C.avi C.conf
D.jpg D.txt D.avi D.conf
E.jpg E.txt E.avi E.conf

2. 확장자 별로 디렉터리를 만들고 해당 파일들을 옮겨주세요   >> mkdir 로 디렉터리 만들고 ,   mv로 이동했음  
mkdir txt
mv *.txt txt

jpg txt avi conf

3. 옮긴 파일들 중에서 A가 들어간 파일들을 복사해서 별도의 디렉터리에 모아줍니다.      (/tmp/A)
find 명령어를 활용해보는 문제??  같아서  사용해보았음.
find ./*/A.* -exec mv {} /tmp/A \;          pwd 위치 : /home ( 홈 디렉터리 )
[패턴] = 현재 디렉터리 내에 하위 디렉터리에서 A로 시작하는 파일들.
find [패턴] -exec [명령어] {} [명령어 인자] \;       {} = find 명령으로 검색한 모든 파일     \;   =  exec 옵션 내용의 마지막을 알림

find 를 사용 하는게 아니라 cp를 많이 써보라는 의도 같음 !!


4. 홈 디렉터리에 있는 jpg 디렉터리는 안의 파일만 지우고    >>  
rm -r jpg  ( jpg 디렉터리 삭제 ) >> 디렉터리 내부 파일을 지우겠냐고 물어봄 ' Y ' >> 마지막에 폴더까지 지우겠냐고 물어봄 ' N '

rm -rf jpg/*  << 이게 더 좋네요

 txt 디렉터리는 통째로 디렉터리까지 삭제하세요.
rm -rf txt


5. avi 디렉터리는 통째로 /tmp 디렉터리에 복사
cp -r avi /tmp
-r 옵션으로 디렉터리 이름을 명시


6. conf 디렉터리를 통째로 /tmp/conf 디렉터리로 이동하세요.
mv conf /tmp/conf
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

5일차 금 : OSI 7계층 프로토콜 http ssl ssh dhcp FTP 등

 

 

OSI 7계층 프로토콜  FTP  DHCP   DNS   HTTP   SSL   SNMP   STMP   SMB  ...

 

 

DHCP : 네트워크 설정을 자동으로 해주는 프로토콜

DHCP 원리

네트워크 어딘가에는 DHCP 서버가 있는데, 보내는 패킷 2개 + 받아야 할 패킷 2개가 필요하다

 

1. DHCP Discover : 브로드캐스트로 요청

2. DHCP Offer : 유니캐스트로 응답함

3. DHCP Request

4. DHCP Ack : 2번과 유사

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

DNS

DNS.pcap 분석하기 예제

 

DNS요청을 하는 클라이언트 및 서버의 ip / port 는?   192.168.0.114  /  53

 

DNS는 4계층 프로토콜로 무엇을 사용하는가?     UDP

 

DNS 요청한 주소들이 어떤 것들이 있는지 파악해보자

 

특별한 에러가 없는 경우 DNS 요청과 응답에 각각 몇 개의 패킷이 필요한지 확인하자 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

SSL : Secure Socket Layer

평문 통신을 암호화 해준다.

 

 

TLS :  transport layer security

 

 

암호화의 이해

일방향 암호화   rc4, MD4, MD5, SHA256, SHA512, SHA1024, sha2048

평문  >  암호화  =  암호문

 

해시 : 복호화 할 수 없다. 

패스워드 등 중요한 정보를 암호화 하는데 사용된다.

무결성 체크 등 에도 사용된다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

양방향 암호화

폄문 > 암호화 > 암호문 > 복호화 > 평문

 

키 : 암호화 , 복호화 할 때 사용하는 일정 길이의 문자열

 

대칭키 : 비밀키 , 세션키

평문을 키를 이용해서 암호화 하여 상대에게 '암호문, 키'를 보낸다.

상대는 받은 암호문을 키로 복호화하여 평문을 읽게 된다.

 

단점 : 키 전달 문제. ( 키를 어떻게 전달 할 것인가? )

DES , 3DES , AES

 

 

비대칭키 : 개인키 , 공개키

암호화에 사용하는 키와 복호화에 사용하는 키가 다르다.

 

개인키로 암호화 한 것은 공개키로 복호화가 가능하고,

공개키로 암호화 한 것은 개인키로 복호화가 가능하다

개인키는 본인만 알아야 하며, 공개키는 누구든지 가질 수 있다.

 

장점 : 키 전달 문제가 해결이 됨

단점 : 속도가 느림

 

 

RSA

상대방의 공개키로 암호문을 만들어 상대에게 보낸다. 상대는 본인의 개인키로 암호문을 복호화하여 평문을 읽는다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

SSL의 원리 >> 키 신뢰의 문제를 해결하기 위해 인증기관 이라는 개념을 가져옴.

인증기관이 인증해준 신뢰성있는 해당 사이트의 공개키를 '인증서(SSL)' 라고 한다.

 

G마켓에서 인증기관에게 우리 사이트의 인증서를 만들어 달라고 요청한다.

인증기관 에서는 G마켓의 공개키와 G마켓 사이트 정보를 받고, G마켓의 공개키에 인증기관의 개인키로 암호화하여 인증서를 발급해준다.

 

클라이언트는 G마켓에 접속을하면 G마켓의 인증서를 받게 되고, 클라이언트는 G마켓의 인증서를 인증기관의 공개키로 복호화 되는 것을 확인하고

신뢰할 수 있게 된다.   ( 인증기관의 개인키로 암호화 했기 때문에, 인증기관의 공개키로 해독이 된다. )

 

클러이언트는 임의의 대칭키를 만들고 G마켓의 인증서 (공개키) 로 암호화 하여 G마켓에서도 신뢰를 얻고 사이트를 이용할 수 있다.

( G마켓 에서는 G마켓의 공개키로 암호화된 클라이언트의 대칭키를  G마켓의 개인키로 해독 할 수 있다. )

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

FTP : 파일 전송 프로토콜

 

지원되는 인증방식

1. 서버에 등록되어 있는 계정 인증

2. 익명계정

 

 

 

 

Active Mode ( 기본 )

서버와 클라이언트 간의 명령은 21번 포트로,  업로드, 다운로드는 20번 포트로

20번 포트에서 서버에서 클라이언트로 먼저 접속을 하는게 특징.

 

하지만 최근에는 클라이언트가 사설IP ( 공유기 ) 를 사용하는 추세라서 자주 사용되지는 않는다

 

 

 

Passive Mode 

업로드와 다운로드를 할 때 20번 포트를 열지 않고 임의의 포트를 연다.

명령과 업로드 다운로드 모두 클라이언트에서 먼저 접속을 한다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

FTP.pcap 분석하기

1. SYN을 보내는 쪽이 클라이언트   ( 192.168.0.114 )    /    서버 ( 192.168.0.193 )  3 hand shake 하는중

1번 우클릭 , Follow - TCP Stream    TCP영역의 데이터만 보여준다.  

빨간색 = 클라이언트가 서버로 보내는 값 ( 요청 )    /    파란색 = 서버가 클라이언트로 보내는 값 ( 응답 )

 

PASV = 패시브모드로 변경하겠다

 

 

맨 밑 패킷 우클릭 - Follow - TCP Stream

패시브 모드로 바꾸고 난 뒤 7254번 포트에 접속 중 !!

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

http

인터넷 웹 서비스의 핵심 프로토콜

요청, 응답 형식으로 동작함

http 응답코드

100~199 단순한 정보

200~299 클라이언트의 요청이 정상적으로 처리됨

300~399 다른 url로 재이동

400~499 클라이언트의 요청이 불완전하여 다른 정보가 필요함

500~599 서버의 오류로 클라이언트의 요청 수행 불가

 

 

http. cap 분석하기

4번 패킷( HTTP ) 우클릭 - Follow - TCP Stream

 

 

 

쿠키 - 클라이언트에 저장되어 서버에서 활용하는 상태 정보

 

http 메소드

get

post

option : 서버에서 사용 가능한 메소드 정보 리스트 요청

put : 서버의 파일 업로드

delete : 서버의 파일 삭제

 

일반적인 웹 사이트의 경우

단, api 서버의 경우는 용도가 다름

서브네팅 이어서 조금 더 ..

VLSM ( Variable Length Subnet Mask ) : 서브넷을 가변적으로 알맞게 계속 주소를 만들어주는 방법

60개 , 30개 , 10개 ...

 

 

예제

201.102.1.0/24  네트워크를 1팀 120개,  2팀 60개, 3팀, 4팀은 20개씩 네트워크로 VLSM 서브네팅을 해보세요.

 

각 팀별로 네트워크주소/prefix 방식으로 표기

 

1팀 : 201.102.1.0/25

2팀 : 201.102.1.128/26

3팀 : 201.102.1.192/27

4팀 : 201.102.1.224/27

 

 

예제2

133.200.0.0/16 네트워크를 다음과 같은 개수로 할당해보시오

22   25   230   500   1000   2400   3500   4000

 

4000 : 133.200.0.0/20        4096개  256 * 16 

3500 : 133.200.16.0/20      4096개  256 * 16 

2400 : 133.200.32.0/20     4096개  256 * 16

1000 : 133.200.48.0/22     1024개  256 * 4 

500 : 133.200.52.0/23       512개  256 * 2 

230 : 133.200.54.0/24       256개  256 * 1 

25 : 133.200.55.0/27       32개  256 / 8

22 : 133.200.55.32/27        32개  256 / 8

 

 

사설 네트워크 IP대역

10.0.0.0 ~ 10.255.255.255   사설 네트워크에서 사용 (A클래스)
172.16.0.0 ~ 172.31.255.255 사설 네트워크에서 사용(B클래스)
192.168.0.0 ~ 192.168.255.255 사설 네트워크에서 사용 (C클래스)

 

 

 

▲7월14일 폴더 - 04. 프로토콜.pdf - 20페이지
프로토콜 헤더 구조 분석
ip 프로토콜
ip 헤더는 일반적으로 20바이트 크기
version : 4bit   ipv4, ipv6 등 ip 버전 확인용
IHL : 4bit
IP Header Length     헤더길이/4 저장
            일반적으로 5라는 값이 옴   =

TOS : Type of service : 거의 사용되지 않음. QOS와 관련

Total Length : ip헤더 길이 + 데이터 길이

Identification : 단편화된 조각을 구분하기 위한 구분자

IP FLAGS  : 단편화옵션
                D : do not frag     0       1
                M : More frag      0        1
Fragment Offset : 단편화된 조각 위치
TTL : 네트워크에서의 패킷의 수명, 3계층이상 장비를 지날때마다 1씩 감소
목적지를 못 찾고 무한루프하는 패킷을 자동으로 소멸시켜줌.

protocol : 데이터에 포함된 상위 프로토콜 종류
            01: ICMP
            06: TCP
            17: UDP

Header checksum : 헤더에 에러가 있는지 체크

보내는 사람 주소 : 4바이트
받는 사람주소 : 4바이트

기타옵션 : ip 전달에 걸린 시간값, 라우터에게 특별한 명령을 내린다 등등의 각종 옵션

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
TCP 프로토콜
tcp   ,   udp   비교
TCP  :  안정적인 전송이 목표 ,  연결수립  ,  윈도우 사이즈 설정을 통해 흐름제어  ,  긴 데이터 전송에 적합  ,  대부분의 프로그램에서 사용
UDP : 단순하고 빠른 데이터 전송이 목표  ,  연결수립 하지않음  ,  흐름제어 불가  ,  짧은 데이터 전송에 적합  ,  DNS  DHCP  SNMP  TFTP

 

 

 

▲ 7월14일 폴더 - 04. 프로토콜.pdf - 35페이지
출발지 포트 : 2바이트
목적지 포트 : 2바이트

Sequence numbr  : 4바이트
Acknowledgment nmber : 4바이트  > 신뢰성 있는 통신과 관련
TCP FLAGS
U : URG 긴급한 데이터가 있을 경우
A : ACK  데이터 수신 확인
P : PSH 보내는 데이터를 버퍼에 저장하지 않고 전달
R : RST 비정상인 연결 재수립 요청
S : SYN 연결 수립할 때 사용         ( 아래 사진 첫 연결 . )
F : FIN 연결 종료할 때 사용

Windows size : 수신 가능한 버퍼의 크기
Checksum : 오류 체크 ( 헤더 + 데이터 )
Urgent Pointer : 긴급 데이터의 위치를 표시 ( 거의 쓰이는 일은 없음 )
TCP Options : TCP 헤더에 없는 정보를 송신할 때 사용


1. 보내는 쪽은 임의의 숫자를 지정하여 자신의 seq를 생성
2. 데이터 송신 후 자신의 seq값에 보낸 데이터의 양 만큼의 숫자를 증가 시킴
3. 받는 쪽에서는 전송 받은 seq와 데이터 양을 확인하고 ack값을 계산해서 응답으로 보냄
4. ack는 전송 받은 데이터의 양을 표시

 

 

 

 

 


 

 

HTTP.cap  ( WireShark )
3way handshake
1. 클라이언트가 서버에게 연결 시도 : syn flag
2. 서버가 클라이언트에게 연결 허용 알림 : syn + ack flag
3. 클라이언트가 수신 확인 전송 : ack flag

4way handshake
1. 연결을 끊고자 하는 쪽에서 연결 종료 시도 : FIN + ACK Flag
2. 상대방에서 연결 종료 신호 수신 확인 : ACK Flag
3. 상대방도 연결 종료 시도 : Fin + Ack Flag
4. 연결을 끊는 쪽에서도 연결 종료 수신 확인 : ACK Flag
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ARP 프로토콜
ARP가 어떻게 IP에 해당하는 MAC 주소를 알아오는가?

1. 대상을 찾기 위해 IP주소에 해당하는 MAC ADDRESS를 ARP로 요청 - 브로드캐스트
2. 해당 IP를 가지고 있는 호스트는 ARP요청을 전송한 호스트에게 ARP응답을 전송합니다. - 유니캐스트


 

 

Hardware Type : 2계층 프로토콜 타입, 1 ( Ethernet )
Protocol Type : 3계층 프로토콜 타입, 0x0800 ( IPv4 )

Hardware Address length : MAC address의 길이, 일반적으로 6 ( 바이트 )
Protocol address length : IP address의 길이, 4

Operation Code ( Opcode ) : 
1 = ARP요청 ( 브로드캐스트 )
2 = ARP응답 ( 유니캐스트 )
3 = RARP요청
4 = RARP응답
5~~ = 다른종류 ARP 요청/응답


ARP.pcap 분석 예제
arp 요청을 하는 호스트의 ip/mac은?  192.168.0.114  /  00:16:ce:6e:8b:24   ( 1번 sender )
arp 요청 패킷의 전송 방식 및 목적지는?   브로드캐스트 , 모든 통신장비 ㅇㅇ
arp 프로토콜의 프로토콜 주소 ( IP주소 ) / 하드웨어 주소 ( MAC 주소 )의 타입/길이는 ?   IPv4 ( 4 ) , Ethernet ( 6 ) ,
arp 응답을 하는 호스트의 ip는? MAC주소는?   192.168.0.1   /   00:13:46:0b:22:ba   ( 2번 sender )
arp 응답 패킷의 전송 방식 및 목적지는?   유니캐스트  ,    ( 2번 target )
arp 요청/응답에 따른 operation code는?  요청 1  /  응답 2

 


 

 

 

Type : 대분류     Code : 소분류

ICMP의 기능 : 오류 보고 ( Error Report ) ,  질의 메시지 ( Query )
ICMP의 메시지 유형
0 : echo 응답 ( echo reply ) > ping의 응답 : ip 호스트 진단 ( 라이브 여부 확인 )
8 : echo 요청 ( echo request ) > ping의 요청 : ip 호스트 진단 ( 라이브 여부 확인 )
3 : 수신처 도달 불가능 ( Destination Unreachable ) : 목적지 도달 불가능 알림

 


 

ICMP.pcap 분석하기 예제                                                   192.168.0.114   >   192.168.0.1
icmp 요청을 한 호스트와 대상의 ip는?         통신 2종류임     192.168.0.114   >   72.14.207.99  

icmp 패킷의 ttl값을 통해 os 추측해보자     128 = 윈도우   /  255 = 리눅스 , cisco 장비 ( 라우터 )

icmp 요청/응답의 icmp type 및 code를 보자.   요청 Type : 8   /   응답 Type : 0

ICMP2.pcap 분석하기 예제
icmp 요청한 호스트와 대상 ip?     10.2.10.2   >   10.4.88.88
icmp 요청/응답의 type 및 code?    요청 8    /   수신지 도착불가 3   ,  code 1 : 호스트를 찾지 못함
분석 결과 알 수 있는 것은?     Destination Unreachable

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

네트워크 통신의 전반적인 구조 이해가 되었을까요 ???   >> 음 .. 아니요

유니캐스트 = 일 대 일

브로드캐스트 = 일 대 동일 네트워크 모두

멀티캐스트 = 일 대 그룹 ( 구독자 )

 

 

패킷을 받는 경우

1. 유니캐스트 이면서 목적지가 자기 자신인 경우

2. 브로드캐스트인 경우

3. 멀티캐스트인 경우 자기 자신이 속한 멀티캐스트 그룹의 주소인 경우

 

해당 경우가 아닌데 패킷을 받은 경우, 조금이라도 과부하를 막기 위해 폐기

 

 

2계층 브로드캐스트 에서의 MAC주소 

FF:FF:FF:FF:FF:FF

 

3계층 브로드캐스트 주소

255.255.255.255   또는  서브넷 마스크가 255.255.255.0 일때, 네트워크주소 + .255 (가장 끝 주소)

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

OUI : 제조사 코드

UAA : 제조사에서 자체적으로 할당. 네트워크에서 각 장비를 구분할 수 있게 해줌

 

 

@@@ 재미로 확인 @@@

bit.ly/ieee_list

 

MAC주소로 제조사 확인하는 사이트

@@@@@@@@@@@@@

 

★ 이번 주 가장 핵심 내용 

             IP 주소

 

대부분의 네트워크가 TCP/IP 로 동작하므로 IP 주소 체계를 이해하는 것이 네트워크 이해에 매우 중요함 !!!!

 

IPv4 주소는 32비트 . 옥텟 이라고 부르는 8비트 단위로  " . " 을 이용하여 구분함

예시 : 192.168.0.1   ( = 이진법으로 변환 할 줄 알아야 함 )

 

 

IP 주소 체계

클래스 : IP주소를 효율적으로 배정하기 위한 개념

 

A 클래스 : 0.0.0.0 ~ 127.255.255.255

00000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111

0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

A클래스의 서브넷마스크( 넷마스크 )

255.0.0.0

A클래스의 네트워크 개수  0 ~ 127 중   처음과 끝인 0과 127 을 제외하면 총 126개 이다.

A클래스의 호스트 개수 256 * 256 * 256 - 2 = 16,777,216 - 2 = 16,777,214 

맨 처음 호스트 주소 > 네트워크 주소 이므로 제외.

맨 끝 호스트 주소 > 브로드캐스트 주소 이므로 제외.

 

 

 

B 클래스 : 128.0.0.0 ~ 191.255.255.255

10000000.00000000.00000000.00000000 ~ 10111111.11111111.11111111.11111111

10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

서브넷마스크 = 255.255.0.0             ( x 개수만큼 제곱 )

네트워크 개수 2^14 = 16,384 개

호스트 개수 2^16 - 2 = 65,534개  ( 네트워크, 브로드캐스트 주소 제외 )

 

 

 

C 클래스 : 192.0.0.0 ~ 223.255.255.255

11000000.00000000.00000000.00000000 ~ 11011111.11111111.11111111.11111111

110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

서브넷마스크 = 255.255.255.0   ( 강의실이랑 동일 )

네트워크 개수 2^21 = 2,097,152 개   

호스트 개수 256 - 2 = 254 개

 

 

 

D 클래스 : 224.0.0.0 ~ 239.255.255.255   > 멀티캐스트 주소로 사용함

11100000.00000000.00000000.00000000 ~ 11101111.11111111.11111111.11111111

 

 

 

 

E 클래스 : 240.0.0.0 ~ 255.255.255.255  >  예약용

11110000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111

 

서브넷마스크의 값으로 될 수 있는 것들?

255.255.0.0                                    /16
255.255.128.0                                /17
255.255.192.0                                 /18
255.255.224.0                                  /19
255.255.240.0                                  /20
255.255.248.0                                 /21
255.255.252.0                                 /22
255.255.254.0                                /23
255.255.255.0                                /24
255.255.255.128                             /25
255.255.255.192                             /26
255.255.255.224                              /27
255.255.255.240                             /28
255.255.255.248                                /29
255.255.255.252                                 /30

 

 

 

 

 

 

하지만 클래스 기반의 주소 체계인 클래스풀 체계는 인터넷이 상용화 되면서 

필요한 호스트 숫자가 폭발적으로 증가하였고 그 다음의 주소 체계인

 

클래스리스 네트워크가 등장하게 됩니다 

 

첫 번째 단기 대책 : Classless Inter-Domain Routing ( CIDR )

두 번째 중기 대책 : NAT와 사설 IP

세 번째 장기 대책 : IPv6

 

 

NAT 정의

사설 IP에서 공유기를 거치면, 공유기의 공인 IP로 변경이 되어 ISP ( Internet Service Provider ) 에 접속하게 된다.

출발지는 공인 IP, 도착지는 사설 IP 가 된다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

서브네팅

정의 : 원래 부여된 클래스의 기준을 무시하고 새로운 네트워크-호스트 구분 기준을 

사용자가 정하여 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 말한다.

 

예제

1. 211.100.10.0 ~ 211.100.10.255 의 C클래스 네트워크를 네트워크당 60개의 IP를 사용 가능하도록 서브네팅 하시오. 

 

서브넷팅의 팁 : 네트워크를 반복적으로 1/2로 분할해서 구해보자.

 

1) 서브넷 마스크는?   c클래스 기준 /24 인데, 반띵을 두 번 했으니 +1  ,  +1   해서    /26   ( 255.255.255.192 )

2) 각각의 서브넷은?  211.100.10.0/26   ,   211.100.10.64/26    ,   211.100.10.128/26   ,   211.100.10.192/26

3) 서브넷의 개수는?   4개

4) 네트워크당 IP의 개수는?   62개

5) 첫 번째 서브넷의 브로드캐스트 주소는? ( 맨 마지막 호스트 주소 )   211.100.10.63

6) 두 번째 서브넷의 사용가능한 IP범위는?   211.100.10.65  ~  211.100.10.126  ( 사용가능!!! 한 것.  첫 번째와 마지막 번째 주소는 제외 )

 

 

풀이

1. 반띵을 해봅니다 

마지막 옥텟에서 0~127   /  128~255   로 반띵했습니다.

 

2. 한 번 더 반띵 해봅니다

0~63  /  64~127   ,  128~191  /  192~255   하나의 네트워크당 62개의 주소를 부여할 수 있게 됐습니다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

예제 2번

1. 211.100.10.0 ~ 211.100.10.255 의 C클래스 네트워크를 네트워크당 13개의 IP를 사용 가능하도록 서브네팅 하시오.  

 

128   64  32   16  

/25   /26  /27  /28

 

1) 서브넷 마스크는?   c클래스 기준 /24 ,  반띵을 네 번 했으니 +4  그러므로   ' /28 '  ( 255.255.255.240 )

 

2) 각각의 서브넷은?   총 16개

211.100.10.0/28  ,  16/28   ,   32/28   ,   48/28   ,   

64/28  ,   80/28   ,   96/28    ,   112/28

128/28   ,   144/28   ,   160/28   ,   176/28

192/28   ,   208/28   ,   224/28   ,   240/28

 

3) 서브넷의 개수는?   16개

 

4) 네트워크당 IP의 개수는?   14개

 

5) 첫 번째 서브넷의 브로드캐스트 주소는? ( 맨 마지막 호스트 주소 )   211.100.10.15

 

6) 두 번째 서브넷의 사용가능한 IP범위는?  211.100.10.17 ~  211.100.10.30    ( 사용가능!!! 한 것.  첫 번째와 마지막 번째 주소는 제외 )

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

예제 3번

 

B클래스 크기의 네트워크를 서브네팅 해보자

네트워크 주소가 151.92.0.0 인 B클래스 네트워크 (151.92.0.0/16)를 각 네트워크당 6500개의 ip가 사용가능하도록 서브네팅 해보자
255.255.224.0/19 
151.92.224.0/19

1) 서브넷 마스크는?   B클래스 기준 /16 ,  반띵을 세 번 했으니 +3  그러므로   ' /19 '   ( 255.255.224.0 )

 

2) 각각의 서브넷은?   

151.92.0.0 ~ 151.92.31.255  (  151.92.0.0/19 )

151.92.32.0 ~ 151.92.63.255  (  151.92.32.0/19 ) 

151.92.64.0 

151.92.96.0 

151.92.128.0 

151.92.160.0 

151.92.192.0 

151.92.224.0 

+32 씩 ...

 

3) 서브넷의 개수는?   8개   (  B클래스 한뭉탱이를 3번 반띵 했으니까. )

 

4) 네트워크당 IP의 개수는?   8190개

 

5) 첫 번째 서브넷의 브로드캐스트 주소는? ( 맨 마지막 호스트 주소 )   151.92.31.0

 

6) 두 번째 서브넷의 사용가능한 IP범위는?  151.92.32.1 ~ 151.92.63.254    ( 사용가능!!! 한 것.  첫 번째와 마지막 번째 주소는 제외 )


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
네트워크 주소 ( Network Address ) : 하나의 네트워크를 통칭하기 위한 주소
브로드캐스트 주소 ( Broadcast Address ) : 특정 네트워크에 속하는 모든 호스트들이 갖게 되는 주소,
네트워크에 있는 모든 클라이언트들에게 데이터를 보내기 위함.

과제) 서브넷팅된 IP주소 구분하기.
보기 IP주소는 서브넷팅된 주소 이다.
 [가] IP주소가 속한 Network Address , 
 [나] IP주소가 속한 Network의 Broadcast Address ,
 [다] 해당 Network의 할당가능한 IP주소 대역 ,
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

예)  130.56.99.120 /30  <- IP address
가. Network Address : 130.56.99.120 /30 
나. Broadcast Address : 130.56.99.123
다. 할당가능한 IP주소대역 : 130.56.99.121~ 130.56.99.122
라. 보기 IP주소는 할당가능한 IP주소예요? -> 할당하지못함.
마. 이유 : Network Address로 예약된 주소이기 때문에.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

(1) 10.74.69.52 /29
[가] IP주소가 속한 Network Address , 10.74.69.48  /29
 [나] IP주소가 속한 Network의 Broadcast Address , 10.74.69.55
 [다] 해당 Network의 할당가능한 IP주소 대역 ,  10.74.69.49 ~ 10.74.69.54
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오   예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.   없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(2) 85.98.46.119 /25

[가] IP주소가 속한 Network Address , 85.98.46.0   /25
 [나] IP주소가 속한 Network의 Broadcast Address ,  85.98.46.127
 [다] 해당 Network의 할당가능한 IP주소 대역 ,  85.98.46.1 ~ 85.98.46.126
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오  예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.   없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(3) 96.13.44.146 /30

[가] IP주소가 속한 Network Address ,  96.13.44.144  /30
 [나] IP주소가 속한 Network의 Broadcast Address ,  96.13.44.147
 [다] 해당 Network의 할당가능한 IP주소 대역 ,  96.13.44.145 ~ 96.13.44.146
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오   예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.   없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(4) 75.55.86.210 /26

[가] IP주소가 속한 Network Address , 75.55.86.192  /26
 [나] IP주소가 속한 Network의 Broadcast Address ,  75.55.86.255
 [다] 해당 Network의 할당가능한 IP주소 대역 ,   75.55.86.193 ~ 75.55.86.254
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오   예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.   없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(5) 129.72.16.116 /28

[가] IP주소가 속한 Network Address ,  129.72.16.112  /28
 [나] IP주소가 속한 Network의 Broadcast Address ,  129.72.16.127
 [다] 해당 Network의 할당가능한 IP주소 대역 ,  129.72.16.113 ~ 129.72.16.126
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오    예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.    없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(6) 222.79.61.159 /27

[가] IP주소가 속한 Network Address , 222.79.61.128  /27
 [나] IP주소가 속한 Network의 Broadcast Address ,  222.79.61.159
 [다] 해당 Network의 할당가능한 IP주소 대역 ,  222.79.61.129 ~ 222.79.61.158
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오  아니오
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.   Broadcast Address 로 예약된 주소이기 때문이다.
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(7) 192.89.10.255 /23

[가] IP주소가 속한 Network Address , 192.89.10.0  /23
 [나] IP주소가 속한 Network의 Broadcast Address ,   192.89.11.255
 [다] 해당 Network의 할당가능한 IP주소 대역 ,   192.89.10.1 ~ 192.89.11.254
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오    예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.    없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(8) 156.22.191.0 /22

[가] IP주소가 속한 Network Address , 156.22.188.0  /22
 [나] IP주소가 속한 Network의 Broadcast Address ,  156.22.191.255
 [다] 해당 Network의 할당가능한 IP주소 대역 ,    156.22.188.1 ~ 156.22.191.254
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오    예 
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.    없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

(9) 225.77.29.42 /21

[가] IP주소가 속한 Network Address , 225.77.24.0  /21
 [나] IP주소가 속한 Network의 Broadcast Address ,   225.77.31.255
 [다] 해당 Network의 할당가능한 IP주소 대역 ,   225.77.24.1 ~ 225.77.31.254
 [라] 보기에 주어진 IP주소가 할당가능한 주소인지 확인하시오    예
 [마] 만약 할당할 수 없다는 주소라면 그이유를 쓰시오.    없음
       할당할 수 있는 주소인 경우는 '없음' 쓰시오.

 

 

검증  서브넷 계산기

https://www.subnet-calculator.com/subnet.php?net_class=A 

상위 > 하위 = 헤더를 붙인다 = 인캡슐레이션

 

하위 > 상위 = 헤더를 뗀다 = 디캡슐레이션

 

패킷의 데이터 = 페이로드 라고 부르기도 한다.

 

 

 

 

잘 알려진 프로토콜들 의 포트번호 

FTP 20, 21   SSH  22   telnet 23   SMTP  25

DNS 53 도메인 이름으로 IP를 알아내는 프로토콜     

TFTP 69      HTTP, TCP 는 80   POP3은 110

netbios (윈도우 시스템 이름관련 서비스 ) 137~139

IMAP : 메일관련 프로토콜 : 143 HTTPS(SSL) : 443 SMB : 445

 

DBMS

MS-SQL(SQL SERVER) : 1433,1434

MARIADB(MY-SQL): 3306

ORACLE : 1521

원격데스크톱(RDP) : 3389

SNMP : 161,162

DHCP : 67 자동으로 네트워크를 세팅해주는 프로토콜

 

포트 번호 : 동일한 IP 주소를 가진  시스템 내에서 프로세스를 구분하기 위한 주소

0 ~ 1023 포트 : well known port ( = system port ) = 잘 알려진 서비스들이 사용. ( 보통 서버가 사용 )

1024 ~ 49151 포트 : registerd port ( = user port ) = 응용 프로그램들이 사용

49152~65535 포트 : Dynamic port = 접속을 하는 용도로 사용

 

명령어 :  nslookup 도메인이름 
해당 도메인 이름에 대한 ip를 알 수 있음 
nslookup naver.com

명령어 : ipconfig /displaydns                              
DNS 캐시 지우기

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ



Preamble : 이더넷 헤더에 포함되지 않음. 이더넷 신호가 전송 됨을 알림.
FCS : Fream Check Sequence , check sum 기능. 4byte 

이더넷 헤더의 길이 : 14 byte ( 6 + 6 + 2 )
이더넷 데이터의 길이 : 46 ~ 1500 byte
 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
와이어샤크 화면구성
패킷 리스트 : 캡쳐한 패킷목록 ( 상단부 )
패킷 디테일 : 패킷 정보들 ( 중단부 )


와이어샤크 필터링
프로토콜 필터링 http tcp arp https ...
ip.addr == 8.8.8.8
ip.src 
ip.dst

tcp.port ==
tcp.dstport == 
tcp.srcport ==
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
VPN  ( Virtual Private Network )
물리적으로는 전용선이 아니지만 가상으로 직접 연결한 것 같은 효과가 나도록 만들어주는 기술

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
techblogposts.com

3일차 수 : 기타 네트워크 기본설명 , ip , ip주소 , 서브넷팅
4일차 목 : TCP UDP  ICMP  ARP
5일차 금 : OSI 7계층 프로토콜 http ssl ssh dhcp FTP 등

+ Recent posts