전체 글

전체 글

    [바미] tcpdump를사용하여 패킷 캡쳐하기.

    안녕하세요. 요즘 udp 관련 패킷을 확인할 일이 생겨 tcpdump에 대해 공부하게 되었고, 공부한 내용들을 정리하여 올려봅니다. tcpdump란? tcpdump는 CLI 환경에서 실행하는 일반적인 패킷 가로채기 소프트웨어 입니다. 사용자가 TCP/IP 뿐 아니라, 컴퓨터에 부착된 네트워크를 통해 송수신되는 기타 패킷을 가로채고 표시할 수 있게 도와주죠. tcpdump 명령어 사용법 tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M sec..

    [바미] Node 그리고 장, 단점.

    Node.js 란? Node.js는 위키백과에 아래와 같이 정의되어 있습니다. Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다. Node.js와 관련된 핵심키워드는 아래와 같습니다. 구글 V8 자바스크립트 엔진 고성능 네트워크 서버 단일 쓰레드(Single Thread) 이벤트 루프(Event Loop) 기반 비동기 I/O 처리(Non-..

    [바미] HTTP status code

    HTTP에서 클라이언트 요청에 대한 서버의 응답 코드에 관한 포스팅 입니다. HTTP 상태 코드란? 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단합니다. HTTP 상태 코드 분류 상태 코드의 첫 번째 숫자에 따라 크게 5가지로 분류 됩니다. 1xx (Informational) : 조건부 응답 2xx (Successful) : 성공 3xx (Redirection) : 리다이렉션 완료 4xx (Client Error) : 요청 오류 5xx (Server Error) : 서버 오류 HTTP 상태 코드 상세 자주 사용되는 HTTP 상태 코드 위주로 정리하였습니다. 모든 HTTP 상태 코드를 알고 싶다면, MDN이나 위키백과를 참고해 주세요. 1xx ..

    [바미] IPC

    IPC? 프로세스 간에 통신하여 프로세스 간에 데이터를 주고받는 방식을 말합니다. 프로세스끼리 직접적으로 '대화'하는 방법은 없습니다. 왜 그렇냐면 프로세스들이 서로 공간을 쉽게 접근하면 프로세스의 데이터나 코드가 다른 프로세스에 의해 쉽게 바뀔 수 있기 때문인데 제가 만든 작고 소중한 코드가 나쁜 해커놈들이 만든 프로그램으로 인해 조작되서 중요한 데이터를 뺏기면 마음도 아프고 그렇겠죠? 이를 막기 위해 프로세스는 통신을 직접적으로 할 수가 없고, 서로의 공간을 접근할 수가 없어요. 그래도 프로세스 간의 커뮤니케이션은 필요하기 때문에 나온 기법이라 할 수 있죠. 통신(커뮤니케이션)이 필요하다는데, 왜죠? 성능을 높이기 위해 존재해요. 어떤 로직을 하나의 프로세스로만 수행하는 대신, 여러 프로세스가 수행해..

    [바미] 코드 리펙토링(Code Refactoring)에 대해서

    소프트웨어 공학에서 리팩토링(refactoring)은 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻합니다. 더 정확히 얘기하면 주로 가독성을 높이고 유지보수를 편하게 하는 것. 버그를 없애거나 새로운 기능을 추가하는 행위는 아님. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 개선하는 유지보수 행위. 로 얘기 할 수 있습니다. 쉽게 얘기하면 현재 코드의 동작은 그대로 유지하면서 더 이해하기 쉽고, 생각하기 쉽고, 확장하기 쉽게끔 재구성하는 것을 말하는 것이죠. Refactoring 목적 리팩토링의 목적은, 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것에 있습니다. 리팩토링은 성능을 최적화시키는 것이 아닌 코드를 신속하게 개발할 수 있게 만들어주고, 코드 품질을 좋게 만들어주는 ..

    [바미] Object, Class, Instance.

    개발을 하다 보면 정말 자주 듣고 보고 말하고 쓰게 될 말이 위 3개 입니다. 간혹 물어보면 정확히 답변 못하는 경우가 많은데 오늘은 객체, 클래스, 인스턴스에 대해 알아보도록 하겠습니다. An object is a class instance or an array. 제임스 고슬링이 작성한 자바 언어 설명서 (The java Language Specification)에는 객체(object)란 클래스의 인스턴스나 배열을 말한다고 정의되어 있습니다. 컴퓨터 공학에서 객체는 변수, 자료 구조, 함수, 메서드, 식별자에 의해 참조된 메모리 상의 값 등을 의미합니다. 객체지향 프로그래밍에서 객체는 변수, 함수, 자료 구조의 조합이 될 수 있는데, 특히 객체지향 프로그래밍에서 클래스를 기반으로 한 변수를 클래스의 인..

    [바미] 쿠키, 세션이란?

    웹의 기초중 하나인 쿠키와 세션에 대해 알아봅니다. 쿠키와 세션에 대해 알아보기전, HTTP의 특징을 알아보고 쿠키와 세션이 필요한 이유를 알아봅시다. HTTP의 특징 HTTP 통신의 특징은 Connectionless와 Stateless라고 할 수 있습니다. Connectionless(비 연결지향) 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성이 있습니다. (HTTP1.1에서 Connection 헤더에 keep-alive라고 설정하면 컨넥션을 유지할 수 있습니다) Stateless(상태 정보 유지 안함) HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없습니다. 이를 Stateless하다고 합니다. 만약 로그인을 하고 그 상태를 유..

    [바미] Join 시 on과 where의 차이

    요약 on : join 전에 조건을 필터링 where : join 후에 조건을 필터링 INNER JOIN 에서의 ON vs WHERE INNER JOIN + ON 조건절 + ON 조건절 SELECT * FROM a INNER JOIN b ON a.key = b.key AND a.key2 = b.key2 EQUI JOIN + WHERE 조건절 SELECT * FROM a AS a , b AS b WHERE a.key = b.key AND a.key2 = b.key2 INNER JOIN + ON 조건절 + WHERE 조건절 SELECT * FROM a INNER JOIN b ON a.key = b.key WHERE a.key2 = b.key2 위 세 쿼리는 모두 같은 결과, 같은 퍼포먼스가 나오게 됨. 즉,..

    [바미] Java Milliseconds to Seconds 에피소드.

    안녕하세요. 요번에 MiliSeconds to Seconds 처리하다 생긴 실수를 오답노트 삼아 글을 적어보려 합니다. 데이터의 time중에 Milliseconds형태로 들어오는 값이 있었습니다. 들어온 데이터를 들어온 데이터의 time값과 현재 시간을 비교하여 현재보다 과거인 경우 pass시키고, 현재보다 미래인 경우 처리합니다. 이게 무슨 말이냐면 현재 시간은 지금은 12시 24분 13초라고 가정했을 때 초 단위를 00초로 변경한 값을 말합니다. 즉 현재가 12시 24분 24초 일 때, 12시 24분 00초(현재시간)인 타임스탬프 값과 보다 미래인 값인 12시 24분 01초, 12시 24분 10초로 비교하는 것이죠. 00초로로 변경한 현재 시간 값은 seconds단위로 떨어지는 timestamp였고,..