공부
-
OSI 7계층공부/Network 2016. 11. 26. 18:53
OSI 7계층이란?OSI 모형은 국제표준화기구에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것입니다.각 계층의 캡슐화와 디캡슐화OSI 7계층에서 데이터를 전송할 때, 각 층마다 인식할 수 있는 헤더를 붙여야 하는데 이러한 과정을 캡슐화라 합니다. 데이터를 전송하고 전송매체를 통해 전송된 후에 1계층부터 7계층까지 올라가게 되면서 헤더를 확인해야 하는데 이러한 과정을 디캡슐레이션이라고 합니다. 각 층마다 요청과 응답을 하며 상호작용하기 때문에 서버/클라이언트 관계라고 할 수 있습니다.OSI 7계층 계층 별 프로토콜과 기능OSI 7계층에서 PDU개념을 중요시하는데 PDU(Process Data Unit)란 각 계층에서의 전송되는 단위입니다.1계층에서 PDU가 비트라고 ..
-
문자열 인코딩 (unicode/UTF8, UTF16, ASCII)공부 2016. 11. 9. 14:02
Unicode유니코드. 인코딩이라기보다는 개념. 문자열을 숫자로 표현하기 위하여, 문자 하나와 숫자 하나를 각각 매핑한 것이 바로 유니코드. 매핑은 한글로 하면 사상인데, 쉽게 연결이라고 생각하면 됩니다.예를 들어 A는 U+0041에 매핑되어 있고, '가'는 U+AC00에 매핑되어 있습니다. 그리고, 이 유니코드를 저장하는 방법에는 UTF-8, UTF-16 등등 여러 방법이 존재합니다. UTF-8컴퓨터를 다루면서 자주 보았을 UTF-8은 유니코드 인코딩 중에 하나로, 문자열을 8-bit 기반으로 저장합니다. ANSI 문자(영어 포함)는 그대로(1 바이트로) 아시아 문자는 3 바이트로 가변 표기하는 인코딩 방식입니다.'가'를 UTF-8로 표기하려면 범위상 1110xxxx 10xxxxxx 10xxxxxx에 ..
-
데이터 검증 유의사항공부 2016. 10. 17. 16:14
기존에 짜여진 코드를 새로운 언어로 변경하여 검증을 할 때 신경써야 하는 부분이 정말 많습니다. 이 중에서 우선순위를 두어 순차적으로 문제해결하는 방법을 설명하겠습니다.기존에 진행하면서 애먹었던 경험을 기반으로 작성한 주관적인 글입니다.단계별 중요도1) 이전 코드와 정확한 동작을 하는 프로세스인지 확인가장 기본이 되는 부분입니다. 기존 코드와 변경한 코드가 동일한 동작을 하는 것이 맞는지 확인을 해야 합니다.2) 각 언어의 정책 확인여기서 중요하게 봐야할 점은 데이터 타입, 빌트인 함수의 동작, syntax error 등이 있습니다.이전에 기존 소스를 새로Go라는 언어로 개발하여 데이터를 검증한 경험이 있는데 Go의 경우 그냥 int를 사용하면 os에 영향을 받아 int 32일 수도 있고 int 64일 ..
-
유니코드 BOM(Byte Order Mark)공부 2016. 10. 12. 15:02
BOM이란BOM이란 문서 맨 앞에 눈에 보이지 않는 특정 바이트(byte)를 넣은 다음 이것을 해석해서 정확히 어떤 인코딩 방식이 사용되었는지 알아내는 방법을 나타냅니다. 자세하게 유니코드가 little-endian 인지 big-endian 인지 아니면 UTF-8 인지 쉽게 알 수 있도록, 유니코드 파일이 시작되는 첫부분에 보이지 않게, 2~3바이트의 문자열을 추가하는데 이것을 BOM이라고 합니다. BOM은 텍스트 에디터 화면에서는 보이지 않고, 헥사 에디터(Hex Editor)*로 열었을 때만 보입니다.BOM의 종류인코딩 방식Byte Order Mark(BOM)UTF-8EF BB BFUTF-16 Big EndianFE FFUTF-16 Little EndianFF FEUTF-32 Big Endian00 ..
-
전각문자(double byte)와 반각문자(single byte)공부 2016. 10. 10. 11:48
전각문자와 반각문자 전각문자는 특수문자 기호로 생각하면됩니다. 여기서 말하는 특수문자 기호는 !@#와 같이 shift+숫자가 아닌 123abc?!과 같은 형태로 윈도우 같은 경우 자음+한자로 생성되는 문자입니다. (맥에서 특수문자를 쓰기가 어려워서..)반각문자는 흔히 우리가 쓰는 기호입니다. 유니코드가 등장하기 전의 멀티바이트 문자 인코딩에서는 일반적으로 반각 문자는 1바이트, 전각 문자는 2바이트로 처리되었으나, 유니코드가 등장한 현재는 반드시 그렇다고는 할 수 없습니다. 일례로 유니코드 인코딩 중 하나인 UTF-8에서는 반각 1은 1바이트로 처리되나 전각 1은 2바이트가 아니라 3바이트로 처리되며, UTF-16에서는 반각 1과 전각 1 모두 2바이트로 처리됩니다. 아스키 코드에 속하는 문자는 반각 형..
-
정규 표현식공부 2016. 7. 7. 16:44
정규 표현식이란?정규표현식의 사전적인 의미로는 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어입니다. 주로 Programming Language나 Text Editor 등 에서 문자열의 검색과 치환을 위한 용도로 쓰이고 있습니다. 입력한 문자열에서 특정한 조건을 표현할 경우 일반적인 조건문으로는 다소 복잡할 수도 있지만, 정규표현식을 이용하면 매우 간단하게 표현 할 수 있습니다. 하지만 코드가 간단한 만큼 가독성이 떨어져서 표현식을 숙지하지 않으면 이해하기 힘들다는 문제점이 있습니다.정규 표현식 방법정규표현식은 표준인 POSIX의 정규표현식과 POSIX 정규표현식에서 확장된 Perl방식의 PCRE가 대표적이며, 이외에도 수많은 정규표현식이 존재하며 정규표현식 간에는 약간의 차이점이 있으..
-
IDS와 IPS공부 2016. 7. 7. 14:49
IDS(Intrusion Detection System)IDS는 컴퓨터나 전산망의 비정상적인 사용이나 오남용과 같은 잠재적인 침입 시도 등을 실시간으로 탐지 하기 위한 시스템입니다. IDS는 컴퓨터 시스템에서 발생하는 서비스 거부 공격 등과 같은 네트워크 공격에 대비하여 기밀성, 무결성, 가용성 등을 제공 하기 위해 만들어진 시스템입니다. 공격자는 특별한 목적없이 공격을 수행할 수 있고, 컴퓨터의 사용자가 인지 하지 못한 상태에서 공격에 가담하고 있을 수 있습니다. 네트워크 규모의 확대와 정보시스템들의 통합은 막대한 양의 시스템 로그 및 감사(Audit)자료를 발생시키기 때문에 관리자에게 정형화 된 형태로 필요한 정보만 선택 하여 수용할 수 있어야 합니다. 이 역할을 하는 것이 바로 IDS입니다.IPS(..
-
네트워크 가상화공부 2016. 7. 7. 14:49
네트워크 관리자에게는 며칠, 길게는 몇 주가 걸릴 수 있는 환경 설정 요청들이 마구 쏟아진다. 다행히 네트워크 민첩성을 높여줄 수 있는 여러 가지 방안들이 나오고 있는데, 그 중에서 네트워크 가상화(Network Virtualization), NFV(Network Functions Virtualization, 네트워크 기능 가상화), 그리고 SDN(Software Defined Networking, 소프트웨어 정의 네트워킹(SDN)이 가장 두드러진다.난해한 용어들은 보기만 해도 머리가 지끈거리겠지만 이 접근 방법들은 네트워크 이동성이라는 큰 문제에 있어 각기 서로 다른 부분집합을 해결하기 위한 것이다. 네트워크 가상화와 NFV, SDN이 어떻게 다르고, 각각이 어떻게 프로그래밍 가능한 네트워크를 향한 길..
-
인터프리터와 컴파일러공부 2016. 7. 6. 15:06
인터프리터란?컴파일러와는 다른 방식으로 코드를 기계어로 번역해 주는 프로그램. 스크립트 언어의 사실상 전부가 인터프리터 방식이고 각종 DSL(도메인 특화 언어)의 해석 엔진도 인터프리터로 구현된다. 코드를 한 줄씩 번역하는 방식으로 기계어 번역을 진행하기 때문에 실행 속도는 컴파일 언어보다는 느리다. 그러나 요즘의 인터프리터는 번역 결과를 캐싱하거나 JIT를 사용하는 등의 방법으로 실행 속도를 컴파일 언어에 상당히 근접한 수준으로 따라잡긴 했다. (그래도 컴파일 언어보단 느림)여기까지 읽었다면 그 느린 것을 왜 쓰느냐는 의문에 도달하겠지만, 인터프리터 언어는 프로그램 수정이 간단하다는 장점이 있다. 컴파일러는 소스 코드를 번역해서 실행 파일을 만들기 때문에 프로그램에 수정 사항이 발생하면 소스코드를 수정..