Notice
Recent Posts
Recent Comments
05-21 17:13
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Linux master 1급 - 리눅스 실무의 이해 기출 풀이2 본문

OS/Linux

Linux master 1급 - 리눅스 실무의 이해 기출 풀이2

알 수 없는 사용자 2023. 3. 1. 14:18

 GPL(GNU : General Public License) 라이선스는 자유 소프트 라이센스이다. 소스 코드 공개가 가능하며, 2차적인 파생물 또한 소스코드가 공개되어야 하고, 그에 따른 동일한 라이스선스가 유지되어야 한다. 반면에 MPL (Mozilla public License) 라이선스는 Mozilla Foundation에서 개발한 자유 소프트웨어 라이선스인데, GPL가 살짝 다른점이 있다면 전체 프로그램의 소스코드를 공개하는게 필수는 아니다. 하지만 수정된 부분에 대해서는 공개를 해야한다. LGPL(Lesser General Public License)는 GPL에서 더 제한적인 제약을 가지게 한 라이선스이며 개발자가 소프트웨어 라이브러리를 만들 때 사용하는 라이선스이다. 이 라이선스를 통해서 만든 소프트웨어를 배포하는 경우에 해당 소프트웨어를 구성하는 모든 부분의 소스코드를 공개해야한다.

  BSD (Berkeley Software Distribution)의 Abbreviation으로 소스 코드 공개를 필수적으로 요구하지 않고, 상업적 이용도 허용하는 라이선스이다. 따라서 자유롭게 수정하고 배포하는 것이 필요하지 않기 때문에 수정된 소스코드에 대해서는 자유롭다. 따라서 문제에 해당하는 내용은 개발한 것에 대한 폐쇄적인 라이선스를 요구하므로 BSD 라이선스를 사용하는 것이 맞다.

 

 default는 부팅할 운영체제의 인덱스 번호를 의미하는데, 0-index이므로 1이면 두번째 운영체제가 부팅된다는 의미다. timeout은 해당 초 동안 아무런 동작을 하지 않을시 default로 자동 부팅이 되게 된다. 따라서 4번이 정답이다.

 

 6개 중 1개는 패리티 블록으로 사용되는 RAID-5에서 하나는 제외된다. 여기서 1개가 여분의 디스크로 구성되므로 남은 4개를 사용할 수 있다. 따라서 3번이 답이다.

 

 시그널(Signal)은 운영체제에서 프로세스에게 보내는 비동기적인 알림 메시지다. SIGTSTP은 Signal Terminal SToP의 약자이며 번호, 일반적으로 터미널에서 실행 중인 프로세스를 일시 중지시키는 데 사용된다. 번호값이 큰 순서대로 정리하자면 다음과 같다.

  1. SIGRTMAX (Real-Time signal) : 리얼타임 시그널 중 가장 큰 번호 값으로 사용자 정의 신호에 사용된다.
  2. SIGSYS (Bad system call) : 잘못된 시스템 호출, 존재하지 않는 시스템 호출 시 발생한다.
  3. SIGXCPU (CPU time limit exceeded) : 프로세스가 CPU 시간 제한을 초과했을 때 발생한다.
  4. SIGXFSZ (File size limit exceeded) : 파일 크기 제한을 초과했을 때 발생합니다.
  5. SIGVTALRM (Virtual timer expired) : 가상 타이머가 만료됐을 때 발생한다.
  6. SIGPROF (Profiling timer expired) : 프로파일링 타이머가 만료됐을 때 발생한다.
  7. SIGUSR2 (User-defined signal 2) : 사용자 정의 시그널
  8. SIGUSR1 (User-defined signal 1) : 사용자 정의 시그널
  9. SIGTRAP (Trace/breakpoint trap) : 디버깅에 사용되는 시그널로, 디버깅을 위해서 사용된다.
  10. SIGSTOP (Stop, unblockable) : 프로세스를 중지시키는 시그널이다.
  11. SIGTSTP (Keyboard stop) : 키보드로 일시 중지시키는 시그널이다.
  12. SIGCONT (Contiue excuting, if stopped) : 프로세스를 계속 실행한다.
  13. SIGINT (Interrupt) : 프로세스를 중지시킨다.
  14. SIGQUIT (Quit and dump core) : 코어 덤프를 생성하고 프로세스를 종료한다.
  15. SIGTERM (Termination) : 프로세스를 정상적으로 종료한다.
  16. SIGABRT (Abort) : 프로세스를 비정상적으로 종료한다.

 이 외에도 다른 시그널들이 많다. 따라서 답은 SIGTSTP이 번호가 제일 크다.

 TCP(Transmission Control Protocol)는 IP 프로토콜을 기반으로 인터넷 상에서 데이터를 신뢰성 있게 전달하는 프로토콜이다. 연결을 할 때는 3 Way-Handshaking을 통해 연결을 수행한다. 3 Way-Handshaking은 TCP를 연결할 때, 클라이언트와 서버가 세 가지 단계를 거쳐 연결을 완수하는데 거기서 'SYN', 'SYN-ACK', 'ACK' 패킷이 사용된다.

  1. SYN : TCP 연결을 시작하기 위해서 클라이언트는 서버에 'SYN' 패킷을 보낸다. 초기 순서 번호, 최대 윈도우 크기가 포함된다
  2. SYN-ACK : 서버는 클라이언트의 SYN 패킷을 받아 요청을 수락한 뒤 응답으로 SYN-ACK 패킷을 보내게 된다. 이 패킷은 서버의 초기 순서 번호와 서버가 사용할 수 있는 최대 윈도우 크기가 포함된다.
  3. ACK  : 클라이언트는 서버로부터의 SYN-ACK 패킷을 받으면, 연결 요청이 수락된 것으로 인식하고 ACK 패킷을 보낸다. 이 패킷에는 클라이언트의 초기 순서 번호를 1 증가시킨 값과 서버의 초기 순서 번호를 포함한다.

 이후 데이터를 주고 받을 때마다 ACK 패킷을 서로 주고받고, 연결이 종료될 때는 FIN 패킷을 주고 받는다. 이 세 단계가 전부 정상적으로 수행되었을때, 3 Way-Handshaking이 완료되었다고 하고, netstat으로 ESTABLISHED 상태로 확인된다. 따라서 1번이 답이다.

 

 Local Loopback은 컴퓨터 내부에서 통신을 가능하게 해주는 가상의 네트워크 인터페이스이다. 컴퓨터 내부에서 다른 프로그램들이 서로 통신할 수 있도록 하여, 네트워크 상의 다른 컴퓨터나 장치 없이도 테스트와 디버깅 등을 수행할 수 있다. 일반적으로 lo라고 불리고, 127.0.0.1의 IP 주소를 가진다. (로컬 웹서버를 열어본 분이라면 친숙할 것이다.) 이는 내부에서만 통신이 가능하며, 외부 네트워크와 통신을 할 수 없다. 따라서 1번은 물리적으로 존재하는 인터페이스가 아니라 논리적으로 존재하는 인터페이스가 된다.

 enpx는 일반적인 Ethernet 카드가 꽂히는 인터페이스라고 보면된다. 인터페이스 이름을 읽을 때는 다음과 같은 규칙으로 읽으면 그 의미를 더 제대로 파악이 가능하다.

  • 첫 번째 문자 : 인터페이스 유형 (e : ethernet)
  • 두 번째 문자 : 인터페이스 버스 타입 (n : PCI Express)
  • 세 번째 문자 : 인터페이스 번호

 enpx는 하나의 정규식, 패턴식, 규칙 같은 느낌이며, x는 인덱스 번호를 나타냄을 알 수 있다. 예를들어, enp0s3은 첫번째(p0) Ethernet 인터페이스이며, 최근의 PCI Express 버스를 사용하고, 시스템에서 세번째로 감지된 인터페이스이다. (이런 것들을 보려면 terminal에서 ifconfig -a를 쳐보길 바란다.) 반면에 CentOS6 이전에 옛날에는 ethX라는 Ethernet 카드 인터페이스 이름 규칙이 사용되었고, eth0, eth1, ... 이렇게 순차적으로 번호가 증가한다. 따라서 최신의 PCI Express 버스 기반의 Ethernet 카드는 enpx의 이름을 따르게 되었다.

 pppx는 Point-to-Point Protocol로 구성된 네트워크 연결을 나타내는 "가상" 인터페이스 이름 중 하나이다. PPP는 일반적으로 ISP와의 인터넷 연결을 설정하는 데 사용되며, 대개 모뎀을 통해 인터넷에 연결하는 경우에 사용된다. 이 또한 마찬가지로 인터페이스의 이름을 부를 때, x는 번호라고 생각하면 된다. 일반적으로 이런 가상 인터페이스는 /dev/(이름) 와 같은 장치 파일과 연결된다.

 이와 비슷한 이름 규칙으로 리눅스 커널에 의해 자동으로 생성되는 가상 네트워크 인터페이스 중 하나인 dockerx는 Docker와 같은 컨테이너 기반 가상화 기술을 사용할 때 자동으로 생성된다. Docker는 컨테이너를 생성할 때 각 컨테이너에 대해 고유한 네트워크 네임스페이스를 만드는데, 이 네임스페이스에는 컨테이너 내부의 IP 주소와 라우팅 테이블, ARP 테이블 등이 저장된다. 그리고 이 스페이스에서 가상의 네트워크 인터페이스가 생성된다. 호스트에서는 이게 안보이지만, 컨테이너 내부의 서비스는 호스트 머신의 서비스와 통신할 수 있다.

 따라서 답은 4번이다.

Comments