분류 전체보기 289

네트워크 소켓(Socket)은 무엇인가

자 이제 소켓 프로그래밍을 하기 위해 기초지식을 알아보자. 먼저 소켓이 뭔지 알아야 할 것이다. 소켓이란? 인터넷 소켓(Internet socket, socket' 혹은 network socket 라고 부르기도 한다)은 네트워크로 연결되어 있는 컴퓨터의 통신의 접점에 위치한 통신 객체다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다.소켓은 RFC 147에 기술사항이 정의 되어 있다. 인터넷 소켓은 다음과 같은 요소들로 구성되어 있다. 인터넷 프로토콜 (TCP, UDP, raw IP) 로컬 IP 주소 로컬 포트 원격 IP 주소 원격 포트 라고 위키피디아에 나와 있다. 네트워크 프로그래밍은 소켓을 이용하는데, 뭐 소위 소켓 프로그래밍이라고 부른다. 요 소캣 프..

UDP (User Datagram Protocol)

UDP(User Datagram Protocol) 를 알아 보자, TCP에 비하면 진짜 간단하고 뭐 없다. 먼저 UDP 프로토콜의 포맷을 보겠음. 포트 번호, 길이, 체크섬, 데이터 이게 전부다. 이렇게 간단하다는 말은 동작 방식에도 특별한 점이 없다는 것임. 먼저 UDP는 비연결 지향형이다. TCP 처럼 3-ways-handshaking 같은 과정을 거쳐 세션을 맺은 상태에서 통신하는 것이 아니라 그냥 보내고 받는 것이다. 그러니 흐름제어, 혼잡제어 따위는 존재할리가 없다. 그리고 UDP를 설명할 때 항상 나오는 말이 있다. "Best effort" 라고 하는 말인데, '노력은 하되 책임 지지 않는다' 이런 말이다. 이게 무슨 말이냐. 보내기만 보내고 신경을 쓰지 않는다는 말이다. 송신자가 보낸 패킷이..

TCP (Transmission Control Protocol)

소켓 프로그래밍을 하기 위해 전송 계층 프로토콜 (TCP, UDP)에 대해 먼저 알아보자. 먼저 TCP의 구조를 한번 봅시다. 송,수신지 포트, Seq. num, flag 등등 복잡한 구조를 갖고 있다. 각각의 내용들은 뒤에 하고 먼저 TCP의 특징 몇가지를 간단하게 정리하겠다. 1. Point-to-Point 즉, 송신자와 수신자 1:1 통신이다. 3-ways-handshaking(3HSK) 을 통해 세션을 맺은 상태에서 통신하므로 1:1 통신이다. 이렇게 세션이 맺힌 상태에서는 언제든지 데이터를 주고받을 수 있는 상태이므로 TCP는 연결 지향형(Connection-oriented), 양방향형(Full Duplex) 이라고 말할 수 있다. 2. 신뢰할 수 있는 통신이다. 데이터를 보내고 잘 갔는지 확인..

소프트웨어 공학 - 테스팅 프로세스

테스팅 프로세스에서는 검증과 확인 (V&V : Verification and Validation)이라는 작업, 그리고 시스템 테스팅, 검사와 검토 과정을 수행하게 된다. 검증(Verification)은 시스템이 명세서에 적합한지 확인하는 과정이고, 확인(Validation)은 고객이 요구사항을 만족하는지 확인하는 작업이다. 시스템 테스팅은 시스템에 의해 처리되는 실제 데이터 명세서에 정의된 테스트 케이스들을 직접 실행시켜보는 것 즉, 그냥 원래 정해놓은 테스트 경우들을 실행해보는 것이다. 테스팅 프로세스에 대한 과정은 아래와 같다. 1. Unit Test 단위 테스트 즉, 개별적인 부분에 대한 테스트이다. 2. Module Test 단위 테스트에서 하던 그 단위들의 모임 즉, 모듈 단위로 테스트 한다. ..

소프트웨어 공학 - 프로젝트 관리

소프트웨어 공학에서 굉장히 중요한 부분중 하나인 프로젝트 관리(Project Management)에 대해 알아보자. 관리 활동 / 계획 수립 / 일정 수립 / 위험 관리 등의 과정으로 나뉜다. 소프트웨어 개발 프로젝트의 최종 결과물은 기본적으로 아래와 같은 것들에 영향을 받는다. 위 내용 다 중요하지만 굳이 경중을 두자면 마감일(delivery deadline), 활용 분야(application domain), 기술(technology to be implemented), 시스템 제약 조건(system constraints) 등이 되겠다. 위 요소들에 영향을 받는 최종 결과물을 지칭하는 말이 있는데 The 4P's 라는 것이다. 1. People : 사람이다. 프로젝트에서 가장 중요한 요소이다. 2. Pr..

소프트웨어 공학 - 시스템 모델링

시스템 모델링에 대한 내용을 알아 볼것이다. 그냥 분석중인 시스템에 대한 추상화된 표현을 일컫는다. 분석가가 시스템의 기능을 이해하는 것을 도와주며, 모델들은 고객들과 정보를 교환하기 위해 사용된다. 여러가지 시스템 모델들이 있는데, 각자 다른 관점으로 시스템을 표현한다. 시스템의 범위, 환경에 대한 관점(External perspective), 시스템 행동, 동작에 대한 관점(Behavioural perspective) 시스템 구조, 데이터 구조에 대한 관점(Structural perspective) 등이 있다. 뜬금 없이 갑자기 구조적 방법론(Structured methods) 이라는게 나오는데, 뜬금 없는건 아니고 시스템 모델링을 메소드의 본질적인 부분으로 포함하는 것이다. 메소드를 사용하는 모델들..

UPS(Uninterruptible Power Supply)와 전원 차단

디지털 포렌식 분석 시에 전원차단하는 내용에 대해 언급하려한다. 사고분석할 때 디지털 증거를 보존하기 위해 통상적으로 갑작스럽게 전원을 차단하여 하드디스크를 그 상태 그대로 보존한다.. 라고 알고있었다. 물론 반은 맞고 반은 틀린 말이다. 이런 갑작스러운 전원 차단 또한 적용되어야할 대상이 다르고 방법도 다르다. 1. 개인 PC에 일어난 침해사고 분석시에 전원차단 먼저 개인PC에 대한 사고분석을 할 때, 이 경우는 PC뒤의 본체 전원 플러그를 뽑는 식으로 전원을 갑작스럽게 차단해야한다. 돼지코(?)에 꽂힌 콘센트 전원을 빼면 안되는가?? 안된다. UPS라는 기능 때문이다. UPS (Uninterruptible Power Supply) 란, 무정전 전원공급 장치라는 뜻으로.. 갑작스러운 전원차단이 일어나더..

소프트웨어 공학 - 요구사항

소프트웨어 요구사항에 대해 알아보자. 말 그대로 소프트웨어 개발하는데 필요한 요구사항들이다. S/W가 어떠한 기능을 제공해주길 바라는지, 어떤 제한사항이 있는지 등을 설정하는 것이다. 요구 사항에 대한 프로세스를 요구 공학 프로세스 라고 한다. 먼저 요구사항에 대해 알아야겠다. 요구사항(Requirements)는 시스템의 기능 또는 제약 조건에 대한 고수준의 추상적인 문장 에서부터 상세한 수학적인 기능 명세서까지 포함시킨다. 요구사항은 두가지 용도로 사용된다. - 계약을 위한 시도 : 과제를 제안하는 용도이다. 공모전을 예로 들 수 있겠다. RFP라는 게 있는데 (과제도출->공모->선정) 과정을 말하는 것이다. - 계약서 자체 : 계약서 자체에 정의된 요구사항이다. 굉장히 상세해야 하겠지? 요구 사항에도..

COCOMO (Constructive Cost Model)

나선형 모델을 만든 B.W.Boehm 이라는 분이 만든 cocomo에 대해 간략하게 알아보겠다. COCOMO는 Constructive Cost Model 의 약자로, 소프트웨어 개발에 필요한 비용을 계산하는 비용 산정 모델이다. 비용 산정 과정은 다음과 같다. 1. S/W 프로젝트에 대한 데이터를 마구마구 모은다. 2. 수집한 자료들을 반영하는 공식을 만든다. 3. 각 프로젝트 별로 소스코드 라인 수와 난이도를 일정한 척도로 구분한다. 4. 비용 계산한다. 위에 2번에서 언급하는 공식은 다음과 같은 형태를 지닌다. Man-Month는 원래 뜻은 프로젝트에 투입되는 월 인원을 뜻하는데, 프로젝트의 규모를 나타내는 지표같은 개념이다. 프로젝트에서 사용되는 비용은 인건비 이다. 그 인건비를 계산하기 위해 MM..

소프트웨어 공학 - Software Process

소프트웨어 프로세스란? 소프트웨어 시스템을 명세화 - 설계 - 구현 - 시험 하기 위한 활동들의 집합을 말한다. 그냥 제작 공정을 추상적으로 표현한 것이라고 생각하면 된다. 소프트웨어 프로세스에는 여러가지 모델이 있는데, 그 중 하나인 폭포수 모델을 한번 보겠음. 1. 폭포수(Waterfall) 모델​ 개발의 흐름이 마치 폭포수처럼 지속적으로 아래방향을 향하는 것처럼 보인다는 데서 붙여진 이름이다. 위와 같은 과정으로 개발하는 프로세스를 폭포수 모델이라고 하는데, 여기서 약간 주의깊게 볼 부분은 1.요구 사항 정의 부분. 요구 사항 명세화 (Requirement Specification)와 구분 지어 생각해야한다. '요구 사항 정의' 와 '요구 사항 명세화'는 다름. 그리고 폭포수 모델에는 문제점이 좀 ..

반응형