본문 바로가기

전체 글184

컴퓨터 네트워크 21장 - IP 프로토콜 - 컴퓨터 네트워크 21장- IP 프로토콜 - IP 프로토콜은 인터넷 환경에서 네트워크 계층의 데이터 전송 프로토콜이다. 주요 특징으로 비연결형 서비스이고 패킷 분할/병합 기능을 가지고 있다. 데이터 체크썸은 없고, 헤더 체크썸만 제공한다. Best-effort 방식으로 동작을 한다. 이 방식은 전송 패킷이 수신 호스트에 100% 도착하는 것을 보장하지는 않는다. IP 헤더를 살펴보면 다양한 필드로 구성되어 있다. DS/ECN이라는 부분은 사용자에게 제공하는 서비스의 품질에 관련된 내용을 다룬다. 원래 Service Type 필드로 8비트를 구성하여 우선순위, 지연, 전송률, 신뢰성에 대한 값을 지정하였으나 차등 서비스 개념이 도입되면서 6비트의 DS 필드와 2비트의 ECN 필드로 새로 정의 되었다. 송신 .. 2017. 4. 24.
컴퓨터 네트워크 20장 - 라우팅 - 컴퓨터 네트워크 20장- 라우팅 - 인터넷에는 수많은 호스트가 연결되므로 관리해야 할 라우팅 정보가 많다. 따라서 라우팅 정보를 적절히 관리하여 효율적으로 라우팅 하는 프로토콜이 필요하다. 간단한 라우팅 프로토콜을 먼저 살펴보자. ∙최단 경로 라우팅거리 기준은 다양하지만 중간에 거쳐 가는 홉 수로 판단을 한다. 패킷이 목적지로 가는 동안 통과하는 라우터 수가 최소가 되도록 경로를 선택하는 방법을 택한다. 기타 거리 기준으로는 패킷의 전송 지연이나 전송 대역폭, 통신비용도 사용할 수 있다. ∙플러딩 라우팅라우터가 입력된 패킷을 출력 가능한 모든 경로로 중개하는 방식을 취한다. 네트워크 패킷이 무한개까지 만들어질 수 있으므로 홉 수를 일정 범위로 제한하여 제거를 해야 한다. 이와 같은 경우는 중요한 데이터를.. 2017. 4. 24.
운영체제 13장 - 프로세스 관리(10) : 모니터 - 운영체제 13장 - 프로세스 관리(10) : 모니터 - 동기화 문제를 해결하기 위해서 우리는 세마포라는 도구를 사용하였다. 하지만 동기화 문제를 해결하는데 세마포만이 사용되지는 않는다. 사실 세마포의 경우 오래된 동기화 도구라고 할 수 있다. 현재 사용되는 도구 중 하나가 모니터이다. 특히 자바 프로그램에서는 모니터에 대한 활용이 높다. 세마포가 어셈블리 언어에 적합한 도구라면 모니터는 그보다 고수준인 언어의 도구라고 할 수 있다. 공유자원과 공유자원에 대한 접근함수가 존재한다. 이러한 구역을 임계구역이라고 한다. 모니터의 경우 두 개의 queue가 있는데 각각 배타동기와 조건동기의 역할을 한다. 배타동기의 queue는 하나의 쓰레드만 공유자원에 접근할 수 있게 하는 작용을 하는 공간이다. 특정 쓰레드가.. 2017. 4. 24.
C++ 강의 7장 - 참조자(Reference) - C++ 강의 7장- 참조자(Reference) - 변수라고 하는 것은 할당된 메모리 공간에 붙여진 이름이다. 우리는 이 이름을 가지고 해당 메모리 공간에 접근이 가능해진다. 그러면 참조자는 무엇일까? 참조자는 할당된 하나의 메모리 공간에 다른 이름을 붙이는 것을 말한다. 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름인 것이다. 쉽게 말하면 별명이라고도 할 수 있을 것 같다. 예시를 통해 설명을 들어보자. num1이라는 변수를 우선 선언해보자. 정수의 값을 가지기 위해 int로 num1을 선언한다. 그러면 메모리의 어느 공간에 num1이라는 이름을 부여한다. 그리고 우리는 그 num1이라는 메모리 공간에 10을 선언한다. 그러면 여기서 num1이라는 메모리 공간에 다른 이름도 부여하고 싶다. 그러.. 2017. 4. 24.
세션 하이재킹 공격 & 부채널 공격 세션 하이재킹 공격 & 부채널 공격 세션 하이재킹 공격은 두 시스템 간 연결이 활성화된 상태, 즉 로그인된 상태를 가로채는 것을 말한다. 서버와 클라이언트가 TCP를 이용해서 통신하고 있을 때, RST 패킷을 보내 일시적으로 TCP 세션을 끊고 시퀀스 넘버를 새로 생성해 세션을 빼앗아 인증을 회피하는 공격이다. 세션 하이재킹은 세션 가로채기라고 한다. 세션이 사용자와 컴퓨터, 또는 두 대의 컴퓨터 간의 활성화된 상태를 나타낸다. 가장 쉬운 세션 하이재킹은 누군가 작업을 하다가 잠시 자리를 비운 PC를 몰래 사용해 원하는 작업을 하는 것이다. TCP 세션 하이재킹은 서버와 클라이언트가 통신할 때 TCP 시퀀스 넘버를 제어하는 데 문제점이 있음을 알고 공격하는 것이다. TCP 세션 하이재킹은 Non-Blin.. 2017. 4. 23.
컴퓨터 네트워크 19장 - 네트워크 계층의 기능 - 컴퓨터 네트워크 19장- 네트워크 계층의 기능 - 네트워크 계층의 기본 기능으로는 라우팅이라고 할 수 있다. 라우팅은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 역할을 한다. 라우팅 과정 중에 수반되는 기능으로는 혼잡 제어나 패킷 분할/병합이 있을 수 있다. 라우팅을 위해서 라우팅 테이블을 가지고 있는데 네트워크 구성 형태에 관한 정보를 관리하는 공간이다. 혼잡이라고 하는 것은 네트워크에 패킷 수가 과도하게 증가되는 현상으로 혼잡의 발생을 예방하거나 제거하는 기능을 혼잡 제어가 필요하다. 패킷의 분할과 병합은 상위 계층에서 내려온 데이터를 하위 계층인 MAC 계층의 프레임 구조에 정의된 형식으로 캡슐화 할 때 사용되는 기능이다. 송신 호스트에서 전송 전에 적절한 크기로 데이터를 분할하고 수신 호스트.. 2017. 4. 23.
컴퓨터 네트워크 18장 - HDLC 프로토콜 - 컴퓨터 네트워크 18장- HDLC 프로토콜 - 이번 장은 HDLC 프로토콜에 대해서 공부를 하는데 이렇게 특정한 프로토콜에 대해 공부를 하게 되면 다른 프로토콜들을 이해하는데도 크게 도움이 된다. 하나의 프로토콜의 구성이나 기능을 알게 되면 이와 비교해서 다른 프로토콜은 어떤 기능이 추가, 삭제되며 구성은 어떻게 변하는지를 파악하면서 공부를 진행하면 될 것이다. HDLC는 High-level Data Link Control 프로토콜로 컴퓨터가 일대일 혹은 일대다로 연결된 환경에 데이터의 송수신 기능을 제공한다. 역사적으로 SDLC(Synchronous Data Link Control)라는 IBM SNA의 데이터 링크 프로토콜이 있었다. SDLC 프로토콜을 ISO에서 발전시켜 HDLC로 발표를 하였다. H.. 2017. 4. 23.
운영체제 12장 - 프로세스 관리(9) : 교착상태 처리 - 운영체제 12장- 프로세스 관리(9) : 교착상태 처리 - 교착상태는 모든 프로세스들이 필요한 자원을 할당 받지 못해 대기를 하고 있는 상태를 말한다. 프로세스는 실행을 위해 여러 자원이 필요한데 어떤 자원은 갖고 있으나 다른 자원은 할당을 받기 위해 대기해야한다. 하지만 다른 프로세스 역시 다른 자원을 가지려고 대기를 하고 있어 모든 프로세스들이 자원을 할당받지 못한다. 위와 같은 교착상태에 빠지는 필요조건은 상호배타, 보유 및 대기, 비선점, 환형대기가 있다. 이에 대해서는 앞장인 교착상태 장에서 설명하였으니 생략하도록 한다. 또한 이를 자원 할당도로 확인하는 방법을 알아보았다. 교착상태가 발생하면 모든 프로세스가 중지하는 현상이 생기므로 큰 문제가 생긴다. 일반 PC의 경우에는 컴퓨터를 껐다가 켜면.. 2017. 4. 23.
C++ 강의 6장 - inline 함수 & 이름 공간(namespace) - C++ 강의 6장- inline 함수 & 이름 공간(namespace) - inline 함수는 다른 언어를 배운 사람들이 보면 조금 생소할 수도 있다. in은 ‘내부’를 의미하고 line은 ‘프로그램 코드라인’을 의미하는 말이다. 따라서 프로그램 코드라인 안으로 들어가 버린 함수라는 의미로 해석할 수 있다. C언어에 대해 먼저 선행을 하였을 경우 매크로 함수에 대해 공부를 하였을 것이다. 매크로 함수는 함수의 결과 값을 도출하는 식을 미리 정의하는 형태를 가진다. 전처리 부분에 함수를 정의한다. #define 매크로 함수명(인수) 치환될 부분 위와 같은 형태로 매크로 함수를 정의하는데 다른 함수들에 비해 일반적으로 실행속도가 빠르다는 이점을 가지고 있다. 매크로의 정의가 전처리 부분에서 되므로 함수의 몸.. 2017. 4. 23.
레드햇(Redhat) 레드햇(Redhat) 레드햇은 1993년 미국에서 설립된 기업으로, 기업용 오픈소스 기술을 개발하고 있다. 기업용 오픈소스 기술은 이미 공개된 오픈소스 기술에 추가 기능이나 유지보수 서비스를 더하여 이로 인해 수익을 창출하는 것을 의미한다. 오픈소스 기술이 처음 등장했을 때에는 오픈소스라는 말 자체로 누구나 내려 받을 수 있어서 이 기술로 돈을 낼 사람은 없을 것이라고 생각되어졌다. 하지만 이러한 기술에 대해 수익을 창출하는 구조를 만든 것이 바로 레드햇이다. 아무리 공개된 기술이라도 기업에선 더 편하고 안전하게 사용하고 싶어 하기 때문에 이를 공략해서 서비스를 진행하였다. 과거에 오픈소스 기술을 사용할 때 문제점이 있었다. 빠른 업데이트 주기로 새로운 기술을 검증하기 힘들었고 안정성과 보안에 취약점이 .. 2017. 4. 22.