Born2beroot(4)
ARP
Address Resolution Protocol
의 약자. 네트워크 상에서 가장 우선하는 프로토콜일때가 많다.
이 프로토콜의 목적은 특정 IP 주소로 컴퓨터의 MAC 주소를 찾는 것
이다.
ping 10.0.2.102
명령어를 입력하면, 컴퓨터는 도착지할 IP주소는 알지만, 도착할 MAC주소는 알지 못한다.
위 MAC주소가 필요한 이유는 이더넷 프레임의 첫 6바이트를 구성하기 때문이다.(preamble의 6바이트를 의미하는 듯)
위키백과
컴퓨터는 이때, 도착할 MAC주소를 ff:ff:ff:ff:ff:ff
으로 구성한다.
이러면 이 프레임이 로컬 서브넷의 모든 컴퓨터에 도달하게된다.
그 컴퓨터들 중, 10.0.2.102
주소를 가진 컴퓨터가 자신의 MAC
주소를 담은 이더넷 프레임을 응답하게된다.
UDP DNS
Domain Name System
의 약자.
UDP 프로토콜의 위에서 일하는 어플리케이션 레이어의 프로토콜이다.
DNS의 목표는 이름을 IP주소로 번역
하는 것이다.
오늘날 우리가 구글을 이상한 숫자가 아닌, www.google.com
으로 접속하게 해주는게 바로 이 DNS덕분이다.
웹 접속 예시
- 클라이언트
Chrome을 사용하여 웹 사이트를 서핑하면 브라우저(Chrome)와 WWW 서버 간에 연결이 설정된다.
이 연결은 응용 프로그램 계층에서 발생한다.
그러나 응용 프로그램은 연결이나 네트워크에 대해 알지 못하기 때문에 Transport 계층의 TCP에 의해 연결이 이루어진다.
그러나 TCP는 네트워크에서 패킷 전송에 대해 알지 못하기 때문에 네트워크 계층은 데이터그램을 올바른 대상 IP 주소로 전송하기 위해 사용된다(여러 라우터를 통과).
링크 계층에서 이더넷 프로토콜은 LAN 통신과 다음 컴퓨터(대개 라우터)로의 이더넷 프레임 전달을 담당한다.
그리고 층의 하단에는 전기 신호나 전파를 한 지점에서 다음 지점으로 전송할 수 있는 하드웨어가 필요한데, 이 하드웨어는 HTTP, TCP 또는 IP에 대해 전혀 알지 못한다.
- http
위와같이 브라우저 - 서버 간 접속시에 http프로토콜이 사용된다.
응용프로그램 계층에서 링크계층으로 내려오면서
- TCP는 응용프로그램 계층 프로토콜에 TCP헤더를 추가한다.
- IP는 위의 프로토콜에 더해 IP헤더를 추가한다.
- 이더넷은 위의 프로토콜에 이더넷 헤더를 추가한다.
위의 결과물이 바로 이더넷 프레임
이다.
각 프로토콜들이 쌓여서 이더넷 프레임을 구성하고, 이 프레임은 이더넷 헤더, IP 헤더, TCP 헤더와 HTTP GET request를 담고있다.
- 서버
위의 클라이언트에서 발송한 전기신호는 서버에서 네트워크 카드로 수신되고, 바이트로 변환된다.
대상 MAC주소가 맞으면 이더넷 헤더가 제거되고 데이터그램이 IP로 지정된다.
IP는 IP주소를 확인해 IP헤더를 제거하고, 패킷을 TCP에 제공한다.
TCP는 포트를 확인하고 포트 헤더를 제거해 서버 응용프로그램에게 나머지를 전달한다.
cron
유닉스 계열 컴퓨터 운영체제의 시간 기반 잡 스케쥴러.
관리자들이 주기적으로 작업을 실행할 수 있도록 cron을 사용한다.
- crontab 파일에 의해 구동된다.
# ┌───────────── min (0 - 59)
# │ ┌────────────── hour (0 - 23)
# │ │ ┌─────────────── day of month (1 - 31)
# │ │ │ ┌──────────────── month (1 - 12)
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
- 이 예시는 매일 20시에 쉘파일을 구동한다.
0 20 * * * /home/oracle/scripts/export_dump.sh
sudo
커맨드를 다른 유저의 권한으로 사용할 수 있게 해주는다.
sudo 커맨드를 설정하기 위해선, visudo
커맨드로 파일을 수정할 수 있다.
이 파일들에 여러가지 설정들의 예시는 아래와 같다.
Defualts editor=/usr/bin/vim
기본 에디터 경로는 /usr/bin/nano인데, vim이 더 편하니까 이걸로 바꾸자
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
sudo커맨드를 실행할때마다 사용되는 경로- 시스템 관리자가 sudo유저가 보안 경로 환경변수를 사용하도록 신뢰하지 않을때
- root경로와 user 경로를 구분하기위해. 사용된다.
Defaults logfile="/var/log/sudo.log"
sudo 커맨드로 성공, 실패, 오류난 커맨드를 모두 기록할 수 있다.
Defaults badpass_message="Password is wrong, please try again"
password를 잘못입력했을때 보여줄 메세지를 입력할 수 있음.
Defaults passwd_tries=5
password 시도회수를 정해줄 수 있다.
Defaults requiretty
sudo가 로그인된 터미널 세션(logged-in terminal session)에서만 실행되게 강제한다.
sudo가 cronjob이나 데몬으로 사용되는 것을 방지한다.
Defaults log_input,log_output
Defaults iolog_dir=/var/log/sudo
sudo의 입출력을 모두 기록한다.
vCPU, CPU
- vCPU는 가상 중앙 처리 장치의 약자.
vCPU는 특정 가상 머신에 할당된 physical cpu의 일부, 또는 공유를 나타낸다.
- 물리적 CPU(이하 CPU)는 Hypervisor라는 가상머신을 생성하고 구동하는 소프트웨어에 의해 제어된다.
CPU는 물리적 CPU 코어로 나뉘게 되는데, 각 코어는 8개의 vCPU를 지원할 수 있다.
따라서, vCPU는 CPU와 일대일 할당의 개념이 아니다.
- 소켓
하드웨어를 나타낸다. 마더보드가 가진 프로세서 소켓의 개수를 의미한다.
즉, 마더보드의 용량을 의미하고, 실제 전력은 마더보드에 실제로 설치된 프로세서의 수이다.
-
CPU(물리적 CPU)는 마더보드 소켓에 실제로 설치된 하드웨어를 의미한다.
-
물리적 코어 물리적 CPU 칩셋의 실제 물리적 프로세서이다. 각 물리적 코어는 자체 회로, L1, L2 캐시를 가지고 있어서 별도의 프로세서로 작동한다.
-
논리 CPU/processor 물리적 프로세서 스택에서 시간을 추상화한 것. 물리적 시스템과 하이퍼바이저(VM구동 소프트웨어)에서 다르게 작동한다.
하이퍼바이저의 맥락에서 보면, 물리적 CPU를 나누어서 사용한다는 것이 vCPU와 비슷한데,
논리적 프로세서는 하이퍼바이저의 물리적 코어와 같지는 않다. -
가상 프로세서/vCPU vCPU는 시간에 종속된다. 가상 프로세서는 CPU에서 소비한 처리 시간을 의미한다고 생각하면된다.
댓글남기기