목록분류 전체보기 (141)
공부하는 스누피

현대 컴퓨터들은 존 폰 노이만의 stored-program 개념을 기초로 한다. stored-program은 프로그램들과 데이터가 서로 다른 저장소(메모리)에 저장되지만 같은 것처럼 다루어지는 것을 의미한다. Stored Program Computer란 이 개념을 따라 서로 다른 애플리케이션을 저장하고 수행하는 컴퓨터를 의미한다. 폰 노이만의 기본적인 컴퓨터 구조는 아래와 같다. 1. 입력 (input) - 입력 장치로부터 사용자의 입력값을 가져온다. 2. 출력 (output) - 프로그램이 사용자에게 보여주고 싶은 내용을 출력한다. 3. 메모리 (memory) - 실행 중인 프로그램과 프로그램이 필요로 하는 데이터를 기억한다. 휘발성(volatile) 메모리 - 메인 메모리(혹은 레지스터)라고 한다. ..

[클린 코드]의 저자이자 SOLID 원칙을 창안한 로버트 C. 마틴의 책으로, 저자의 아키텍트로서의 경험을 토대로 ‘훌륭한 아키텍처’란 무엇인가에 대해 이야기한다. 아키텍처란 추상적인 개념을 독자가 정확히 알게 하고 SOLID를 포함한 여러 설계 원칙들을 통해 아키텍처를 분석할 수 있게 한다. 아키텍처 관련 책이니만큼 다양한 컴포넌트 다이어그램을 볼 수 있다. 이 책은 나쁜 설계부터 시작하여 왜 이 설계가 나쁜 것인지 설명하고 어떻게 개선해 나갈 수 있는지에 대한 방법을 제시한다. 자바, 임베디드 구별 없이 소프트웨어 아키텍트가 되고 싶다면 좋은 책이다. 이 책은 소프트웨어 구조와 설계 원칙에 대한 기본적인 개념들을 저자의 원칙과 함께 자세히 설명해준다. 예를 들자면 구조적, 객체 지향, 함수형 프로그래..

졸업을 앞두고도 아직 전공 지식이 많이 부족하다고 느껴 예전에 배웠던 전공 과목을 하나씩 복습해보기로 했다. 네트워크를 가장 먼저 선택한 이유는 웹을 공부하면서 그나마 자주 접할 수 있었던 분야여서 다른 과목들보다 수월하게 독파할 수 있지 않을까 생각해서였다. [컴퓨터 네트워킹: 하향식 접근]은 대학 교재로 많이 쓰이는 기본서라고 알려져 있어 기본 개념을 복습하고자 선택했다. OSI 7계층 전체를 깊이 있게 다루어 상대적으로 공부가 부족한 아래쪽 계층에 대한 복습이 필요하기도 했다. 이 책은 제목대로 OSI 7계층을 위쪽 계층부터 탐색한다. 저자의 의도는 위쪽 계층(응용 계층)이 학생들에게 더 친숙해서 동기 부여가 잘 될 것 같아서 하향식으로 접근했다고 한다. 나 같은 경우는 그 의도와는 다르게 3계층 ..

방화벽 (Firewall) - 조직 내부의 네트워크에서 전송되는 정보를 선별하여 수용/거부/수정하는 기능을 가진 침입 차단 시스템이다. - 전체 인터넷으로부터 기관의 내부 네트워크를 분리시킨 하드웨어와 소프트웨어의 조합이다. - 외부와 내부를 오가는 모든 트래픽은 방화벽을 거치고, 로컬 보안 정책에 정의된 대로 승인된 트래픽만이 통과된다. - IP주소와 포트 번호의 조합에 기초한 필터링 정책은 허가된 목록에 있는 호스트와의 연결을 허용한다. - TCP ACK 비트가 설정되어 있는지 아닌지 확인한다. => 모든 TCP 연결의 첫 번째 세그먼트는 ACK 비트가 0인 반면, 다른 모든 세그먼트들의 ACK 비트는 1이므로 ACK 비트가 0인 세그먼트만 걸러도 외부에서 오는 모든 연결을 허용하지 않게 한다. - ..

대칭키 암호화 (Symmetric Encryption) 대칭키 암호화에서는 키와 알고리즘을 하나씩만 사용해 암호화, 복호화를 수행한다. 해독이 어려운, 견고한 알고리즘이 필요하고, 누군가가 알고리즘을 알아도 키를 찾을 수 없게 해야 한다. 대칭키를 대상으로 한 공격에는 알고리즘을 파악 후 공격하는 방법이 있고, brute force로 모든 가능한 경우를 시도해보면서 공격하는 방법이 있다. 대표적인 암호로 카이사르 암호(caesar cipher)가 있는데, 평문의 각 철자를 알파벳 순서로 k번째 오는 철자로 대치해 암호화한다. 블록 암호화 (Block Encryption) 블록 암호화에서는 메시지가 k비트의 블록 단위로 암호화된다. 암호화 키는 재사용되는데, 블록마다 같은 암호화 키를 사용하기 때문이다. ..

현행 시스템 파악 절차 1) 구성/기능/인터페이스 파악 2) 아키텍처/소프트웨어 구성 파악 3) 하드웨어, 네트워크 구성 파악 소프트웨어 아키텍처 : 소프트웨어 구성요소와 그 특성/관계를 표현하는 시스템 구조 => 소프트웨어 설계 지침 소프트웨어 아키텍처 프레임워크 : 아키텍처 기술 표준 (구성요소) 아키텍처 명세서, stakeholder, 관심사, 관점, 뷰, 근거 소프트웨어 아키텍처 4+1 뷰 : 요구사항 시나리오를 4가지 관점에서 접근하는 방법. +1은 use case 뷰로 아키텍처 도출/설계를 담당한다. Use-case view: 아키텍처 도출/설계 담당 Logical view: 설계 모델 추상화, 기능적 요구사항. 클래스 다이어그램으로 표현. Process view: 런타임시 시스템의 task,..

가상 근거리 네트워크(virtual local area network, VLAN)를 지원하는 스위치를 사용하면 스위치를 계층 구조를 이용할때 발생하는 문제를 해결할 수 있다. 스위치 계층 구조를 사용하면 트래픽 격리 부족, 비효율적인 사용, 사용자 관리 어려움 등의 문제가 발생한다. VLAN을 지원하는 스위치는 하나의 물리적 인프라상에서 여러 개의 가상 네트워크들을 정의할 수 있게 한다. 포트 기반 VLAN에서는 네트워크 관리자가 스위치 포트(인터페이스)를 그룹으로 나눈다. 각 그룹은 하나의 VLAN을 구성하며, 한 VLAN의 포트들은 하나의 브로드캐스트 도메인을 형성한다. 즉, 한 포트로부터의 브로드캐스트 트래픽은 그 그룹의 다른 포트에만 도달할 수 있게 된다. VLAN을 격리한다면, 다른 그룹과의 트..

이더넷(Ethernet)은 LAN, WAN, MAN 환경에서의 통신 표준 중 하나이다. OSI 모델의 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC 패킷과 프로토콜의 형식을 정의한다. 대부분 IEEE 802.3 규약으로 표준화되어 지금까지도 가장 널리 사용되고 있다. 모든 이더넷 기술은 네트워크 계층에게 비연결형 서비스를 제공해준다. 그래서 단순하고 저렴한 비용으로 구현이 가능하지만, 비신뢰적인 서비스를 제공해 오류 검사에 대한 결과를 송신자에게 알려주지 않는다. 만약 손실된 데이터그램이 있으면 라우터단에서 폐기되는데, 트랜스포트 계층에서 확인(ACK)과 재전송 작업을 수행한다. 버스 토폴로지와 허브 기반의 스타 토폴로지를 사용하던 때의 이더넷 표준은 브로드캐스트 링크여서 프레임 충돌이 발생할..