목록Computer Science (20)
The Boxer
개발 과정에서 RSA 암호화 방식이 자주 등장하는데, 원리에 대한 이해를 하고 사용하고자 공부한 내용을 적습니다. 비대칭키 암호화에 사용하는 키와 복호화에 사용하는 키가 다른 암호화 방식 대칭키 암호화 방식은 암호화에 사용하는 키와 복호화에 사용하는 키가 동일합니다. 공개키 암호화(public key cryptography) 비대칭키 기반의 암호화 방식으로, 암호화키와 복호화키가 분리된다. 원칙 암호화키, 복호화키는 같은 사람의 키쌍이어야 한다. 키는 암호화 복호화 중 한 번만 사용해야 한다. 암호화 복호화에 다른 사람의 개인키는 사용할 수 없다. 송신자 암호화수신자 복호화사용 송신자의 개인키 송신자의 공개키 인증, 부인방지(전자 서명) 송신자의 개인키 송신자의 개인키 X - 3원칙 위배 수신자의 개인키..
인코딩 사용자가 입력한 문자, 숫자, 특문 등의 데이터를 컴퓨터에 저장할 수 있는 이해하는 이진 데이터로 변환하는 것 문자, 숫자, 특문 등은 사람이 이해할 수 있지만, 이진 체계 저장소에 이를 저장하기 위해서는 0,1의 이진 데이터로 변환해야 한다. 현재 이 글도 문자로 출력되고 있지만, 저장소에 저장된 데이터 자체는 결국 0,1의 이진 데이터이며, 이를 OS가 읽어 문자로 출력한다. 반대로 이진 데이터를 사람이 읽을 수 있는 데이터로 변환하는 것을 디코딩이라고 한다. 코드표 문자 데이터를 이진 데이터로 변환하기 위해서는 서로 합의된 약속이 필요하다. 여기서 사용하는 것이 코드표이다. 컴퓨터에서 문자를 표현하기 위해 문자 - 코드가 1:1로 매핑된 표 코드표에는 우리가 사용하는 문자와 그에 해당하는 코..
4. TCP 특징 point to point 소켓 한 쌍 끼리의 통신만 책임짐 reliable, in order byte steam full deplex: 데이터가 양방향으로 이동함 각 point가 sender buffer, receiver buffer를 소유함 connection oriented flow control: receiver의 buffer가 넘치지 않는 수준으로만 데이터 전송 congestion control: 내부 네트워크가 받아들일 수 있는 수준으로만 데이터 전송 계층간 이동 단위 application: message - 실제 전송하고자 하는 데이터 transport: segment - message(DATA) + Header(부가 정보) network: packet - segment(D..
1. multiplexing, demultiplexing tansport layer에서 multiplexing, demultiplexing을 수행한다. multiplexing: application layer의 소켓에서 요청한 여러 데이터를 감싸, 헤더를 포함하여 segment로 만들고 network layer로 내림 demultiplexing: segment를 풀어 데이터를 목적지 process에 데이터를 전달함. input(segment)은 하나 output(process)은 여러개 segment는 data부 header부로 구성된다. header부의 destination port를 확인하여 목적지 process(소켓)에 데이터를 전달한다. Connection oriented demultiplexin..
1. application layer 실제 컴퓨터에서 작동하는 프로세스가 속한 계층 네트워크는 다른 컴퓨터의 프로세스간 통신 클라이언트 - 서버의 프로세스간 통신 socket: 통신을 위한 interface. 프로세스가 OS에 네트워크 통신을 요청할 때 사용하는 interface IP: 네트워크상 host 연결을 위한 주소. host를 식별하는데 사용 port: 프로세스의 socket 연결을 위한 주소. host의 프로세스를 식별하는데 사용 socket 프로세스는 소켓을 통해 통신한다. application layer에서 transport layer에서 제공하는 소켓에 의존한다. 소켓은 process에서 전달하는, process로 전달되는 데이터 제어 transport layer에 대한 요구 applic..
1. 통신 서비스 protocol 컴퓨터 네트워크를 위한 약속 모든 통신은 프로토콜에 의해 제어됨 TCP 연결지향 신뢰성있는(reliable), 바이트 순서를 지켜서 전달되는 스트림 데이터 전달 흐름 제어: 수신자 송신자 사이에서 흐름 제어 송신측에서 수신측의 허용 데이터 처리량 보다 많은 데이터를 보내는 경우 TCP가 제어 혼잡 제어: 네트워크 회선에 따라 제어 UDP 어떠한 제어 없이 데이터 전송 데이터 유실 가능성 발생 2. 라우터 라우터의 데이터 전달 방식 circuit switching: 목적지 까지의 회선을 미리 연결해서 유저에게 제공 e.g 유선 전화망 packet switching: 패킷 단위의 데이터를 네트워크 링크를 통해 목적지로 전송 인터넷에서 사용하는 방법 packet delay 패..
[UML]Unified Modeling Language : 통합 모델링 언어 여기서 모델링이란 소프트웨어를 실제로 만들기 전에 미리 검증하는 것입니다.이는 개발 프로세스중 설계 단계에서 진행하며 의사소통 논의, 전체 구조 및 클래스 의존 파악, 유지보수 문서 생성을 위해 사용합니다. [클래스 다이어그램(Class Diagram)]UML은 크게 개념, 명세, 구현의 목적에 따라 다르게 사용됩니다. - 개념 : 문제 도메인의 구조를 나타내며 도메인 안에 있는 개념을 기술하기 위한 것.- 명세, 구현 : 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 작성되며, 소스코드와 관계가 깊습니다.이제부터 다룰 클래스 다이어그램은 명세, 구현 차원에서 사용되며 실제 소스코드를 토대로 작성됩니다.클래스 ..
[디자인 패턴(Design Patter)] 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 다시 발생했을 때 재사용 할 수 있는 해결책 기존의 소프트웨어 설계 단계에서 해결했던 문제를 정립하여 다시 그 문제가 발생했을 때 재사용 하기 위한 방법입니다. 각기 다른 소프트웨어 모듈이나 기능을 가진 시스템을 개발할 때도 서로 간에 공통되는 문제와 해결책이 존재합니다. 이런 유사점을 패턴이라고 합니다. 패턴을 정립하여 공통의 언어를 만들면 팀원 사이에 의사 소통이 원활해지며 코드를 이해하기도 쉬워집니다. [디자인 패턴의 구조]- 콘텍스트(Context) : 문제가 발생하는 상황. 패턴이 적용될 수 있는 상황.- 문제(Problem) : 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈...
[아키텍처 패턴(Architecture Pattern)]정의 : 주어진 상황의 소프트웨어 구조에서 발생하는 문제점을 해결하기 위한 일반화된 재사용 가능한 솔루션 아키텍처 패턴은 디자인 패턴보다 더 큰 범주에 속해 있으며 소프트웨어의 전체적인 그림을 만드는 솔루션이라 할 수 있습니다.기존에 아키텍처 패턴이 정립되지 않고 설계를 하다 보니 개발자간 소스 파악이 너무 힘들고 약속이 제대로 되지 않았습니다. 아키턱처 패턴은 소프트웨어 설계의 기본이며 자주 사용되는 모형들을 정립한 하나의 약속이라고 볼 수 있습니다.이번 포스팅에서는 기본적으로 자주 사용되는 몇 가지 아키텍처 패턴을 다뤄보겠습니다. [계층화 패턴(Layer Pattern)]- n-티어 아키텍처 패턴으로도 불립니다. - 하위 모듈을 그룹으로 나눌 수..
[스레드(Thread)]- 정의 : 프로세스 내에서 실행되는 세부 작업의 단위.- 여러 스레드가 모여서 하나의 프로세스를 구성할 수 있습니다.- 즉, 프로세스의 작업 단위를 나눈 것을 스레드라 할 수 있습니다. [특징] - 스레드는 프로세스 내의 다른 스레드들과 Code, Data, Heap 영역을 공유하고 자신만의 Stack 영역을 소유합니다.영역별 설명- Code : Program Counter(다음번에 실행할 명령어 주소), 프로그램 코드를 저장 => Code를 공유하기 때문에 두 개 이상의 스레드가 자신이 포함된 프로세스의 Code영역에 있는 함수를 호출할 수 있습니다.- Data : 글로벌 변수, 스태틱 변수 저장- Heap : 동적 메모리 할당 공간 => 메모리 영역을 공유하기 때문에 프로세스..