HashiCorp Terraform Associate 003 개념

 

 

 


일단 Terraform 이란?

 

인프라를 코드로 관리하는 툴

인프라를 코드로 관리하는 방식은 조직 내 협업에 큰 도움이 된다. 이 방식은 인프라를 개선하고, 빠르게 확장하며, 애플리케이션 개발 프로세스를 효율적으로 만드는 데 기여한다.

기존에는 각기 다른 도구에 로그인하여 수동으로 작업을 처리했지만, 이제는 Terraform을 통해 인프라를 코드로 정의하고 관리할 수 있다. 코드로 관리하면 인프라 변경 사항을 버전 관리하고, 저장소에 체크인하여 관리할 수 있다. 또한 코드로 정의된 인프라는 실시간으로 문서화되어 어떤 리소스가 어떻게 배포되었는지 쉽게 확인할 수 있다.

이점

수동 단계를 코드화하면 클라우드 기반 서비스의 자동화가 가능하다. 이를 통해 조직은 인프라를 빠르게 확장하고, 애플리케이션 배포를 자동화할 수 있다. 개발자나 운영팀은 수동 작업 없이 효율적으로 작업을 진행할 수 있다.

인프라 관리 도구

인프라를 코드로 관리하는 도구는 다양하다. Terraform은 멀티 클라우드 환경에서 인프라를 배포하고 관리할 수 있는 강력한 도구다. AWS, Azure, GCP 등 다양한 클라우드 플랫폼에서 Terraform을 사용해 인프라를 자동으로 배포하고 관리할 수 있다.

그 외에도 CloudFormation (AWS), Azure Resource Manager (ARM), Google Cloud Deployment Manager 등의 도구들이 있지만, Terraform은 다양한 클라우드 환경을 처리할 수 있어 범용성이 높다.

구성 관리 도구

인프라를 배포한 후, 구체적인 환경 설정을 자동화하는 도구에는 SaltStack, Ansible, Puppet 등이 있다. 이들 도구는 인프라 설정을 자동으로 처리하며, Terraform과는 다른 역할을 한다. Terraform은 인프라를 구축하는 데 중점을 두고, SaltStack, Ansible, Puppet은 구축된 인프라의 설정 및 관리를 자동화하는 데 사용된다.

 

 

 

Terraform은 AWS뿐만 아니라 Azure, GCP 같은 여러 클라우드 서비스도 쉽게 관리할 수 있게 도와주는 자동화 도구임.

보통 AWS에서 서버나 네트워크를 설정하려면 콘솔에서 클릭을 많이 해야 하는데, Terraform을 사용하면 코드 몇 줄만 작성하면 한 번에 배포할 수 있다.
또한, 코드로 관리되니까 똑같은 환경을 여러 번 만들거나, 변경 이력을 추적하는 것도 가능해.

쉽게 말해서, 클라우드를 더 편하게 쓰게 해주는 프로그래밍 도구라고 보면 된다.


 

실습방법

 

1. Terraform 과 VSCode 를 다운받아서 설치한다.

2. AWS에서 user 계정을 만든후 VPC( 가상 사설 클라우드, Virtual Private Cloud )정책을 부여한다.

** VPC는 네트워크 리소스 네트워크 공간을 의미하는데 그안에 EC2(서버), RDS(데이터베이스) 같은 리소스를 추가할 수 있다.

** VPC안에 구역을 나눌 수 있는데 퍼블릭(인터넷 사용가능)과 프라이빗 서브넷(인터넷 사용불가능)으로 나눌 수 있다.

퍼블릭 서브넷은 게이트웨이를 통해 인터넷을 사용할 수 있고 프라이빗 서브넷은 인터넷을 사용하고 싶으면 nat 게이트웨이를 통해 사용할 수 있다.

 

예를 들어, **EC2의 사설 IP (192.168.x.x)**를 **NAT의 공인 IP (203.x.x.x)**로 바꿔서 외부와 소통하게 된다.

그리고 EC2 서버가 인터넷에 접속할 때, NAT가 대신 나가서 인터넷에 요청을 보내고, 응답을 받아서 다시 EC2로 전달하는 역할을 한다.

 

IAM 사용자에게 VPC 관련 권한( VPC 생성, 서브넷 만들기, 라우팅 테이블 설정 등 )을 주면, 그 사용자는 VPC 설정을 자유롭게 할 수 있다.

 

3. 그 자격 증명을 터미널에 추가한다.

 

 

 

0. 리눅스 vs 윈도우

리눅스 : 프로세스 단위 실행

윈도우 : 오브젝트 단위 실행 , 오브젝트를 관리하기 위해 핸들이라는 것이 있다.

 

운영체제 - 프로그램이 실행되면 프로세스 ID를 부여한다. 하나의 프로세스는 하나의 스레드로 구성된다.

 

1. 컴퓨터 최상단에 연산처리를 하는 CPU가 존재한다.

폰노이만 구조 : 모든 데이터는 메모리를 통해 접근한다. = 기본적인 컴퓨터 시스템

 

CPU : 컴퓨터 최상단, 연산처리(+,-), 직접 디스크 접근 못함

   |

M.M : 모든 데이터를 메모리를 통해 연산 

   |  ------- 케이블을 통해 전기신호로 연결

   | -------- 입출력장치 : ex) 키보드. 메인보드에 붙어있지 않음

디스크 : 보조기억장치 ex) HDD, SSD, usb

 

 

cpu = 이진수를 연산한다.
연산하는 소자가 필요하다. Gate이다.

a+b=c
Cpu안에서 임시적으로 저장하는 것은 레지스터이다.
IR : ex) +, -
MAR : 메모리 내에 그 데이터 어디있는지 주소를 가르킨다.
MBR : 메모리에서 데이터를 가져와서 저장한다.


2. 병렬처리와 core
a+b=c
c+1=d
이거는 병렬처리 못한다.

하지만
a+b=c
c+d=e
이거는 병렬처리 할 수 있다.

작은 cpu(=core) 하나 만들어서 각각 처리할 수 있다.
core가 많아질수록 훨씩 빨라진다.


3. 각자의 크기가 다르기 때문에 메모리 매핑
CPU
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
Cache(ex) sram)
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
M.M(ex)삼성전자 dram)
| 메모리 매핑방법: 1) direct 2)Associate 3)Set Associate
DISK

1. 다이렉트 매핑 : 한번에 찾아간다.= 유일한 주소로 찾아간다.=Hash(패스워드 말고도 쓰임)=Direct Access = Random Access = Hash Access
2. 연관 매핑 : 1번갔더니 10가 있다. 그럼 10번 가서 찾으면 그게 진짜 주소이다. 만약 연관만 해결해주는 cpu가 있다면(=core를 하나 더 둔다면) 속도는 매우 빨라진다. = Associate = 전용기계를 둔다. = 비싸다

direct는 연관에 비해서는 조금 저렴하다.
그래서 중요한 것은 연관 매핑을 쓰고 아닌것은 다이렉트를 쓰자. 합치면 하이브리드이다.


4. 메모리에 올리는 작업(Paging)과 Allocation

연산하려면 아래에서 위로 데이터를 올려주어야한다. = Loader = grub

CPU

Cache : 좁다.

M.M : 공간할당(Allocation)시 같은 크기로 할당 ? Page , 필요한 만큼만 할당 ? Segment

DISK : 공간 넓다.

5. 데이터를 어디에 둘까? Placement

가장 메모리 남는 공간이 많은 곳에다가 넣음 = worst fit
가장 딱맞는 공간에 넣음 = best fit
처음 있는공간에 넣음 = first fit
빈 공간에 넣음 = next fit

6. 디스크가 꽉 찾을때? 
제일 오래된 애 내보내기 = FIFO
자주 읽지 않은 애 내보내기 = LFU(빈도)
(실제사용)최근에 사용하지 않은 애 나가 = LRU
* LFU와 LRU는 (조회했는지 안했는지 = 참조여부) 가 기준임
수정되지 않은 애 나가 = NUR


7. 컴퓨터가 부팅할때 미리 띄워놓기
Prefetch ex) C:\..\Prefetch에 워드 올려놓기
Demand : 요청하면 띄워줌


8. 하드디스크 기록법
섹터단위로 읽는다.
FIFO = FCFS  순서대로
SSTF 짧은 작업 대로
SCAN 엘레베이터 알고리즘 

 

 

 

 

1. Amazon S3와 Amazon CloudFront

 

서버리스 정적 웹 사이트 호스팅 = Amazon S3 활용성능 가속화 = Amazon CloudFront 활용

 

서버리스 정적 웹 사이트 호스팅이란?

서버리스란? 서버리스는 클라우드 컴퓨팅의 모델 중 하나로 사용자가 서버를 직접 관리할 필요가 없는 것이다.

서버(저장하는 공간)가 없다는 것은 아니다. 서버는 반드시 필요한데 사용자가 서버의 가용성을 관리할 필요가 없다는 것이다.

 

Amazon S3란? 서버 측 처리 또는 db 기능이 필요하지 않은 웹사이트인 정적 웹사이트를 호스팅하는데 사용할 수 있다.

 

 

 

 

Amazon CloudFront란?  AWS에서 제공하는 콘텐츠 전송 네트워크(CDN)이다. 오리진 서버(S3 등)가 있다. 하지만 서버로 부터 이미지 로딩 속도가 느릴 수 있다.이러한 문제를 해결하기 위해 정적인 콘텐츠를 더욱 빠르게 배포하기 위한 것을  찾기 시작햇다.그 주변에 전 세계 Edge Server(Location)을 두고 클라이언트에 가장 가까운 Edge Server를 찾아 Latency를 최소화시켜 빠른 데이터를 제공한다.즉, 유저 -> AmazonS3를 바로 접근하는게 아니라유저 -> amazon cloudfront(빠르게 배포) -> AmazonS3 하여 속도를 향상시키는 것이다.

 

 

 

2. 구성

 

유저 <-> 인터넷 <-> cloudfront(캐싱) <- > S3

 

 

S3 버켓에 html 파일, 그림, 동영상과 같은 콘텐츠를 업로드하고 저장해서 정적 웹사이트 호스팅 기능을 설정하게 되면 웹사이트 처럼 작동할 수 있도록 구성한다.
S3만으로도 버킷에 저장되어 있는 콘텐츠들을 통해서 웹포스팅이 가능하지만 콘텐츠가 저장된 서버가 멀리 떨어져 있거나 콘텐츠의 크기가 크면 그만큼 로딩이 지연된 현상이 발생할 수 있다.

이를 개선하는것이 바로 AWS의 콘텐츠 전송 네트워크 Amazon CloudFront이다.

S3의 컨텐츠들은 전 세계의 cloudfront에 캐싱 서버에 저장이 되고 사용자의 요청이 있을 때 사용자와 가까운 캐싱 서버로부터 콘텐츠가 제공되어 빠르게 전달 가능하다.

 

 

 

 

3. 순서

S3 버킷 생성 및 정적 웹사이트 호스팅 순서

 

1. S3 버킷을 만든다.

2. S3 버킷에 업로드한 오브젝트 즉 파일들을 이용해서 웹사이트를 호스팅한다.

- html 파일과 jpg 파일 업로드

3. 그리고 정적 웹사이트를 호스팅하기 위해서 S3 버킷의 정적 웹사이트 호스팅 기능을 활성화한다.

4. S3 버킷의 콘텐츠로 웹페이지를 로드할 수 있도록 버킷과 오브젝트에 대한 액세스 정책을 설정한다.

5. 마지막으로 웹브라우저에서 정상적으로 웹사이트가 작동하는지 테스트한다.

 

 

클라우드 프론트를 통한 웹사이트 성능 가속화 순서

1. S3 버킷의 콘텐츠를 배포할 수 있도록 Origin, Cache Behavior 등을 설정하여 클라우드 프론트 디스트리뷰션을 생성한다.

2. 클라우드 프론트 디스트리뷰션의 URL을 이용하여 웹브라우저에서 정상적으로 S3 정적 웹사이트 호스팅과 동일한 웹사이트가 정상적으로 로드가 되는지 테스트한다.

3. 로드가 된 웹사이트의 콘텐츠 로딩 속도를 비교해서 실제로 웹사이트의 성능이 향상되는지 측정한다.

 

 

4. 실습

 

aws에서 s3를 검색해서 들어간 후  버킷생성을 누른다.

그리고 버킷을 생성해준다.

 

 

 

그리고 버킷에 파일을 업로드해준다.(html, jpg파일)

 

 

1. S3 버켓의 웹 호스팅 기능을 활성화하기(정적 웹사이트 호스팅)

 

S3 버킷 클릭하고 속성탭을 누른다.

 

 

 

맨 아래로 내리면 정적 웹사이트 호스팅 속성이 있다. 편집을 누른다.

호스팅을 활성화 상태로 바꾸어주고 저장을 누른다.

 

 

하단을 내려가보면 버킷 웹사이트 엔드 포인트가 있다.

바로 정적 웹사이트를 호스팅 할 수 있는 웹 주소인데 아직 웹사이트에서 웹페이지가 정상적으로 열리지 않는다.

 

 

 

그 이유는 웹hosting 기능은 활성화가 되었지만 외부 인터넷을 통한 사용자가 버켓 그리고 버켓에 있는 오브젝트 즉 파일에 액세스할 수 있는 권한이 아직 없기 때문이다.

 

 

 

 

 

 

2. 외부 인터넷을 통해 S3 버켓과 오브젝트의 퍼블릭하게 접속할 수 있도록 액세스 권한을 변경하

 

이번에는 상단 권한 탭에 들어간다.

 

퍼블릭 액세스 차단이 기본적으로 활성화되어 있는데 비활성화로 바꿔준다.

 

 

 

그럼 퍼블릭에서 접근할 수 있는 환경이 만들어진다.

퍼블릭에서의 액세스가 허용이 됐으면 버켓에 있는 오브젝트 파일을 읽을 수 있어야 유저가 웹브라우저에서 정상적으로 웹페이지를 열 수가 있다.

 

아래 버켓에 있는 오브젝트에 대한 정책을 생성을 해야한다.

편집을 누른다.

정책 생성기를 누른다.

 

정책을 생성해준다.

 

만든 정책을 복사붙여넣기 해주고 저장을 누르면 마무리된다.

 

 

그럼 아까 웹사이트가 정상적으로 보이는 것을 확인할 수 있다.

 

 

 

 

 

 

 

'자격증 > aws' 카테고리의 다른 글

1. EC2 Instance 접속을 위한 PuTTY 사용 방법  (0) 2024.02.15

 

1. AWS 계정생성

계정 생성 페이지 : https://portal.aws.amazon.com/billing/signup#/start

계정 생성 가이드 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/create-and-activate-aws-account/

 

위 사이트를 참고해서 계정생성한다.

 

2. putty 다운로드

Download PuTTY: latest release (0.80) (greenend.org.uk)

여기사이트에서 64-bit x86 다운로드 받고 압축푼다.

 

 

puttygen은 putty에서 ec2 인스턴스에 접속하는데 필요한 킷파일을 생성하거나 수정한다.

putty는 ec2 인스턴스에 접속하는데 필요한 프로그램이다.

 

 

3. 아마존 AWS에서 EC2 생성

 

AWS 매니지먼트 콘솔에 접속을 하고 EC2 메뉴로 이동을 한다.

 

좌측의 인스턴스를 누르고 인스턴스를 생성해준다.

 

이름은 demo-ec2로 해주고 이미지는 Amazon Linux 2 AMI 를 선택해준다.

 

* 아마존 이미지란(나무위키) : 아마존 머신 이미지(Amazon Machine Image, AMI)는 EC2 안에 가상 머신을 생성하기 위해 사용되는 특수한 유형의 가상 어플라이언스이다. EC2를 사용하여 배포하는 서비스의 디플레이의 기본 단위 역할을 한다.

 

AMI의 주 구성 요소는 운영 체제(예: 리눅스, 유닉스, 마이크로소프트 윈도우), 그리고 서비스 전달에 필요한 추가 소프트웨어를 포함하는 읽기 전용 파일 시스템 이미지이다.

AMI는 다음을 포함한다:

 

인스턴스(예: 운영 체제, 애플리케이션 서버, 애플리케이션)의 루트 볼륨용 템플

어느 AWS 계정이 인스턴스 실행을 위해 AMI를 사용할 수 있는지를 통제하는 런치 퍼미션

런칭 시 인스턴스에 부착되는 볼륨을 특정하는 블록 장치 매핑

 

 

다음 인스턴스 타입을 t2. micro로 설정해주고 키페어를 생성한다.

 

 

나중에 putty 접속할때는 .ppk를 써야하지만 PUTTYGen을 이용해서 pem파일을 ppk로 바꿀 수 있다.

 

인스턴스 생성완료후 PuttyGen을 실행하고 pem 파일을 ppk로 변경해준다.

ppk 파일을 다운로드 받고

putty를 실행해준다.

 

 

인스턴스에 들어가면 퍼블릭 ipv4 주소가 뜬다.

 

putty를 실행해주고 주소를 입력해준다. putty에서 접속할때는 ssh 22번 포트로 접속해준다.

putty에서 키 인증을 하지않으면 로그인이 되지 않는다.

 

putty - connection-ssh-auth-credentials에 키를 넣어준다.

 

그리고 로그인해주면 완료된다.

그러면 private ip로 접속된 것을 확인해볼 수 있다.

 

1. 가상터미널 연결

 

en

conf t

line vty 0 4 : 가상 터미널 5개 사용(텔넷 연결)

exec-timeout 03 50 : 텔넷 입력 없으면 자동 종료

exit

exit

copy r s

 

2. 콘솔 연결

 

en

conf t

line console 0

password ICQA

login

exit

exit

copy r s

 

3. 인터페이스 접속

 

en

conf t

interface serial 2/0

noshutdown

exit

exit

copy r s

 

 

 

 

4. show 명령어 5개

en
conf t(x) : 정보확인 안해도 됨. 설정만
show interface
copy r s
en
show user
copy r s
en
show ip route : 라우트 테이블
copy r s
en
show flash
copy r s
en
show process
copy r s

 

 

 

 

 

'자격증 > 네트워크관리사2급' 카테고리의 다른 글

네트워크관리사 2급 필기 합격  (1) 2024.01.21

2023년 12월 네트워크관리사 2급에 합격했다.

전공에서 배웠던 부분도 있었고 처음 알게 된 부분도 있는데

시험 공부하며 이론부분 공부한 것 정리한 것 기록한다!

 

빈출 문제들이라 아래부분만 암기해도 된다.

 


1.  IP 주소 클래스(IPv4) : A ~ E클래스 별로 주소를 지정할 수 있다.

클래스를 나누는 이유는 클래스 별로 IP 할당 범위가 다르듯이 IP 주소를 효율적으로 배분하기 위함이다.

 

 A 클래스 : 네트워크ID(8bit) + 호스트ID(24bit) - 네트워크ID의 맨 앞자리가 0

      0.0.0.0 ~ 127.255.255.255

 B 클래스 : 네트워크ID(16bit) + 호스트ID(16bit) - 네트워크ID의 맨 앞자리가 10

      128.0.0.0 ~ 191.255.255.255

 C 클래스 : 네트워크ID(24bit) + 호스트ID(8bit) - 네트워크ID의 맨 앞자리가 110

      192.0.0.0 ~ 223.255.255.255

 D 클래스 : 11100000 00000000  00000000  00000000 - 멀티캐스트용 주소

      224.0.0.0 ~ 239.255.255.255

 E 클래스 : 11110000 00000000  00000000  00000000 - 특수용도 주소(현재 사용X)

      240.0.0.0 ~ 255.255.255.255

 

위 범위중에 일부를 사설 IP 대역이나 공인 IP 대역으로 사용한다.

* 사설 IP 대역

 A : 10.0.0.0 ~ 10.255.255.255

 B : 127.16.0.0 ~ 127.31.255.255

 C : 192.168.0.0 ~ 192.168.255.255

 

 

 

2.  Http 응답

 100 : informational 정보 제공 (정보 줘)

 200 : success 성공

 300 : redirection 리다이렉션

 400 : 클라이언트 에러

 500 : 서버 에러

 

 

 

3. IEEE 표준안

 802.1 : 상위계층 인터페이스(HLI) - Mac 브리지, lan간 네트워크 표준안

 802.2 : LLC

 802.3: CSMA/CD

 802.4 : 토큰 버스

 802.5 : 토큰 링

 802.6 : MAN

 802.11 : CSMA/CA(와이파이), 무선LAN

 

 

 

4. OSI 7계층

  계층 단위 프로토콜 역할 장비
7 응용 데이터 Http.telnet.smtp.dns.dhcp    
6 표현 데이터 MPEG.JPRG.GIF.BCP.ASCII 압축화.암호화  
5 세션 데이터 SAP.SDP 세션설정.대화.연결.동기화. (X)에러제어(X)  
4 전송 세그먼트 TCP.UDP 흐름제어.오류제어.세분화.신뢰  
3 네트워크 패킷.데이터그램 IP.ICMP.ARP.RARP.IGMP 단편화(MUT 값보다 클경우), 라우팅 라우터
2 데이터링크 프레임 이더넷.토큰링 흐름제어(데이터링크 개체 간 트래픽제어). 에러 검색. 재전송. L2, 스위치(도메인나눔),브릿지
1 물리 비트 FDDI   mac.리피터.허브

 

 

 

5. DNS 레코드

CNAME 가상 도메인
MX 메일서버
A 도메인->IPV4
AAAA 도메인->IPV6
PTR(reverse) IP에 질문하여 도메인 확인
IP -> 도메인
SOA 기본이름서버.도메인관리자
dns 핵심정보
NS 네임서버 권한 누가가지는지

 

 

 

* Linux 명령어

NS 네임서버의 권한을 누가 가지고 있는지 FSCK 파일시스템 검사
MEM 물리적인 메모리만 TOP 현재 OS 상태(메모리 사용량.CPU사용량)
FREE 메모리 양. 메모리 정보 MAN 메뉴얼
NETSTAT 포트정보 확인
* netstat -t(tcp)
USERDEL 사용자 계정 삭제
TOUCH 빈 파일 만들기 MOD 권한
LAST 마지막 사용자 MKFS 파일시스템포맷
DF 사용 가능한 파일시스템 양
DU DISK USAGE 디스크 사용량
PWD printing working directory. 현재 디렉터
CAT concatenate연결
파일/텍스트 내용 보여줌
VI 편집
PS 현재 돌고 있는 프로세스.
데몬이 살아있는지 확인

* nslookup 도메인 -> ip주소

 

 

6. 포트번호

SNMP UDP 161,162 포트 SMTP 메일. TCP 사용 25번
TFTP UDP 빠른 전송 FTP TCP 신뢰성 전송. 21번
TELNET TCP 23번 SSH 보안뛰어남. TCP 22번
POP3 110번    

 

 

 

7. 아파치 웹서버

 500 : internal server error 내부 서버 오류. 잘못된 스크립트 실행 - SYNTAX에러

 501 : not implied 클라이언트의 서비스 요청을 서버가 수행할 수 없음

 502 : bad gateway 서버 과부하

 503 service variable 외부 서버가 죽었거나 멈춤 상태

 

 

8. bit locker 데이터 안전하게 보호 -> tpm(trusted platform module) 하드웨어

이벤트 뷰어 : 오류.정보.위험.경고.자세한 정보

파일 암호화 키 없어도 내용 변경 가능하다

 

9. mac 어드레스 : 48bit

 

10. icmp

 0: reply

 3 : destination unreachable

 5 : redirect

 8 : request

 11

 13 : timestamp request

 17 : address mask request

 

 

 

11. 리눅스 디렉토리

/var 크기가 변하는 임시파일
시스템 로그 + 메일
/bin 명령어. 기본적인 실행파일
/var/log/lastlog 사용자의 최근 접속정보
마지막 로그인
/var/log/dmesg 부팅시 기록
/var/log/btmp 실패한 로그인 /var/log/wtmp 성공한 로그인
/var/log/utmp 현재 로그인 /var/log/boot.log 데몬이 재시작 됐는지
/tmp 중간 파일. 작업용 파일 /proc 가상 파일 시스템
cat /etc/resolv.conf dns 서버 주소 확인
네임서버 질의
/root 관리자. 홈 디렉토리
/etc/passwd 사용자 암호 /usr 시스템.응용프로그램 파일
/etc 환경설정. 사용자암호 /home 사용자 계정
/etc/fstab 마운트 옵션 정의 /mount 실제 마운트 실행
/etc/hosts ip주소    

 

 

 

12. find 명령어 옵션

- name : 해당 이름의 파일

- type : 특정 디렉터리. 파일 구분해서 찾음

- perm : 권한과 일치하는 파일

- exec : 찾은 파일에 대한 삭제 가능

- user : 유저에게 속한 파일

 

 

 

 

13. 무선 기술

 

 wmn : wireless mesh network. 애드훅 미국 군사 기술 무선 lan 만으로 네트워킹

 wpan : personal . 10m 이내 블루투스

 wifi-direct : 10m 이내, 무선 없이 장치 연결

ad- hoc : ap없이 연결

sstp : 호텔. ssl상 vpn 접속

plc : 전력선

지그버 : 소형.저전력 라디오

이더넷 : lan

 

 

 

14. FTP

 20 : 데이터 전송

 21 : 데이터 제어

 1024 : 임시 포트

 

 

15. TCP

 offset : 헤더 시작

 checksum : 오류 검출

 시퀀스 : 데이터 순서 32bit

 

 

UDP TCP
단방향 양방향

 

 

 

 

16. 

유니캐스트 1:1 *rip해당

멀티캐스트 1: N

애니캐스트 1:1(가까운)

브로드캐스트 모두

 

17.

IGMP 로컬 네트워크 상 멀티태스킹

ICMP 라우터 오류 제어

 

 

18. IPv4 vs IPv6 비교

 

IPv4 IPv6
32bit 128bit
8비트 4개 16비트 8개
헤더 복잡 헤더 단순
보안 낮음 보안 좋음
유니캐스트,멀티캐스트, 브로드캐스트 유니캐스트,멀티캐스트, 애니캐스트

 

 

 

19. raid

 

raid 0 스트라이핑

raid 1 미러링

 

 

20. 디스크 추가

mbr : ~2tb

gpt : 2tb 이상

 

 

21.

init 0 종료

init 6 재부팅

 

 

22. 기타 개념

 

inetmgr IIS 관리자.
데이터그램 버림 priority
wep<wpa<wpa2  
       
token 패스 표본화->양자화->부호화  
버스 시그널 반사    
    거리벡터  
로그인 보안로그 링크상태벡터  
종료.재부팅기록 이벤트뷰어    
       

 

 

23. 실행창 외우기

netstat

tracert

ping

nslookup

'자격증 > 네트워크관리사2급' 카테고리의 다른 글

네트워크 관리사 2급 실기  (1) 2024.01.21

 

설명

첫 번째 줄에 최대로 벌 수 있는 수입을 출력한다.

 

 

 

 

풀이

int j=0을 밖으로 빼준다. 그래야지 계속 증가한다.

import java.util.*;
class Lecture implements Comparable<Lecture>{
    public int money;
	public int time;
    Lecture(int money, int time) {
        this.money = money;
        this.time = time;
    }
    @Override
    public int compareTo(Lecture ob){
        return ob.time-this.time;
    }
}

class Main {
	static int n, max=Integer.MIN_VALUE;

	public void solution(ArrayList<Lecture> arr) {
		int sum=0;
		PriorityQueue<Integer> pq= new PriorityQueue<>(Collections.reverseOrder());
		Collections.sort(arr);
		
		int j=0;
		for(int i=max; i>0; i--) {
			for( ; j<arr.size(); j++) {
				if(arr.get(j).time<i) break;
				pq.add(arr.get(j).money);
			}
			if(!pq.isEmpty()) {
				sum+=pq.poll();
			}
		}
		System.out.println(sum);
		
	}
	
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n=kb.nextInt();
		
		ArrayList<Lecture> arr = new ArrayList<>();
		
		for(int i=0; i<n; i++){
			int m=kb.nextInt();
			int d=kb.nextInt();
			arr.add(new Lecture(m, d));
			if(d>max) {max=d;}
		}
		T.solution(arr);
	}
}

 

'알고리즘기초 > Greedy' 카테고리의 다른 글

03. 결혼식  (0) 2022.10.01
02. 회의실배정  (0) 2022.10.01
01. 씨름선수  (0) 2022.10.01

 

설명

최대점수구하기

 

 

예시

5 20
10 5
25 12
15 8
6 3
7 4

 

41

 

 

 

 

풀이

 

맨 뒤부터 돌면서 해당숫자-time[i]인 곳에가서 내 score을 더한후 더 큰값을 배열에다가 넣어준다.

 

for(int i=0; i<n; i++) {
     for(int j=m; j>=time[i]; j--) {
         dis[j]=Math.max(dis[j], dis[j-time[i]]+score[i]);
     answer=Math.max(answer, dis[j]);
   }
}

import java.util.*;


class Main {
	
	public static void main(String[] args){
		
		Scanner sc= new Scanner(System.in);
		
		int n= sc.nextInt();
		int m= sc.nextInt();
		
		int[] score= new int[n];
		int[] time= new int[n];
		
		for(int i=0; i<n ; i++) {
			int s= sc.nextInt();
			int t= sc.nextInt();
			score[i]=s;
			time[i]=t;
		}
		
		int[] dis = new int[m+1];
		Arrays.fill(dis, 0);
		
		int answer=0;
		
		for(int i=0; i<n; i++) {
			for(int j=m; j>=time[i]; j--) {
				dis[j]=Math.max(dis[j], dis[j-time[i]]+score[i]);
				answer=Math.max(answer, dis[j]);
			}
		}
		
		System.out.println(answer);

	}

	
}

 

'알고리즘기초 > DP' 카테고리의 다른 글

05. 동전교환  (0) 2022.10.03
04. 가장 높은 탑 쌓기  (0) 2022.10.02
03. 최대 부분 증가수열  (0) 2022.10.02
02. 돌다리 건너기  (0) 2022.10.02
01. 계단오르기  (0) 2022.10.02

+ Recent posts