Preview
IP, Subnet Mask, Default Gateway, DNS
사람간 통신(신체 - 물리적, 이름 - 논리적(가변적))
통신기기(NIC 안에 물리적 주소 : MAC, 논리적 주소 - IP)
IP(Internet Protocol)
- internetworking : 상호통신
- protocol : 통신을 위한 언어
- 표준 통신언어
IP(IPv4)
- 32비트 (4개의 옥텟(8bit)로 구분)
- bit -> 0, 1로 표현
1.1.1.1 255.255.255.0은 1.1.1.0 ~ 1.1.1.255 사이에 포함된 하나의 호스트이다.
첫번째 주소 1.1.1.0은 네트워크 주소
1.1.1.255는 브로드캐스트 주소
사용할 수 없는 IP주소(PC에 할당 불가능 주소)
1. 0.0.0.0 : IP없음
2. 255.255.255.255 : IPv4 주소 전체에 대한 브로드캐스트 주소
3. 각 네트워크에서 첫번째 주소 (ex. 1.1.1.0 255.255.255.0) -> 네트워크 주소
4. 각 네트워크에서 마지막 주소 (ex. 1.1.1.255 255.255.255.0) -> 브로드캐스트 주소
5. 127.0.0.1(localhost) : 자기 자신을 의미하는 논리적 장치(루프백) 주소
- localhost : 자기자신 -> 만약 ping localhost가 가능하면 해당 pc는 TCP/IP의 동작 상태가 정상적이어서 외부와의 통신이 가능하다는 것을 알 수 있다.
- loopback : 인터페이스는 자기자신에게 테스트 할 수 있는 논리적 인터페이스이다.
서로다른 네트워크 간에는 기본 게이트웨이가 있어야 통신이 가능하게 된다.
pc가 외부 서버의 도메인 주소를 이용하여 통신하고자 한다면 PC에 DNS 서버의 주소를 반드시 등록해 두어야한다.
LINUX
유닉스 -> 가상화에 있어서는 진골이다. 원래부터 가상화가 지원됨 대신 너무 비쌈
그래서 리눅스 토발쯔가 minix를 개발해서 리눅스 커널을 만든다. 그래서 유닉스처럼 보인다. 나중에 오픈소스형태로 이 커널 위에 app, shell, 등등 붙여넣어서 배포판리눅스를 만든다.
배포판 리눅스
-> CentOS/Fedora/RHEL
-> Ubuntu
-> suse
-> Debian -> Ubuntu
구조상
와같다.
1. 하드웨어
2. 커널 -> 사용자가 관리할 수가 없다. 업데이트도 일어나기 때문에 잘 확인하고 실행해야한다.
3. 쉘 -> 사용자가 관리할 수 있게 한다. -> ksh, bash, csh 등등 있음
4. Application -> 사용자가 편하게 사용. cmd, terminal도 여기에 해당
app에서 명령을 shell로 내려서 검증을 한다.
결국 리눅스는 사용자가 실행한 명령, 프로세스 등을 커널이 허락해 주어야 실행된다.
웹서버를 설치하고 실행했을 때 동작하는 원리??
리눅스 설치
- 설치버전 : minimal install(패키지 최소설치), Server with GUI(패키지 최소설치 + GUI), GNOME Desktop(클라이언트 사용 목적)
- 패키지(윈도우의 exe 같은거)
와 같이 구성되어진다.
httpd를 설치한다고 보면
먼저 터미널에서 쉘을 켜서 yum install httpd를 입력한다.
그럼 쉘에 저장된 저장소를 찾아가 CentOS 공식 저장소에서 패키지 파일을 가상머신에 설치된다.
설치된 httpd는 실행파일(바이너리)와 라이브러리를 가지게 되고 구성파일로 httpd.conf가 있어서 실행시 httpd.conf를 참조해 라이브러리의 함수를 가져와 실행시킨다.
이렇게 실행된 httpd는 사용자에게 애플리케이션을 제공하고 우리는 그것을 가지고 보게된다.,
특정 서비스를 외부에 제공하고자 할때에는 패키지 설치 -> 구성내용 수정, 변경 (conf파일) -> 서비스 시작(바이너리는 구성파일을 읽고 해당 내용에 맞는 서비스를 만들어 낸다.) -> 외부 사용자는 생성된 서비스(애플리케이션)으로 접속한다.
[root@web1 ~] #
- root : 로그인한 사용자
- web1 : 로그인한 서버의 이름
- ~ : 로그인한 사용의 홈 디렉토리에 위치해 있다.
- # : 슈퍼유저(시스템 전체에 대한 제어권을 가진 최고 관리자 - root)
- $ : 일반유저
- C,D 와 같이 파일시스템이 수평적이지 않고 트리구조 가짐 그래서 이동하는 방법에는 절대경로와 상대경로가 있다.
파일구조
- etc : 구성 파일 위치
- var : 로그 파일 위치
- boot : 리눅스 부팅을 위해 필요한 파일들
- root : 슈퍼유저인 root의 홈 디렉토리
- home : 일반유저들의 홈디렉토리
기본 명령어
pwd
ls
cd
- cd ~ : 홈디렉토리로 이동
cat
touch :
echo : 출력하기
위와같이 환경변수를 출력해보면 볼 수 있다.
참고로 환경변수를 보는 방법은 (env)를 치면 된다.
mkdir
rmdir
ping
su [사용자] : 사용자변경
일반 유저가 못들어가는 곳 : root, 그외 폴더는 들어가서 수정은 불가능 단 home 디렉토리 접근 가능
서버의 이름이 저장된 파일 -> /etc/hostname
우리가 만약 이런 서버에 접속한다면 다음의 과정을 거친다.
www.naver.com -> 도메인의 IP를 해석해야한다.
1. host 파일을 읽어본다.
2. 만약 host파일에 내용이 없다면 DNS서버에게 질의한다.
```
nslookup www.keduit.com
```
nslookup은 현재 서버 또는 PC에 설정된 DNS서버에게 도메인의 IP 주소를 query하는 명령어
주소를 복사해오자
```
gedit /etc/hosts
```
DNS 놀이를 또 해보자
위와같이 ip 주소 뒤에 주소를 적어주자
근데 브라우저가 그 호스트로 접속하는거 막음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그냥 다른거 해보자
그래서 위와같이 snu에 ping을 보냈는데 결과는 우리가 저장했던 ip로 보내진다. 해킹공격중에 DNS에 등록된 사이트를 변환시키어서 다른 사이트로 접근하게끔 할 수도 있다. 그래서 DNS 서버에 등록되어 있지 않는 매핑으로의 접속을 차단시키고 있다.
했던거 돌려놓고 가자...
디렉토리 만들고 놀기
```
mkdir testdir
```
'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글
Cloud 05 (0) | 2022.01.05 |
---|---|
Cloud 정리1(01~07) (0) | 2022.01.04 |
Cloud03 - IP, DNS, DHCP, hostname, domain name, Wireshark, httpd, REACT, Python용 PS, VSCODE 설정 가져오기 (0) | 2022.01.03 |
Cloud 02 - Volume, 허브, 스위치, WEB Server, WAS Server, DB Server, linux 명령어, mariaDB 연결, PHP DB 데이터 가져오기 (0) | 2021.12.31 |
Cloud 01 - VMware, Hypervisor, centOS, AWS-EC2 (0) | 2021.12.30 |