반응형

1. 주석문

주석(Comment)은 코드의 내용을 설명하거나, 참조할 사항 등을 기록하는 것으로 프로그램 실행에는 전혀 영향을 미치지 않는다.


주석은 라인 어디에서나 시작할 수 있다. 한 라인에서 # 다음에 나오는 문자들은 주석으로 취급된다.


2. 연속 라인

줄바꾸기 앞의 ‘\’는 다음 라인을 현재 라인과 연결시켜 주는 역할을 한다.


3. 치환문

= 문은 우변의 객체 혹은 식을 좌변의 이름에 할당하는 것이다. 치환문(Assignment) 혹은 대입문이라고 한다. 변수 이름은 선언될 필요가 없다. 필요한 시점에서 치환하면 변수는 생성된다. 변수의 형은 우측의 객체에 의해서 결정된다.


하지만 다음과 같은 문은 에러이다. = 문은 좌변에 치환될 변수명이 와야 하기 때문이다.


‘=’은 ‘등호’가 아니라 치환 연산자이다. 오른쪽의 값을 왼쪽에 갖다 놓으라는 뜻이다.

‘등호’를 위한 연산자는 ‘==’라는 것이 있다. 등호는 두 개의 값이 동일한지 그렇지 않은지를 판별한다. 파이썬 2.2 이하에서는 만일 결과 값이 0이면 다른 값(거짓)임을, 1이면 같은 값(참)임을 나타낸다. 파이썬 2.3부터는 True, False로 진리 값을 나타낸다.

여러 값을 한 줄에 치환하는 기능을 보자.


그러나 다음과 같은 C 형식은 허용되지 않는다.


왜냐하면 ‘b = c + d’는 식(Expression)이 아니라 문(Statement)이기 때문이다. ‘x = y = z = 0’이 가능한 것은 파이썬 자체가 이러한 형식의 문을 지원하기 때문이지 ‘z = 0’이 식이기 때문이 아니다.


4. 확장 치환문

C 언어에서 사용되던 연산자로 앞서 배운 연산자를 치환문과 함께 사용할 수 있다. 확장 치환 연산자의 종류는 다음과 같다.


--------------------------------------------------------------------------------------------------------------------------

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, **=

--------------------------------------------------------------------------------------------------------------------------


‘x op=y’의 의미는 ‘x = x op (y)’와 같다. 즉, ‘a += 2’는 ‘a = a + (2)’와 같다.


5. 이름과 객체

파이썬은 다른 많은 언어와는 달리 변수의 이름과 값 객체가 분리되어 있다. 예를 들어, a = 1 이란 문에서 숫자 1이 변수 a에 저장되는 것이 아니다. 파이썬에서는 a를 이름, 숫자 1을 객체라고 하며, 두 개념은 분리되어 있다. 다음과 같은 구조를 가진다.


** 이름과 객체

일반적인 컴파일러 언어(소스 코드를 기계어 수준으로 번역해서 실행하는 언어, C언어가 대표적)는 이름과 객체의 개념이 분리되어 있지 않다. 컴파일러 언어에서 이름은 번역될 때 실제 메모리 주소로 모두 변환되므로 프로그램을 수행하는 런타임 시점에서는 이러한 심볼의 이름들은 의미가 없다. 즉, 변수 혹은 객체의 이름은 해당 객체의 주소로 변환된다.

이에 반해서 파이썬과 같은 동적인 자료형을 가지는 언어에서는(대부분은 스크립트 언어) 변수의 생성과 소멸이 언제든지 일어날 수 있기 때문에 이름이 주소로 변환되지 않고 별도의 장소에 이름이 보관되며, 이름과 객체와의 관계 정보를 추가로 가지고 있다. 이름이 저장되는 장소를 심볼 테이블(Symbol Table)이라고 한다.


6. 객체의 치환

다음과 같은 코드가 있다.


Y와 Z는 각각 객체 X를 내부 항목으로 지정했다. 이 때,

1. Y나 Z 안에 X가 복사되어 삽입되는 경우

(원래의 [1,2,3] 객체 이외에 또 다른 객체가 만들어지고, 새로 만들어진 [1,2,3] 객체가 Y와 Z에 삽입되는 경우)

2. [1,2,3]은 그대로 하나만 존재하고, 이 객체에 대한 참조만 Y와 Z에 삽입되는 경우

위 두가지의 경우가 발생할 수 있다.


테스트 코드로 이것을 확인할 수 있다.

즉, X의 값을 하나 바꿨을 때 Y와 Z에 영향을 미치면 이것은 공유 객체, 그렇지 않으면 분리된 객체이다.


X[1]만을 변경했는데, Y와 Z가 같이 변했다. 이것은 객체가 공유된다는 뜻이다. 사실 이름 X는 객체의 레퍼런스를 나타내는 것이므로 Y와 Z는 동일 객체의 레퍼런스만 저장하고 있는 것이다.


일반적으로 파이썬에서의 치환은 대부분 레퍼런스에 의해 이루어진다. 만일 객체의 복사를 원한다면 객체에서 따른 방법을 적용하거나 일괄적으로 copy모듈을 이용하면 된다.  

반응형
반응형

칼리리눅스를 설치한 후 firefox 브라우저를 통해 국내 웹사이트를 접속해보면 그림과 같이 한글이 깨져보이는 경우가 있다.



이와 같은 경우에는 다음 명령어로 fonts 패키지를 설치해주면 된다.

# apt-get install fonts-nanum*


폰트를 설치 후 다시 웹사이트를 접속한 이미지


이렇게 깨졌던 글자들이 보인다.


한글입력기 설치 및 칼리리눅스 언어 변경해보기



im-config 입력시



OK 누른다.



Yes 누른다.



ibus를 클릭하고 OK 누른다.



ibus-hangul 설치

# apt-get install ibus-hangul



터미널 창에 # ibus-setup



ibus-setup 화면



Input Method 탭 클릭



Add 클릭



안정적인 적용을 위해 리부팅을 한번 해준다.

그리고 settings 찾아 들어가서 Region & Language로 들어간다.



※ 칼리리눅스의 전체적인 언어도 한글로 바꾸고 싶다면?

Language와 Formats 부분을 English → korean(대한민국)을 찾아서 변경하고

재부팅을 해주면 된다.


input Sources에 보면 기본 English로 되어있을텐데 좌측 하단에 +를 누르고 Korean(Hangul)을 추가해준다.



추가를 하게 되면 우측 상단에 빨간색 네모로 되어있는 것 처럼 언어 선택창이 나온다.



English(US) 에서 Korean(Hangul)로 바꿔보면 이런 창이 추가로 뜨게된다.


한/영 변환 토글키 변경하기

위 화면에서 Setup을 클릭한다.


Hangul toggle key에서 기존에 추가되어있는 부분은 지우고(별도로 추가 가능)

Add를 눌러서 한/영 키로 변경한 후 Apply 버튼을 누른다.


*  노트북에서 작업이 진행되었으며 노트북 한/영 키 입력시 Alt_R로 나왔다

(데스크탑 환경에서는 다를 수도 있음)


그리고 메모장이나 터미널 창 또는 인터넷 창을 열어 한글과 영어 전환이 잘되는지 확인한다.


이 설정은 제가 직접 만져보면서 진행한거라 위 설정 중에서 필요없는 부분이 있을 수도 있음을

알려드립니다.

반응형
반응형

변수명 만드는 법

변수명, 함수명, 클래스명 등을 만드는 규칙은 대체로 다른 언어와 유사한데, 첫 문자가 언더스코아(_) 또는 영문자이고 두 번째 문자부터는 영문자, 숫자, 언더스코아(_)일 수 있으며, 이름의 크기는 제한 없다.


다음과 같은 것들은 변수명이 될 수 있다.

----------------------------------------------------------------------------------------------------------------

a, a1, my_name, your_job, MyName, __private, __private_member, …

----------------------------------------------------------------------------------------------------------------


다음 같은 것들은 변수명이 될 수 없다.

---------------------------------------------------------------------------------------------------------------

1abc, @file, %x

---------------------------------------------------------------------------------------------------------------


예약어

파이썬에서 이미 사용하고 있는 몇몇 예약어는 변수로 사용할 수 없다. 예약어는 다음과 같은 것들이 있다.


and

elif

global

or

assert

else

if

pass

break

except

import

print

class

exec

in

raise

continue

finally

is

return

def

for

lambda

try

del

from

not

while




yield


프로그램으로 파이썬 예약어(혹은 키워드)를 알아내는 방법은 다음과 같다.


변수명을 만들때 조심할 점

변수명을 정하는데 중요한 내용 중의 하나는, 내장 함수 이름이나 모듈 이름은 피하는 것이 좋다.

예를들어 str은 어떤 객체를 문자열 표현으로 변환해 주는 자료형 클래스인데, 변수명으로 사용하게 되면

다음부터 그 함수를 사용할 수 없게 된다.



반응형
반응형

운영체제의 개요

운영체제란 시스템 자원을 효율적으로 사용하고, 컴퓨터-사용자간의 편리한 인터페이스를 제공하며 처리능력(Throughput), 신뢰도(Realiability), 사용가능도(Availability)의 향상과 반환시간(Turn Around Time) 단축의 목적이 있다. 또한 프로세스, 기억장치, 입출력 장치, 파일 등 자원관리 및 자원의 스케줄링기능, 시스템의 각종 하드웨어 및 네트워크 관리 제어 등을 포함하고 있다.


1. 운영체제의 주요기능

1) 프로세스 관리 : 하드웨어에 의존된 가장 하위 단위 수준으로 프로세스 스케줄링을 통해 실행 가능한 프로세스를 추적 관리한다.

2) 주기억장치관리 : 주기억장치의 접근을 제어하는 장치부분으로 주소변환, 기억보호, 버퍼기억 등의 기능을 수행한다.

3) 보조기억장치관리 : 하드디스크 및 주변기기의 기억장치에 대한 접근관리, 제어 등을 수행한다.

4) 입출력시스템관리 : 중앙시스템과 외부와 효율적인 통신방법을 제공하고 주변장치라고도 한다. 주로 키보드, 마우스, 디스플레이장치, 프린터와 보조기억장치인 자기테이프, 자기디스크 들이 있다.

5) 파일시스템관리 : 운영체제는 프로그램이나 데이터를 파일단위로 관리하며 저장장치에 파일단위로 저장한다.

6) 에러검출 및 응답

  * 내부 및 외부 하드웨어 에러(메모리 에러, 디바이스 결함)관리

  * 소프트웨어 에러 : 금지된 메모리 영역의 접근, 응용프로그램 수용 거부


2. 운영체제의 구조

1) 프로세서 관리(1계층-하위단계) : 동기화 및 프로세서 스케줄링 담당

2) 메모리 관리(2계층) : 메모리 할당 및 회수 기능을 담당

3) 프로세스 관리(3계층-상위단계) : 프로세스 생성, 제거, 메시지 전달, 시작과 정지 작업

4) 주변장치 관리(4계층) : 주변장치 상태파악과 입출력 장치의 스케줄링

5) 파일 관리(5계층) : 파일의 생성과 소멸, 파일의 열기와 닫기, 파일의 유지 및 관리


운영체제의 발전 흐름

1) 순차처리 : 운영체제가 없으며, 이 시대 컴퓨터들은 디스플레이 발광체(Light), 토글(Toggle), 스위치, 입력장치, 그리고 프린터로 구성된 콘솔(Console)을 통해 운영됨

2) 일괄처리시스템(Batch Processing System) : 초기의 컴퓨터 시스템에 사용한 형태로 일정량 또는 일정기간 데이터를 모아서 한꺼번에 처리하는 방식

3) 다중프로그램(Multi-Programming System) : 입출력 장치와 CPU 사이의 속도 차이를 이용하여 하나의 CPU와 주기억 장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식

4) 시분할시스템(Time Sharing System) : 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리함으로써 각 사용자는 독립된 컴퓨터를 사용하는 느낌을 줌. 라운드 로빈(Round Robin)방식이라고도 함

5) 다중처리시스템(Muti-Processing System) : 여러 개의 CPU와 하나의 주기억 장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식

6) 실시간처리시스템(Real Time Processing System) : 데이터 발생 또는 데이터 처리요구가 있는 즉시 처리하여 결과를 산출하는 방식

7) 다중모드처리(Muti-Model Processing) : 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리 시스템을 한 시스템에서 모두 제공하는 방식

8) 분산처리시스템(Distributed Processing System) : 여러 개의 컴퓨터(프로세서)를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식


1세대 : 순차처리, 일괄처리 시스템

2세대 : 다중프로그램, 시분할시스템, 다중처리시스템, 실시간처리시스템

3세대 : 다중모드처리

4세대 : 분산처리시스템


프로세스와 스레드의 차이점

프로세스

스레드

프로그램(코드)이 메모리상에 읽혀져서 실행중인 상태

하나의 프로그램 내에서 여러 개의 실행흐름을 두기 위한 모델

각 프로세스는 별도의 리소스를 할당받음

스레드들은 같은 프로세스에 있는 자원과 상태를 공유

논리적으로 운영체제가 해야 하는 작업

프로세스의 하위 작업 중에 하나. 프로세스보다는 작은 단위


기억장치의 종류

1. 주기억장치(Main Memory, Real Memory) - ROM,RAM : 주기억 장치는 비교적 비싼 자원이며 소량의 자료를 임시로 기억할 수 있고 영구히 저장할 수는 없다.

* CPU가 직접 접근하여 처리할 수 있는 기억장치

* 현재 수행되는 프로그램, 입력데이터, 작업, 출력데이터를 저장하는 기억장소

* ROM(Read Only Memory) : 기억된 내용을 자유롭게 읽을 수 있으나 자료를 임의로 기억 시킬 수 없는 읽기 전용 기억장치로 전원이 중단되어도 없어지지 않는다(비휘발성)

* RAM(Random Access Memory) : 임의로 사용할 수 있으며 전윈이 중단되면 데이터가 사라지는 휘발성 메모리로 컴퓨터 작업시 하드디스크에 있는 내용을 RAM으로 불러서 작업하게 된다.

* 주기억장치 공간분할 방식

 - 고정 분할(Fixed Partition) 방식 : 주기억장치 공간을 동일한 크기의 고정된 부분으로 미리 나누어 할당하는 방식으로 정적(Static) 방식이라고도 함

 - 가변 분할(Variable Partition) 방식 : 각 부분의 크기가 고정되어 있는 것이 아니라 프로세스를 처리하는 과정에서 필요한 만큼 공간을 할당하는 동적(Dynamic) 분할 방식이라고도 함


2. 가상기억장치(Virtual Memory) : 컴퓨터에서 프로그램이나 작업을 실행하는데 필요한 RAM이 부족한 경우 사용하기 위하여 확보된 실제 RAM 이상의 메모리 영역을 말한다.

* 가상 기억장치 구현방식

 - 페이징(Paging) 방식 : 프로그램을 동일한 크기의 물리적 단위(Page)로 나누어 이 페이지 단위로 가상기억장치를 구현하는 기법

 - 세그먼테이션(Segmentation) 기법 : 프로그램의 가변적인 크기의 논리적인 단위(Segment)로 나누어 세그먼트 단위로 가상 기억 장치를 구현하는 방식


3. 보조기억장치(Auxiliary Memory, Secondary Memory) : 대량의 데이터를 적은 비용으로 저장하기 위하여 사용되는 비휘발성의 기억장치로서 데이터를 반영구적으로 저장할 수 있다.

* 자기디스크 : 둥근 원형에 자성 물질을 입혀 이를 회전시키면서 데이터를 기록하고 읽는 장치(플로피디스크, 하드디스크)

* 자기테이프 : 기억된 순서에 따라 내용을 읽는 순차 접근만 가능하여 속도가 느리지만 용량에 비해 가격이 저렴하여 백업용으로 많이 사용됨.

* 자기드럼 : 원통형 표면에 자성물질을 입힌 것으로 고정 헤드디스크를 사용하므로 Seek Time이 없어 엑세스 시간이 빠르지만 낮은 용량으로 현재는 거의 사용되고 있지 않음.

* 기타저장장치 : CDROM(Compat Disk Read Only Memory), WORM(Write One Read Many Time), Zip Disk, DVD(Digital Versatile Disk), USB 등


반응형

'운영체제(OS)' 카테고리의 다른 글

VMware Workstation 12에서 macOS 10.12 Sierra 설치하기  (0) 2018.04.26
반응형

Root 도메인 : 도메인의 중심!(ex: ns.kjj.kr. 에서 kr 뒤에 붙는 점(.)이 루트도메인을 의미)


도메인을 질의할때 뒤에서 부터 질의를 시작한다.

ex)www.kjj.kr. 이라면 .부터 시작해서 kr → kjj → www → www.kjj.kr 식으로 찾아나간다.


쿼리 과정

DNS의 변환은 크게 두가지 방식으로 할 수 있다.

1. 반복적 DNS 변환

2. 재귀적 DNS 변환


반복적 DNS 변환은 도메인을 가지고 끝에서부터 하나씩  질의를 해나가며 알아내는 것이고

재귀적 DNS 변환은  


TLD(Top Level domain) 최상위 도메인

- 일반 도메인(generic domain) gTLD

- 국가 도메인(country domain) ccTLD

- 인터넷 인프라 도메인(infrastructure domain) ARPA


SLD(Second level domain)2단계 도메인


<네임서버 유형>

네임서버에는 Primary 네임서버, Secondary 네임서버, Cache only Server로 구분할 수 있다.


-Primary Server (프라이머리 네임서버): 독자적으로 관리하는 zone 정보파일을 유지하면서 질의에 응답하고 정보를 갱신하는 서버를 프라이머리 네임서버라고 한다.


-Secondary server(세컨더리 네임서버): 프라이머리서버에 부하가 많이 걸릴 경우 분산하기 위해 사용하거나 프라이머리서버의 자료를 백업하여 두고 프라이머리서버에 장애가 발생하면 프라이머리서버의 역할을 위임 받아서 동작하는 서버


-Master Server(마스터 네임서버): 세컨더리서버의 관점에서 볼 때 도메인 설정 자료를 백업해 오는 원본서버를 지칭


-Slave Server(슬라이브 네임서버): 마스터서버의 관점에서 볼 때 자신의 설정자료를 백업하기 위해 가져가는 서버를 지칭


-Cache Only Server(캐시온리 네임서버): 스스로 관리하는 zone은 없고 단지 반복되는 질의만을 전문적으로 수행하는 서버이다.


-Forwarder Server(포워드 서버): 질의를 해석하기 위해 다른 DNS 서버로 다시 질의를 요청하는 서버를 말한다.


[root@kangtest php-5.2.1]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1      localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1 kangtest kangtest


hosts 파일에 지정되지 않은 도메인은 resolv.conf를 참조한다.

[root@kangtest php-5.2.1]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 168.126.63.1


<DNS 네임서버와 리졸버 개요>

DNS는 크게 다음의 3가지 요소로 구성된다.

1) 도메인네임 공간(Domain Name Space)과 리소스 레코드(Resource Record)

  • 도메인 네임 공간은 도메인네임의 구성과 그 구조를 정의하는 반면, 리소스 레코드는 하나의 도메인네임이 가질 수 있는 속성정보군을 정의한다.


2) 네임서버(Name Server)

  • 네임서버는 도메인 데이터베이스의 일정영역(zone)을 소유하고 있는 DNS서버이다. 도메인 데이터베이스는 DNS 체계에 따라 분산구조를 지니고 있다.

  • 네임서버는 두가지의 모드로 동작할 수 있다.

  1. 리커시브가 아닌 모드(non-recursive mode)

  • 네임서버가 기본적으로 동작하는 동작 모드

  1. 리커시브 모드(recursive mode)

  • 네임서버가 옵션기능으로 구현, 동작할 수 있는 동작 모드이다.


3) 리졸버(Resolver)

  • 리졸버는 도메인네임서버와 사용자 프로그램(user program)간의 인터페이스의 기능을 한다.


--------------------------------------------------------------------------------------------------------------------------------------

<설치되어있는 bind 패키지>

[root@kangtest ~]# rpm -qa|grep bind

bind-utils-9.8.2-0.30.rc1.el6_6.1.x86_64

ypbind-1.20.4-30.el6.x86_64

samba-winbind-clients-3.6.23-12.el6.x86_64

bind-9.8.2-0.30.rc1.el6_6.1.x86_64

samba-winbind-3.6.23-12.el6.x86_64

bind-libs-9.8.2-0.30.rc1.el6_6.1.x86_64

rpcbind-0.2.0-11.el6.x86_64

PackageKit-device-rebind-0.5.8-23.el6.x86_64

bind-chroot-9.8.2-0.30.rc1.el6_6.1.x86_64


<패키지 설치>

[root@kangtest ~]# yum install -y bind

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: centos.tt.co.kr

* extras: centos.tt.co.kr

* rpmforge: ftp.riken.jp

* updates: centos.tt.co.kr

base                                                                                                                                                                                 | 3.7 kB 00:00

extras                                                                                                                                                                               | 3.4 kB 00:00

rpmforge                                                                                                                                                                             | 1.9 kB 00:00

updates                                                                                                                                                                              | 3.4 kB 00:00

Package 32:bind-9.8.2-0.30.rc1.el6_6.1.x86_64 already installed and latest version

Nothing to do


<네임서버 정보 검색 유틸리티>

  1. host

  2. dig

  3. nslookup


host : 네임서버에 질의하여 호스트의 IP를 얻을 수 있는 가장 기본적이며 간단한 유틸리티

"host [찾고자 하는 호스트이름]"의 형태로 질의한다.

→ google 검색 결과

[root@kangtest ~]# host www.google.com

www.google.com has address 74.125.203.99

www.google.com has address 74.125.203.106

www.google.com has address 74.125.203.104

www.google.com has address 74.125.203.103

www.google.com has address 74.125.203.147

www.google.com has address 74.125.203.105

www.google.com has IPv6 address 2404:6800:4008:c02::63


dig :  최근에 많이 사용하고 있는 네임서버 검색 유틸리티이며, 기본형식으로 "dig[찾고자 하는 호스트이름]"형식을 사용한다.

→ google 검색 결과

[root@kangtest ~]# dig www.google.com


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> www.google.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41958

;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4


;; QUESTION SECTION:

;www.google.com.    IN    A


;; ANSWER SECTION:

www.google.com.    274    IN    A    74.125.203.105

www.google.com.    274    IN    A    74.125.203.106

www.google.com.    274    IN    A    74.125.203.147

www.google.com.    274    IN    A    74.125.203.99

www.google.com.    274    IN    A    74.125.203.103

www.google.com.    274    IN    A    74.125.203.104


;; AUTHORITY SECTION:

google.com.    68434    IN    NS    ns2.google.com.

google.com.    68434    IN    NS    ns3.google.com.

google.com.    68434    IN    NS    ns1.google.com.

google.com.    68434    IN    NS    ns4.google.com.


;; ADDITIONAL SECTION:

ns1.google.com.    235371    IN    A    216.239.32.10

ns2.google.com.    236039    IN    A    216.239.34.10

ns3.google.com.    236411    IN    A    216.239.36.10

ns4.google.com.    236441    IN    A    216.239.38.10


;; Query time: 11 msec

;; SERVER: 168.126.63.1#53(168.126.63.1)

;; WHEN: Tue Dec 30 15:39:09 2014

;; MSG SIZE  rcvd: 264


nslookup : 네임서버 질의시 가장 많이 사용하는 유틸리티이며, "nslookup [찾고자 하는 호스트이름][질의할 네임서버]"의 형식을 사용한다.

질의할 네임서버를 지정하지 않으면  /etc/resolv.conf에 지정된 네임서버에게 질의한다.


[root@kangtest ~]# nslookup www.google.com

Server:    168.126.63.1

Address:    168.126.63.1#53


Non-authoritative answer:

Name:    www.google.com

Address: 74.125.203.99

Name:    www.google.com

Address: 74.125.203.103

Name:    www.google.com

Address: 74.125.203.104

Name:    www.google.com

Address: 74.125.203.105

Name:    www.google.com

Address: 74.125.203.106

Name:    www.google.com

Address: 74.125.203.147


nslookup은 실행 후 대화형 프롬프트 >를 표시하고 /etc/resolver.conf에 정의된 첫번째 네임서버를 기본 질의 서버로 설정한다.


nslookup은 기본적으로 입력된 도메인에 대해 A레코드를 검색하고, IP주소(in-addr.arpa)에 대해서는 PTR레코드를 검색한다.


<네임서버 운영을 위한 설정파일>

bind-9.2 버전까지는 /etc/named.conf 파일을 사용하였으나 bind-9.3 버전부터(CentOS 5.X RPM)는 named.caching-nameserver.conf파일을 사용하고 있다.

이 파일은 named.rfc1912.zones 파일의 존파일 설정파일을 include 하고 있다.


named.conf 내부

options {

11      listen-on port 53 { 127.0.0.1; };  

네임서버의 포트번호와 접근할 수 있는 IP를 설정하는 지시자(외부에서 네임서버로 접근을 허용해야 한다면 포트 지시자에 허용 ip 부분에 any를 입력하여 외부와의 연결을 허용

12      listen-on-v6 port 53 { ::1; };

이 지시자는 ipv6 하의 네임서버 운영을 설정하는 것으로 현재는 필요하지 않다.

13      directory    "/var/named";

이 지시자는 DNS 의 zone파일의 위치를 지정하는 곳 zone파일의 기본 설정파일들은 /var/named 디렉토리에 모두 위치해 있다.

14     dump-file    "/var/named/data/cache_dump.db";

캐시 덤프 파일이 생성되는 파일의 절대경로 위치를 지정하는 지시자

15     statistics-file "/var/named/data/named_stats.txt";

통계파일이 생서되는 절대경로와 파일이름을 지정하는 지시자

16      memstatistics-file "/var/named/data/named_mem_stats.txt";

메모리 관련 통계파일이 생성되는 절대경로와 파일이름을 지정하는 지시자

17      allow-query { localhost; }; → any

네임서버 쿼리를 허용할 IP 혹은 IP 대역을 설정하는 지시자이다. 여기서는 외부와의 쿼리 허용을 위해서 any를 입력한다.

18      recursion yes;

외부에서 현재의 네임서버를 지정하여 사용할 수 있게 하느냐, 사용할 수 없게 하느냐를 설정하는 지시자이다. 네임서버 쿼리시에도 이 지시자의 설정에 따라 쿼리결과를 얻을 수 없도록 설정 할 수 있다. 기본은 yes로 되어있으나, 네임서버 보안을 위하여 no로 설정하도록 한다.

19

20      dnssec-enable yes;

21      dnssec-validation yes;

22      dnssec-lookaside auto;

23

24      /* Path to ISC DLV key */

25      bindkeys-file "/etc/named.iscdlv.key";

26

27      managed-keys-directory "/var/named/dynamic";

28 };

29

30 logging {

31      channel default_debug {

32              file "data/named.run";

33              severity dynamic;

34      };

35 };

이 부분은 네임서버 실행에 있어서 디버깅시 참고 할 수 있는 로그파일생성 위치를 지정하는 지시자이다. 네임서버에 에러가 발생하면 이 파일을 참고하여 디버깅하면 될 것이다.

36

37 zone "." IN {

38      type hint;

39      file "named.ca";

40 };

존파일에 정의되어 있는 (닷).의 의미는 루트 도메인이라는 뜻이며, 루트 도메인의 내용이 named.ca파일에 정의되어 있다고 알려주고 있다. type설정에서 hint라고 설정하면 루트도메인을 지정한다는 의미이며, master 라고 입력하면 1차 네임서버를 의미하고, slave 라고 입력하면 2차 네임서버를 지정한다는 의미이다.

41

42 include "/etc/named.rfc1912.zones";

43 include "/etc/named.root.key";

44


<네임서버 시작>

[root@kangtest ~]# /etc/rc.d/init.d/named start

Generating /etc/rndc.key:                               [  OK  ]

named 시작 중:                                          [  OK  ]


루트네임서버의 내용

[root@kangtest ~]# cat /var/named/named.ca

; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2 <<>> +norec NS . @a.root-servers.net

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26229

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 24


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 1472

;; QUESTION SECTION:

;.    IN    NS


;; ANSWER SECTION:

.    518400    IN    NS    a.root-servers.net.

.    518400    IN    NS    b.root-servers.net.

.    518400    IN    NS    c.root-servers.net.

.    518400    IN    NS    d.root-servers.net.

.    518400    IN    NS    e.root-servers.net.

.    518400    IN    NS    f.root-servers.net.

.    518400    IN    NS    g.root-servers.net.

.    518400    IN    NS    h.root-servers.net.

.    518400    IN    NS    i.root-servers.net.

.    518400    IN    NS    j.root-servers.net.

.    518400    IN    NS    k.root-servers.net.

.    518400    IN    NS    l.root-servers.net.

.    518400    IN    NS    m.root-servers.net.


;; ADDITIONAL SECTION:

a.root-servers.net.    518400    IN    A    198.41.0.4

b.root-servers.net.    518400    IN    A    192.228.79.201

c.root-servers.net.    518400    IN    A    192.33.4.12

d.root-servers.net.    518400    IN    A    199.7.91.13

e.root-servers.net.    518400    IN    A    192.203.230.10

f.root-servers.net.    518400    IN    A    192.5.5.241

g.root-servers.net.    518400    IN    A    192.112.36.4

h.root-servers.net.    518400    IN    A    128.63.2.53

i.root-servers.net.    518400    IN    A    192.36.148.17

j.root-servers.net.    518400    IN    A    192.58.128.30

k.root-servers.net.    518400    IN    A    193.0.14.129

l.root-servers.net.    518400    IN    A    199.7.83.42

m.root-servers.net.    518400    IN    A    202.12.27.33

a.root-servers.net.    518400    IN    AAAA    2001:503:ba3e::2:30

c.root-servers.net.    518400    IN    AAAA    2001:500:2::c

d.root-servers.net.    518400    IN    AAAA    2001:500:2d::d

f.root-servers.net.    518400    IN    AAAA    2001:500:2f::f

h.root-servers.net.    518400    IN    AAAA    2001:500:1::803f:235

i.root-servers.net.    518400    IN    AAAA    2001:7fe::53

j.root-servers.net.    518400    IN    AAAA    2001:503:c27::2:30

k.root-servers.net.    518400    IN    AAAA    2001:7fd::1

l.root-servers.net.    518400    IN    AAAA    2001:500:3::42

m.root-servers.net.    518400    IN    AAAA    2001:dc3::35


;; Query time: 58 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Wed Apr 23 14:52:37 CEST 2014

;; MSG SIZE  rcvd: 727


<네임서버 존파일 작성법>

(/var/named 디렉토리)

네임서버를 운영하기 위해서는 존(zone)파일 설정이 가장 중요하다고 볼 수 있다. 도메인에 대한 존파일의 위치는 기본적으로  /var/named/ 디렉토리이다.

[root@kangtest ~]# vi /var/named/named.localhost(예시)

 1 $TTL 1D

 2 @    IN SOA  @ rname.invalid. (

 3                                      0    ; serial

 4                                      1D   ; refresh

 5                                      1H   ; retry

 6                                      1W   ; expire

 7                                      3H ) ; minimum

 8      NS   @

 9      A    127.0.0.1

10      AAAA ::1


위와 같은 존파일은 네임서버 관리자가 빈번히 수정하는 파일로써 각각의 의미를 충분히 이해하고 있어야 한다.

$TTL

$TTL항목은 Time To Live의 약자로써 이곳에 설정한 도메인에 대한 정보를 다른 네임서버에서 읽어간 다음 읽어간 네임서버측에 얼마동안 보관하고 있을 것인가를 설정하는 항목

설정값은 초단위로 설정 예로 $ TTL 86400의 의미는 86400초 즉, 하루 24시간을 의미한다.


@

존파일내의 @의 의미는 ORIGIN을 의미하는 특수문자로 public domain을 의미한다.


IN

IN 다음으로 나오는 우측 설정을 사용한다는 의미이다.


SOA

SOA는 start of authority의 약어로써 도메인네임서버에 대한 모든 정보를 가지고 있으며, 여기서 주의할 점은 도메인이름을 적은 다음에는 항상 닷(.) 루트 도메인을 표시하여야 한다는 점이다.


    0    ;serial

  1D   ; refresh

  1H   ; retry

  1W   ; expire

  3H ) ; minimum

위의 설정들은 모두 마스터 네임서버와 슬레이브 네임서버간의 연동설정을 위한 내용들이다.

NS   @

NS 레코드는 해당 도메인의 네임서버를 지정하는 레코드이다. NS 레코드 다음에 네임서버의 도메인(닷(.) 루트도메인 포함)을 입력한다.


MX

MX 레코드는 Mail Exchanger의 약어로 해당 도메인에 대한 메일서버를 지정하는 레코드 이다.

일반적으로 메일서버 여러개 사용할 때 MX 레코드 다음에 우선순위 번호를 지정하여 메일을 수신할 수 있다.


A    127.0.0.1

A 레코드는 해당 도메인의 실제 IP 주소를 설정하는 레코드이다.



반응형
반응형

1. OSI 7계층

계층

설명

응용 프로그램 계층

사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 한다.

표현 계층

응용 프로그램 계층 개체 간의 정보를 표현하는 구문을 하나의 통일된 형식으로 표현한다.

세션 계층

프로세스 간의 대화 연결을 확립/관리/해제하려고 체크포인트와 재시작 및 차단 서비스를 수행한다.

전송 계층

점대점(point-to-point) 연결에 신뢰성 있고 투명한 데이터 전송을 제공한다. 이를 위해 양단간에 오류 제어와 통신량 제어 그리고 다중화를 제공한다.

네트워크 계층

네트워크를 통한 데이터 패킷의 전송을 담당한다. 경로 제어(routing)와 통신량 제어 등을 수행한다.

데이터 링크 계층

물리적인 링크를 통하여 신뢰성 있는 정보를 제공한다. 즉, 동기화, 오류 제어, 흐름 제어 등 을 통해 프레임을 전송한다.

물리 계층

기계적, 전기적, 기능적, 절차적 특성을 정의하여 구조화 되지 않은 비트 스트림을 물리적 매체를 통해 전송한다.


2. 인터넷에 사용하는 랜 케이블

인터넷에서는 UTP 케이블 중 CAT 5 또는 CAT 6에 해당하는 10/100/1000 BASE-T(IEEE802.3) 선과 RJ-45 커넥터를 사용한다.


3. 물리 계층 관련 장비

* 리피터 : 불분명해진 신호 세기를 다시 증가시키는 역할

* 더미 허브 : 더미 허브는 네트워크 구조 관점에서 버스 구조를 하고 있음. 데이터를 보낼 때 모든 곳에 데이터를 똑같이 복사해서 보냄


4. 데이터 링크 계층 네트워크

* X.25 : ITU-T(구 CCITT)에 의해 1980년경부터 규격화된 통신 규약으로, 단말장치(DTE, Data Terminal Equipment)와 회선종단장치(DCE, Data Circuit-terminating Equipment) 간의 상호 접속에 대해 규정

* 프레임 릴레이(Frame Relay) : 디지털 전송 통로 품질의 향상에 따라 불필요한 전송 오류 제어나 흐름 제어 등 복잡한 기능을 최소화하고, 망 종단 장치에서 처리하도록 함으로써 고속 전송을 실현하는 고속 데이터 전송 기술

* ATM(Asynchronous Transfer Mode) : 고속의 데이터를 53Byte 셀로 처리하는 VLSI 기술로, 실시간 영상 전송과 같은 고속 통신에 사용. ATM 망은 스타형의 네트워크임


5. 데이터 링크 계층 관련 장비

* 브리지 : 랜과 랜을 연결하는 네트워크 장치로, 데이터 링크 계층에서 통신 선로를 따라 한 네트워크에서 그 다음 네트워크로 데이터 프레임을 복사하는 역할.

* 스위치 : 스타형 네트워크로 더미 허브가 연결된 시스템이 늘어날수록 패킷 간 충돌로 인해 매우 낮은 속도로 동작하는 문제점을 해결


6. 스위칭 방식

* 컷스루 방식 : 수신되는 프레임의 목적지 주소를 확인하고 목적지 주소의 포트로 프레임을 즉시 전송

* 저장 후 전송 방식 : 완전한 프레임을 수신하여 버퍼에 보관했다가 전 프레임을 수신한 후 CRC등 오류를 확인하고 정상 프레임을 목적지 포트로 전송

* 인텔리전트 스위칭 방식 : 인텔리전트 스위칭(intelligent switching) 방식은 보통 컷스루 모드로 동작하다가 오류가 발생하면 저장 후 전송 모드로 전환하여 오류 프레임을 전송하는 것을 중지. 오류율이 0이 되면 자동으로 다시 컷스루 방식으로 전환

* 전이중 방식 : 송신 포트와 수신 포트를 분리하여 반이중 방식보다 성능이 두 배


7. 네트워크 계층 관련 장비

* 라우터 : 논리적으로 분리된 둘 이상의 네트워크를 연결, 로컬 네트워크에서 브로드캐스트를 차단하여  네트워크를 분리


8. 라우팅

1) 정적 라우팅 : 관리자의 권한으로 특정 경로를 통해서만 패킷이 지날 수 있도록 설정한 것

 * 라우팅 알고리즘을 통한 경로 설정이 이루어지지 않기 때문에 라우터의 직접적인 처리 부하가 감소

 * 네트워크 환경 변화에 능동적인 대처가 어려움

 * 네트워크 환경 변화 시 관리자가 새로운 라우팅 정보를 통해 경로를 재산출하여 각각의 라우터에 제공해야 함

 * 비교적 환경 변화가 적은 형태의 네트워크에 적합


2) 동적 라우팅 : 라우터가 네트워크 연결 상태를 스스로 파악하여 최적의 경로를 선택해 전송하는 방식

 * 경로 설정이 실시간으로 이루어지기 때문에 네트워크 환경 변화에 능동적으로 대처가 가능

 * 라우팅 알고리즘을 통해 자동으로 경로 설정이 이루어지기 때문에 관리하기 쉬움

 * 주기적인 라우팅 정보 송수신으로 인한 대역폭 낭비 초래

 * 네트워크 환경 변화 시 라우터에 의한 경로 재설정으로 라우터의 처리 부하가 증가하고 지연 발생

 * 수시로 환경이 변하는 형태의 네트워크에 적합


9. 주요 서비스의 서비스 포트

포트 번호

서비스

포트 번호

서비스

20

FTP

80

HTTP

21

FTP

110

POP3

23

Telnet

111

RPC

25

SMTP

138

NetBIOS

53

DNS

143

IMAP

69

TFTP

161

SNMP


반응형
반응형

1. 프로토콜의 세 가지 요소

 1) 구문(syntax) : 데이터의 형식이나 신호로, 부호화 방법 등을 정의

 2) 의미(semantics) : 오류 제어, 동기 제어, 흐름 제어 같은 각종 제어 절차에 관한 제어 정보 정의

 3) 순서(timing) : 송/수신자 간 혹은 양단(end-to-end)의 통신 시스템과 망 사이의 통신 속도나 순서 등을 정의


2. 프로토콜의 기능

 1) 주소 설정(Addressing) : 각 전송 계층에 맞는 송신자와 수신자의 주소 지정

 2) 순서 제어(Sequence Control) : 데이터 단위가 전송될 때 보내지는 순서 명시

 3) 데이터 대열의 단편화 및 재조합(Fragmentation & Reassembly) : 전송 효율이 높은 작은 단위로 단편화 및 응용 프로그램에서 사용하기 위해 재조합

 4) 캡슐화(Encapsulation) : 데이터에 제어 정보를 덧붙임

 5) 연결 제어(Connection Control) : 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행

 6) 흐름 제어(Flow Control) : 송신측 개체로부터 오는 데이터의 양이나 속도 조절

 7) 오류 제어(Error Control) : 데이터를 교환할 때 SDU(Service Data Unit)나 PCI(Protocol Control Information)에 대한 오류 검사

 8) 동기화(Synchronization) : 두 개체 간에 데이터가 전송될 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 서로의 상태를 일치시킴

 9) 다중화(Multiplexing) : 여러 시스템이 동시에 통신할 수 있는 기법

 10) 전송 서비스 : 우선순위 결정, 서비스 등급과 보안 요구 등을 제어


3. 데이터 링크 계층에서 동작하는 프로토콜

 1) 이더넷 프로토콜 : 흔히 랜이라고 부르는 네트워크 구간 또는 네트워크 하드웨어 사이에서 MAC(Media Access Protocol) 주소를 기반으로 통신을 위한 프로토콜. 이더넷 패킷의 최소 길이는 64KBytes, 최대길이는 1,518KBytes


4. 네트워크 계층에서 동작하는 프로토콜

 1) ARP(Address Resolution Protocol) : 통신 대상 시스템에 도달하기 위한 다음 네트워크 인터페이스의 MAC 주소를 알아내야 할 때 사용

 2) RARP(Reverse Address Resolution Protocol) : 데이터 링크 계층의 주소인 MAC 주소를 가진 네트워크 계층의 주소, 즉 IP를 확인하는 프로토콜

 3) IP(Internet Protocol) : 랜의 영역을 넘어서는 회선이 서로 다른 두 노드 사이(WAN 구간)의 데이터를 전송. IP 주소는 A, B, C, D, E클래스로 구분하고 각 클래스는 네트워크 부분과 호스트 부분으로 구성

 4) ICMP(Internet Control Message Protocol) : 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜

 5) IGMP(Internet Group Management Protocol) : 멀티캐스트에 관여하는 프로토콜로, 멀티캐스트 그룹을 관리하는 역할 수행


5. 전송 계층에서 동작하는 프로토콜

 1) TCP(Transmission Control Protocol) : 전송 계층에서 동작하는 연결 지향형(connection-oriented) 프로토콜로 데이터의 흐름을 관리하고, 데이터가 정확한지 검증하며 통신. 쓰리웨이 핸드쉐이킹(three-way handshaking)을 통해 연결 설정

 2) UDP(User Datagram Protocol) : TCP와 달리 비연결 지향형 프로토콜. 상대방이 보낸 응답을 확인하지 않으며, 송신 시스템이 전송하는 데이터에 대한 목적지 시스템의 확인 절차를 생략하므로 네트워크에 부하를 주지 않는 장점이 있음. 그러나 데이터 자체의 신뢰성이 없으므로 수신한 데이터는 무결성을 보장받지 못함


6. 응용 계층에서 동작하는 프로토콜

  1) FTP(File Transfer Protocol, 20, 21) : 파일 전송을 위한 가장 기본 프로토콜로, RFC 114로 1971년에 만들어짐

  2) Telnet(23) : 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 조작할 수 있게 해줌

  3) SMTP(Simple Mail Transfer Protocol, 25) : 메일 전송을 위한 프로토콜

  4) DNS(Domain Name Service, 53) : 도메인 이름 주소를 통해 IP 주소를 확인할 수 있는 프로토콜

  5) TFTP(Trivial File Transfer Protocol, 69) : 1985년에 만들어졌으며 FTP 처럼 파일을 전송하는 프로토콜

 6) HTTP(HyperText Transfer Protocol, 80) : 인터넷 서비스를 위한 프로토콜

 7) POP3(Post office Protocol 3, 110) & IMAP(Internet Message Access Protocol, 143) : 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜. IMAP도 POP3와 기본적으로 같으나, 메일을 읽은 후에도 메일이 서버에 남는다는 점이 다름.

 8) RPC(Remote Procedure Call, 111) : 썬(Sun)의 Remote Procedure Call을 가리킴.

 9) NetBIOS(Network Basic Input/Output System, 138) : 사무기기와 윈도우 시스템 간의 파일 공유를 위한 프로토콜

 10) SNMP(Simple Network Management Protocol, 161) : 네트워크 관리와 모니터링을 위한 프로토콜



반응형
반응형

이제 파일에 프로그램을 작성하고 그것을 한꺼번에 실행해 보자. 윈도우나 리눅스에서 IDLE를 사용한다면 IDLE가 제공하는 에디터를 사용하면 된다. 그렇지 않다면 즐겨 사용하는 어떠한 에디터를 사용해도 된다.

리눅스에서는 emacs가 파이썬에 좋은 에디터로 알려져있으며 vim도 많이 사용한다.


윈도우에서 IDLE모드로 스크립트 작성하기 (ex: 2017년 7월 달력 만들기)

1. IDLE(GUI) 실행


2. 메뉴에서 File → New File(Ctrl-N) 클릭


3. 새로운 화면에 달력 스크립트 작성


4. File → save 누르고 파일명 저장 (ex:cal2017_07.py로 저장)

맨 마지막에 키보드 입력 구문을 넣지 않고 윈도우에서 실행하게 되면 실행 즉시

종료가 되는 현상이 발생하는데 이를 방지하기 위해서 구문을 추가해준다.


** raw_input 구문에 주석을 입력하고 저장시 다음과 같은 I/O Warning 메시지가 나올 수도 있는데

Edit my file 을 클릭하면 언어셋을 변경해준다.

(아마도 raw_input 구문 주석 부분에 한글로 입력이 되어있어 언어셋 변환이 필요해 보인다.)



Edit my file을 클릭하면 맨 위쪽에 언어셋 구문이 추가 되어있다.


5. 저장된 파이썬 파일을 실행한다.

[실행 결과]



리눅스에서 스크립트 작성 후 실행하기

1. 리눅스에서 터미널 창을 열어 #vim cal2017_07.py 명령어를 입력한다.

2. 편집기 창에서 파이썬 스크립트를 작성한다.


저장하는 방법은 : 키를 누르면 편집기에 커맨드 창이 나타나는데 이때 wq를 입력하면 저장이 되면서 터미널로 돌아가진다.


** 첫번째 줄 #!/usr/bin/python의 의미는 파이썬을 명시적으로 실행시키지 않고 스크립트를 실행하도록 하기 위해 추가 된 것이다.


3. 파일에 쓰기 권한을 준 후 스크립트 파일을 실행한다.

# chmod +x cal2017_07.py

#./cal2017_07.py


만약 스크립트에 첫번째 줄을 명시하지 않았다면 #python cal2017_07.py 로 실행하면 된다.


반응형

+ Recent posts