최근 게시물

[컴퓨터네트워크] TCP의 흐름제어, 혼합제어

이미지
[컴퓨터네트워크] TCP의 흐름제어, 혼합제어 TCP 통신은 네트워크 통신에서 신뢰적인 연결방식입니다. TCP 통신을 할 때, 네트워크 트래픽에 대한 흐름제어와 혼합제어를 정리하겠습니다. 흐름제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결 하기 위한 기법 -> End to End 혼합제어 : 송신층의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결 하기 위한 기법 - > 송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다. 하지만 이러한 네트워크 상의 라우터가 항상 한가로운 상황은 아니다. Flow Control(흐름제어) 수신측이 송신측보다 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제가 생깁니다. 수신측에서 제한된 저장옹량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며 만약 손실 된다면 불필요하게 응답과 데이터 전송이 송/수신 측 간에 빈번히 발생합니다. 따라서 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절해야 합니다. 내부 방식으로 Stop and Wait 방식, Sliding Window 방식이 있습니다. Stop and Wait : 매번 전송한 패킷에 대한 확인응답을 받아야만 그 다음 패킷을 전송하는 방법 Sliding Window : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법 동작 방식 : 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도우를 옆으로 옮김(Slide)으로써 그 다음 패킷들을 전송 Window : TCP/IP를 사용하는 모든 호스트들은 보내기 위한것과 받기 위한 2개의 Window를 가지고 있습니다. 호스트들은 실제 데이터를 보내기 전에 먼저 앞에서 포스팅했던 "TCP-3-way-handshaking"을 통해 수신컴퓨터의 rece

[정보보안] 제로데이 공격(Zero Day Attack)이란?

[정보보안] 제로데이 공격(Zero Day Attack)이란? 운영체제(OS)나 네트워크 장비 등 핵심 시스템의 보안 취약점이 발견된 뒤 이를 막을 수 있는 패치가 발표되기도 전에 , 그 취약점을 이용한 악성코드나 바이러스 프로그램을 제작하여 공격을 감행하는 수법이다. 취약점 공격의 신속성을 의미하기도 하며, 대응책이 공식 발표되기도 전에 공격이 이루어지기 때문에 대처 방법이 없다는 위험성을 표현하기도 한다. 이 공격은 바이러스나 스팸의 최초 발생 보고 후 보안업체들의 대응 패치가 나오기까지 시간을 이요한 공격방식으로, 그 과정은 다음과 같다. 새로운 위협이나 바이러스 출현  발생한 위험이나 바이러스에 대한 보고, 분석 새로운 솔루션 개발 새로운 패치와 업데이트된 시그네쳐 배포 유저 시스템에 패치 배포 및 설치 또는 바이러스 데이터베이스 업데이트의 과정 실제 통계 결과에 따르면 제로데이 공격의 지속시간은 300일이 넘고, 전 세계를 상대로 공격하기도 한다. 가장 많이 취약점이 보고되는 소프트웨어는 자바(Java)인데, 자바는 솔직히 지금까지 어떤 버전을 사용하더라도 최약점이 존재한다고 한다. 불안정한게 아니라, 그 많큼 많은 해커들이 노리고 있기 때문이다. 문제는 자바가 설치된 PC는 11억 대가 넘는데 최신 자바를 사용하는 PC는 겨우 17%밖에 안된다고 한다. 출처 https://manimani95.tistory.com/15

[용어 정리] SOLID란?

[용어 정리] SOLID란? 아무리 객체 지향 4대 특성인 캡슐화, 상속, 추상화, 다형성을 잘 한다고 해서 설계를 잘 하는것은 아니다. 물론 4대 특성의 묘미를 잘 살릴수록 설계가 좋다. 하지만 설계 원칙이라는게 엄연히 존재하고, 또 나름 중요하기 때문에 각 원칙의 맨 앞 알파벳만 따와 'SOLID'라고까지 했을까.. SOLID원칙들은 결국 자신 클래스 안에 응집도는 내부적으로 높이고 , 타 클래스들 간 결합도는 낮추는 High Cohesion - Loose Coupling원칙을 객체 지향의 관점에서 도입한 것이다. 결국 모듈 또는 클래스 당 하나의 책임을 주어 더욱더 독립된 모듈(클래스)를 만들기 위함이다. 이렇게 설계된 소프트웨어는 재 사용성이 높아지고, 수정을 최소화 해도 되기 때문에 결국 유지 보수가 용이해진다. 자 그럼 객체 지향 설계 5대 원칙이 각각 무엇인지 알아보자 SRP(Single Responsibility Principle) 단일 책임 원칙 OCP(Open Closed Principle) 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) 리스코프 치환 원칙 ISP(Interface Segregation Principle) 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) 의존 역전 원칙 SRP(단일 책임 원칙) 클래스의 역할과 책임을 너무 많이 주지 마라 즉, 클래스를 설계할 때 어플리케이션의 경계를 정하고, 추상화를 통해 어플리케이션 경계 안에서 필요한 속성과 메서드를 선택 해야 한다. OCP(개방 폐쇄 원칙) 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. LSP(리스코프 치환 원칙) 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다. LSP는 인터페이스와 클래스 관계, 상위 클래스와

[정보보안] PGP(Pretty Good Privacy)란?

이미지
[정보보안] PGP(Pretty Good Privacy)란? 온라인 통신 시스템의 개인 정보 보호, 보안 및 인증 서비스를 제공하도록 설계된 암호화 소프트웨어 PGP는 공개 키 암호 방식 을 구현하기 위해 널리 사용되는 최초의 소프트웨어 중 하나입니다. 이 시스템은 대칭 암호화 와 비대칭 암호화 를 모두 사용해 높은 수준의 보안을 가능하게 하는 하이브리드 암호화 시스템입니다. 문자 암호화의 기본 과정에서, 평문(분명하게 이해될 수 있는 데이터)은 암호화(읽을 수 없는 데이터)로 전환됩니다. 그러나 암호화 과정 이전에, 대부분의 PGP 시스템은 데이터 압축 을 진행합니다. PGP는 평문 파일을 전송하기 전에 압축함으로써, 저장 공간과 전송 시간을 절약하는 동시에 보안을 강화합니다. 파일을 압축한 다음에는, 실제 암호화 과정이 진행 됩니다. 이 단계에서 압축된 평문 파일은 단일 사용키로 암호화되며, 이는 세션 키로 알려져 있습니다. 해당 키는 대칭 암호 방식을 통해 임의로 생성되며, 각 PGP 통신 세션은 고유한 세션 키를 갖고 있습니다. 다음으로 세션 키(1)는 비대칭 암호화 를 통해 자체 암호화됩니다. 예정된 수신자(밥)는 그의 공개 키(2) 를 메시지의 전송자(엘리스)에게 제공하고, 이를 통해 그녀는 세션 키 를 암호화 할 수 있습니다. 이 과정은 보안 환경에 상관없이 인터넷을 통해 앨리스가 안전하게 밥과 세션 키 를 공유할 수 있게 합니다. 세션 키의 비대칭 암호화는 보통 RSA 알고리즘을 통해 이뤄집니다. 인터넷 보안의 많은 부분을 차지하고 있는 TLS(Transport Layer Security) 프로토콜을 포함해서 많은 암호화 시스템이 RSA를 사용합니다. 메시지의 암호문과 암호화된 세션키가 전송된 다음, 밥은 자신의 개인 키(3) 를 사용해 세션 키를 해독할 수 있으며, 이는 암호문을 본래의 평문으로 해독하는데 사용됩니다. PGP는 암호화와 해독이라는 기본적인 처리 외에도 디지털 서명도 지원하고 있으며, 이

[컴퓨터네트워크] SNMP(Simple Network Management Protocol)란?

이미지
[컴퓨터네트워크] SNMP(Simple Network Management Protocol)란? 네트워크 관리를 위한 규약 SNMP가 쓰이기 전에는 ICMP에 의존했었다. ICMP  Network계층의 프로토콜, 운영체제에 관계 없이 상용할 수 있는 간단한 프로토콜 네트워크로 연결된 각각의 호스트가 작동되고 있는지, 작동한다면 어느정도의 응답시간을 가지고 동작중인지 체크 가능. 초기에는 이정도로도 필요한 네트워크 관리가 가능했었다. ICMP를 이용한 대표 도구 -> ping but)인터넷 사용이 보편화되고 네트워크에 연결된 호스트의 수가 증가하고 네트워크 구성 또한 복잡해지면서, ICMP만으로는 네트워크 관리를 효율적으로 할 수 없게 됨. 그래서 몇가지 프로토콜에 대한 연구가 진행 -> SGMP, HIMS, CMIP/CMIS 등이 제안 => 이 중 SGMP를 발전시킨 SNMP가 사실상 네트워크 관리를 위한 표준적인 프로토콜로 자리잡음 현재 SNMP는 거의 대부분 운영체제에서 사용되고 있다. 리눅스/유닉스/윈도우계열 OS는 기본적으로 SNMP 프로토콜을 사용하는 도구를 제공하고 있다. SNMP는 OSI 7계층의 Application 계층 프로토콜 이며, 메시지는 단순히 요쳥과 응답 형식의 프로토콜에 의해 교환되기 때문에 전송계층 프로토콜로 UDP 프로토콜을 사용한다. SNMP의 기능 네트워크 구성관리 네트워크 상의 호스트들이 어떠한 구조를 이루고 있는지 지도를 그릴 수 있다. 성능관리 각 네트워크 세그먼트(소규모 네트워크)간의 네트워크 사용량/에러량/처리속도/응답시간 등 성능분석에 필요한 통계정보를 얻을 수 있다. 장비관리 SNMP의 주 목적이 네트워크관리이지만, 특유의 유연한 확장성으로 시스템정보(CPU/Memory/disk 사용량)를 얻을 수 있도록 확장되었다. 이 정보는 네트워크 문제를 해결하는데 큰 도움이 된다. ex) 세그먼트의 네트워크 사용량이 급증했는데, 특정 호스트의

[전자계산기구조] 연관메모리

[전자계산기구조] 연관메모리 =연관 기억장치(Associative Memory) CPU가 찾고자하는 주기억장치 메모리가 캐시 메모리 어디에 있는지 빠르게 검색할 수 있게 사용하는 메모리 CAM(Content Addressable Memory)라고 부릅니다. 매핑 테이블을 사용합니다. 외부 인자와 내용을 비교하기 위한 병렬 판독 회로가 필요 하여 추가적인 비용을 요구합니다. 연관기억장치는 기억장치에서 자료를 찾을 때 주소에 의해 접근하지 않고, 기억된 내용의 일부를 이용하여 Access할 수 있는 기억장치 특징 주소에 의해서만 접근이 가능한 기억장치보다 정보 검색이 신속하다. 캐시 메모리나 가상 메모리 관리 기법에서 사용하는 Mapping Table에 사용된다. 외부의 인자와 내용을 비교하기 위한 병렬 판독 논리회로를 갖고 있기 때문에 하드웨어 비용이 증가한다. 출처 http://ehpub.co.kr/tag/%EC%97%B0%EA%B4%80-%EB%A9%94%EB%AA%A8%EB%A6%AC/ https://devkim93.tistory.com/entry/%EC%97%B0%EA%B4%80%EA%B8%B0%EC%96%B5%EC%9E%A5%EC%B9%98-%EB%B3%B5%EC%88%98-%EB%AA%A8%EB%93%88-%EA%B8%B0%EC%96%B5%EC%9E%A5%EC%B9%98

[Database] OLAP란?

[Database] OLAP란? OLAP(Online Analytical Processing)은 대용량 업무 데이터베이스를 구성하고 BI(Business Intelligence)를 지원하기 위해 사용되는 기술 데이터 웨어하우스나 데이터 마트와 같은 대규모 데이터에 대해 최종 사용자 가 정보에 직접 접근하여 대화식으로 정보를 분석 하고 의사결정에 활용할 수 있는 실시간 분석 처리 OLAP 특징 다차원성 사용자들이 실제적인 차원에서 정보를 분석 직접 접근 최종사용자들이 전산부서와 같은 정보 매개자를 거치지 않고 자신이 원하는 정보에 직접 접근 대화식 분석 시스템과 상호작용을 통해 정보를 분석하고 원하는 정보를 얻을 때까지 계속해서 분석을 수행함(Drilling) 의사 결정용 기업의 전략적 방향설정 및 의사결정에 활용 OLAP 분석 방법 여러 차원들을 따라 측정치들에 대한 빠른 접근과 강력한 계산 기능 필요 Drill Down 큰(요약된) 범위 -> 작은(상세) 범위 광역 -> 시도 -> 구 -> 동 -> 번지 Roll Up 작은(상세) 범위 -> 큰(요약된) 범위 번지 -> 동 -> 구 -> 시도 -> 광역 Pivot/Rotating 보고서의 행, 열, 페이지 차원을 무작위로 바꾸어 볼 수 있는 기능 분석 데이터의 축을 바꾸는 것 Slicing 한 차원의 멤버나 그 이상의 멤버를 가지고 한 값을 선택했을 때 나타나는 그 부분의 집합을 말한다. 큐브 자르기 Dice 특정 항목에 대해 Rotation, Drill Down, Roll Up 등을 이용하여 대화식으로 화면을 디스플레이 해가며 분석하는 프로세스 큐브 잘라서 서브 큐브 만들기 출처 https://goodgid.github.io/What-is-OLAP/