> 어거지 네트워크 전쟁 스토리

"이지스 서버가 가동됐다. 이지스 시스템은 대용량의 멀티 세션 공격도 방어할 수 있기 때문에 ‘제우스의 방패’ 라는 이름이 붙여졌다고 한다. 최첨단 이지스 시스템은 현재 여러 진영에서 개발되었다.

리눅스 진영의 멀티쓰레드 이지스 시스템, 윈도우 진영의 멀티쓰레드 이지스 시스템이 있고 자바 진영의 NIO 이지스 시스템이 있다. 자바진영의 NIO 이지스 시스템은 고난이도 성능 구현에는 리눅스, 윈도우 진영에 뒤지지만 조작하기가 쉽고 어느 함선이든 탑재하기 쉬운 장점이 있다.

우리 이지스 서버는 리눅스 진영의 아무 함선(서버)이나 개조하여, 자바 진영의 NIO 이지스 시스템을 탑재하고 최근에 가동됐다.

이지스 서버의 IP정보를 획득한 TCP/IP 세션편대가 이진수 상공을 어지럽게 활공하며 공격을 준비하고 있었다.

세션편대의 각각의 세션은 소켓이라 불리는 타겟팅~을 완료해야만 공격 준비를 할 수 있으므로 부지런히 소켓 타겟팅~ 작업을 하고 있었다.

그리고 이지스 서버의 정보 획득을 위해 레이더로 TCP/IP식 3번 탐지(Three Way Handshake)을 완료하고 있었다. 3번 탐지(Three Way Handshake) 완료된 세션 편대 공격~!

세션 편대의 3번 탐지(Three Way Handshake) 를 통해 세션 편대의 공격을 감지한 이지스 서버 역시 무수히 달려드는 세션 편대를 방어하기 위해 NIO 이지스 시스템이 부지런히 작동하기 시작했다.

바이트버퍼(ByteBuffer)'가 세션들의 데이터를 신속하게 수집하고 ‘채널(Channel)’이 고 성능의 바이트버퍼를 통해 수집한 데이터를 부지런히 중앙관제센터로 전송한다. 중앙관제센터에는 Reactor 패턴을 정교하게 구현한 ‘셀렉터(Selector)’ 라는 세션 배정 시스템이 있는데 셀렉터가 부지런하게 세션들을 요격할 무기를 지정하고 무기 발사를 제어한다.

NIO 이지스 시스템은 잘 방어하고 있었다. 그래도 이지스 시스템 역시 함선 위에 놓여진 것이고 자원의 한계가 있음에 따라, 서서히 위험에 놓이게 되었다.

곧이어 터지는 리눅스 TOP 관제 시스템의 CPU/Memory 100% Used 경고.. 버벅거리는 이지스 서버의 틈새를 뚫고 세션 한대가 이지스 서버를 향해 고공 강하 하기 시작했다.

그리고 ‘java out of memory’ 라는 토마호크급 미사일을 발사한다. 명중..악~ 자바 진영의 최첨단 NIO 이지스 시스템을 갖춘 함선은 이렇게 다운~되었다."


최근에‘지팡구’라는 일본 애니메이션을 재미있게 보았습니다. ‘지팡구’의 내용은 일본 자위대의 이지스함이 1942년 미드웨이 해전 당시로 시간 이동하게 되었는데 21세기로 돌아가지 못하자 본의 아니게 2차세계대전 태평양 전쟁에 끼어들게 되면서 겪게 되는 이지스 선원들의 가치관의 혼란과 첨단 무기 이지스함의 활약을 그린 애니메이션 입니다.

사용자 삽입 이미지

그래서 군국주의스러운 위험한 발상의 애니메이션 입니다만, 내용 자체는 너무도 흥미진진하여 최근에 재미있게 보았습니다.

그리고 이때 저는 네트워크 프로그래밍을 하고 있었습니다. 그래서 어거지~스럽지만 장난스럽게 비유해 보았습니다.


> TCP/IP 책 3종 세트


저는 네트워크 프로그래밍을 하는데 있어서 거꾸로 배워갔습니다. 일단 실무에 빨리 적용해야 하다 보니 네트워크 프로그래밍 기초가 부족한 상태에서,

1. 아파치 미나(Apache MINA)라는 자바 NIO 기반 네트워크 프레임워크부터 무작정 써봤습니다.



2. 그러나 곧 자바 NIO를 이해해야만 해결 할 수 있는 에러가 터져서 바이트버퍼, 채널, 셀렉터등의 자바 NIO를 공부하기 시작했습니다.

자바 I/O & NIO 네트워크 프로그래밍, 한빛미디어


3. 얼마뒤 이번에는 스레드 처리문제, 소켓 클로즈 문제, 대량 데이터 전송 문제 등의 TCP/IP 레벨을 알아야만 처리 할 수 있는 문제가 발생하여 TCP/IP 책을 읽기 시작했습니다.

열혈강의, TCP/IP 소켓프로그래밍, 프리랙
TCP/IP 소켓 프로그래밍 자바버전, SciTech

특히 위의 3가지 책은 자바 네트워크 프로그래밍에 꼭 필요하다고 볼 수 있는데요. 3가지 책을 읽어본 간단한 감상을 적어보겠습니다.


자바 IO & NIO 네트워크 프로그래밍 - 8점
김성박 외 지음/한빛미디어

우리나라 개발자가 자신의 경험을 토대로 썼고, 자바 네트워크 프로그래밍 대부분의 API 영역을 다뤘고, 다른 비슷한 책이 드물기 때문에 한마디로 ‘알찬’ 책이다. 그러나 한국인이 썼는데도 문장이 딱딱한 편이다. 워낙 어려운 주제라서 어쩔 수 없을수도 있겠지만 어려운 주제를 어렵게 풀어 써서 이해하기는 쉽지 않았다.


열혈강의 TCP/IP 소켓 프로그래밍 - 10점
윤성우 지음/이한디지털리(프리렉)

베스트셀러인 것은 다 이유가 있다. 이 책은 네트워크 프로그래밍의 베스트셀러인데 이번에 TCP/IP 지식이 궁금하여 읽었을때 ‘손이 닿지 않은 가려운 곳’ 긁어주는 것처럼 도움이 많이 되었다.

이 책은 TCP/IP 지식을 일반 C, 리눅스 C, 윈도우 C기반으로 알려준다. 역시 우리나라 개발자가 자신의 경험을 토대로 썼고, TCP/IP 네트워크 프로그래밍의 모든 것을 다루었고, 무엇보다 다른 비슷한 책에 비해 알기 쉽게 설명했기 때문에 한마디로 부족함 없이 '알찬' 책이다.

이 책은 비록 C로 설명하고 있지만 자바 네트워크 프로그래밍 개발자도 꼭 읽어볼 것을 추천한다.


TCP/IP 소켓 프로그래밍 - 6점
Michael J. Donahoo & Kenneth L. Calvert 지음, 김영용 옮김/사이텍미디어(희중당)

네트워크 프로그래밍의 전문가인 친한 형이 이 책 읽고 기초부터 쌓은 다음 다시 시작하라~고 하여 산 책인데, 그만큼 TCP/IP 분야에 입문할 때 많이 읽히는 책인 것 같다.

그러나 개인적으로 이 책의 내용을 미리 알았다면 사지 않았다. 일단 문장이 투박한 한문과 영어 가득한 대학 교과서처럼 딱딱하다. 그리고 이 책에 설명한 내용은 방금 전에 설명한 ‘TCP/IP 소켓 프로그래밍’ 에도 다 나와있다. 더구나 같은 내용이라도 ‘TCP/IP 소켓 프로그래밍’이 더 알기 쉽게 알려준다. 그리고 자바쪽 지식은
'자바 I/O & NIO 네트워크 프로그래밍'이 더 자세하게 알려준다.

책이 워낙 얇아 전철안에서 편하게 읽기 좋다는 장점이라도 있을 줄 알았는데 어려운 문장은 그 장점마저 단점이 된 것 같다. 나 같은 경우는 전철안에서도 잘 읽히지 않았다.


제가 항상 쓰던 독후감 형식이 아니라 편하게 소개하는 형식으로 3가지 네트워크 프로그래밍 책을 소개했는데요. 제 주관적인 결론은 이렇습니다.

자바 네트워크 프로그래밍 개발자라면, 자바 네트워크 프로그래밍 API 공부는 '
자바 I/O & NIO 네트워크 프로그래밍'로 하고, TCP/IP 기초 지식은 '열혈강의, TCP/IP 소켓프로그래밍'로 쌓으면 좋을 것 같다~ 라는 것입니다.

요즘 네트워크 프로그래밍은 재미있습니다. 좋은 품질의 서버 개발에 노력하면서,  유익한 정보 있으면 또 포스팅 하겠습니다.


덧1) 이 글을 구독하시는 고수 개발자께서 더 좋은 책이나 다른 평 있으시면 피드백 부탁드립니다. ^ ^
신고
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요

  1. BlogIcon 낚시광준초리 2008.04.24 09:39 신고  댓글주소  수정/삭제  댓글쓰기

    비록 제가 봤던책은 C기준의 책이지만 가장 많이 읽혀지고 저도 그 책을 통해 네트워크 공부를 하여 추천할 만한 서적이 있네요,.,

    1. UNIX Network Programming(STEVENS)책으로 Volume 1부터 Volume2까지의 세트로 구성된 책입니다. 참고로 원서 추천입니다. 이책은 C프로그래밍으로 버클리 소켓에 대해 아주 잘 설명 되어있습니다.
    2. TCP/IP Illustrated(STEVENS)책으로 Volume 1부터 Volume3까지 세트로 구성된 책입니다. 이것 또한 원서로 추천입니다. 이 책은 TCP/IP 구조를 설명 한 책으로 VOLUME2 같은 경우 리눅스 커널을 기준으로 설명 되어있습니다. VOLUME 1은 TCP/IP 기본 구조를 아주 잘 설명 되어있습니다.

    아마 2 책 두권만 읽으면 왠만 네트워킹 프로그램은 다 처리 할 수있습니다.(ARP등 기타 프로토콜도 잘 정의 되어 아주 괜찬은 책이죠..)

    • BlogIcon 산골 2008.04.26 18:10 신고  댓글주소  수정/삭제

      낚시광준초리님 깊이있는 피드백 감사드립니다.
      말씀하신 책은 저도 얘기 몇번 들은것 같아요.
      정말 이책들만 독파하면 네트웍 프로그래밍의 고수가
      될것 같은데 다만 친절하게 영어로 되어 있네요.. ^ ^;
      그래도 꼭 읽어보겠습니다. ^ ^

  2. Green 2008.04.24 09:44 신고  댓글주소  수정/삭제  댓글쓰기

    글 재밌게 잘 읽었습니다.^^
    마치 밀리터리 소설을 읽는 듯 하군요..
    어려운 개념을 재밌는 소설처럼 풀어서 설명하면 어떨까하는 생각이 드는군요..
    좀 오래된 책이지만 manning에서 나온 Java Network Programming도 훌륭한 책이라고 생각됩니다.
    비록 NIO부분은 안 나왔지만 자바로 네트워크를 다루는 데 있어선 최고의 책이라고 생각됩니다.

    • BlogIcon 산골 2008.04.26 18:11 신고  댓글주소  수정/삭제

      가끔 찾아주셨던 그린님 안녕하세요~
      오랜만에 뵙네요..^ ^
      말씀하신 책은 저도 읽어봤어요.
      친구한테 빌려서 읽어봤던 기억이 납니다.
      소중한 피드백 감사드립니다. ^ ^

  3. BlogIcon ARMA 2008.04.24 11:43 신고  댓글주소  수정/삭제  댓글쓰기

    앉아있지 못한다고 3일간 병가낸 걸로 알고 있는데....
    블로그 할 때는 안 아픈가 보군..... 헐... 위험한 짓을 한겨.......
    글쓰는데 시간도 꽤 걸렸을듯 싶은데 말이지.... 헐.....

  4. BlogIcon 데굴대굴 2008.04.24 13:28 신고  댓글주소  수정/삭제  댓글쓰기

    저는 개발자는 아니지만, TCP/IP에 관련되서 심도있게 배우시고 싶으시다면, 저자가 제프 도일것을 권해드리고 싶네요. 사실 더 어렵고 자세하게 설명된 책도 있지만, 일정 수준만 넘어가면 프로그래밍 하는데 필요한건 API 설명 뿐입니다. 이런 설명이야 도움말 찾는거만 대충 보면 되지요.

    • BlogIcon 산골 2008.04.26 18:20 신고  댓글주소  수정/삭제

      데굴대굴님 어서오세요~
      저는 데굴대굴님 프로필 맨트의 SQL 보고
      개발자이신지 알았는데 다른일(아마 시스템 엔지니어)
      하시는군요~
      제프도일이란 이름으로 검색해봤더니 시스코 라우터
      책에 나왔는데요..나중에 깊이있게 공부할 필요가 생기면
      읽어봐야겠습니다. 소중한 피드백 감사드립니다. ^ ^

  5. Joowonpapa 2008.04.25 13:07 신고  댓글주소  수정/삭제  댓글쓰기

    위에 어떤 분이 쓰셨네요.
    1. UNIX Network Programming Volume 1
    2. UNIX Network Progrmaming Voluem 2

    3권도 있는데, 글쎄요. 스티브는 2권까지만 쓰고 작고 하셨습니다. 위의 두책의 단점은 쓰레드부분은 약하다입니다. 그래도 최고의 책입니다. 2권을 다 보신후 네트워크 물리적 스택부분을 소프트웨어고 구현해 보시면 왜 대단한지 알 수 있을 것 같아요. 쓰레드 부분은 따로 pthread을 찾아 읽어보시면 좋을 듯 싶군요. (가장 기초)

    3. TCP/IP Illustrated Volume 1

    위의 책도 스티브의 책으로서 2, 3권까지 있지만 1권까지만 읽어도 됩니다.

    4. 열혈강의 TCP/IP 소켓 프로그래밍
    5. 자바 IO/NIO
    위의 두 책은 감동했습니다. 한국사람도 기술서적을 빈틈없이(?) 이렇게 책을 잘 쓸수 있구나라는 생각을 처음 갖게 해준 책중에 하나 인것 같습니다.

    위의 5권을 다독하시면 어떤 네트워크 프로그래밍은 쉽게 하지 않을까요?
    본인인 1, 2, 3까지는 학교 다닐 때 2번씩 본 것 같고, 4-5번은 한 번씩밖에 보진 못했지만 두고두고 볼만한 책이라고 생각합니다. 물론 지금은 네트워크 프로그래밍을 전혀 안하고 필요성을 못 느끼는 환경이지만...

    • BlogIcon 산골 2008.04.26 18:23 신고  댓글주소  수정/삭제

      주원아빠님 이쪽분야에 고수시군요.
      편하게 이런글을 썼던 제가 부끄러울 정도입니다.
      일단 칭찬하신 4.5.번 책을 제대로 읽어보고..
      좀더 고급 프로그래밍이 요구될때 말씀하신
      책을 읽어봐야겠습니다..
      소중한 피드백 감사드립니다. ^ ^

  6. BlogIcon 아도니스 2008.04.25 19:08 신고  댓글주소  수정/삭제  댓글쓰기

    위에 있는 만화 가와구치 가이지의 작품인데.. 이 인간의 군사적 자료 수집은 그야말로 놀라울 따름입니다. 방대한 군사, 정치, 경제, 역사적 자료를 토대로 만화를 그려나가는데 그 솜씨가 정말 기막히죠. 하지만 군국주의적 발상으로 가득차서 읽는 내내 눈쌀 찌푸리게 하는데에도 재주가 있어서 저는 별로 내키질 않네요.

    침묵의 함대, 태양의 묵시록, 지팡구 같은 거 많은데 요즘 만화책을 못 봐서 슬슬 궁금하네요.

    • BlogIcon 산골 2008.04.26 18:27 신고  댓글주소  수정/삭제

      아도니스님은 역시 애니의 고수..
      애니에 대한 소중한 피드백? 감사드려유~
      가와구치 가이지란 사람..참 얄미우면서도
      대단한 사람이네요.. 지팡구 엄청 흥미진진하게
      읽었거든요.. 아도니스님 관련 재밌는 애니 있으면
      추천 부탁드려유~ ^ ^

    • BlogIcon 아도니스 2008.04.26 18:37 신고  댓글주소  수정/삭제

      저 사람 작품중 태양의 묵시록 추천합니다. 2명이 주인공으로 나오는데, 시대 상황이 일본이 지진으로 인해 국토가 둘로 쪼개져서 북일본은 중국이, 남일본은 미국이 통치하는 시대입니다. 앞서 언급한 2명중 한명은 북일본에서, 또다른 1명은 남일본에서 커나가게 되구요. 우리 나라의 분단현실과 흡사해 역시 논란의 여지가 있지만 탄탄한 구성만큼은 칭찬해주고 싶어요.

      지팡구는 만화로 알고 있는데 애니메이션도 있나요?

    • BlogIcon 산골 2008.04.27 00:28 신고  댓글주소  수정/삭제

      헉 아도니스님..바로 정성스러운 답글을 달아주셨군요.
      아도니스님 고마워유~
      태양의 묵시록..흥미가 가요..
      지팡구는 애니가 나왔어요. 근데 완결편은
      아직 안나왔네요..
      그래서 아쉬워요..쩝~ ;

  7. BlogIcon Keating 2008.04.26 00:34 신고  댓글주소  수정/삭제  댓글쓰기

    열혈강의 TCP/IP 소켓프로그래밍은 정말 감동적인 책이죠.
    동영상강의는 더욱 강한 포스의 감동이 있었구요,
    저는 이 책을 필두로 윤성우님의 열혈강의 시리즈 C++, C 프로그래밍을 무턱대고 사서 보았는데요,
    역시나 감동의물결은 여전하더군요. 윤성우님의 열혈팬이 되어버리고 말았다는ㅋ

    • BlogIcon 산골 2008.04.26 18:29 신고  댓글주소  수정/삭제

      엇~ 강의도 볼만한가봐요..
      꼭 봐야 겠습니다. 키팅님 소중한 피드백
      감사드려유~
      윤성우님 참 대단한 분이네요. ^ ^

  8. BlogIcon 맨큐 2008.04.26 01:44 신고  댓글주소  수정/삭제  댓글쓰기

    어이쿠, 뭔가 어려운 이야기들이 잔뜩..;;;

  9. 반더빌트 2008.04.26 08:04 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 내용 잘 보고 갑니다!^^*

    기분좋은 주말 되세요!^^*

  10. BlogIcon 마케팅스 2008.04.26 19:49 신고  댓글주소  수정/삭제  댓글쓰기

    개발자체질에 자양강장제 같은 책을 읽으셨군요 ㅎㅎ.. 저는 다른건 모르겠고, 어릴적 보았던 지팡구는 .. ㅎㅎ 생각납니다. ( 산골소년님 읽으시는거 너무 어려워보여요 ㅠ )

    • BlogIcon 산골 2008.04.27 00:30 신고  댓글주소  수정/삭제

      어이쿠 넷물고기님 반갑습니다.
      이런 포스팅은 개발자만 볼수있기 때문에
      저도 고민이 많습니다. ;
      그래도 내 밥줄 공부 차원에서 올릴 생각이긴 한디..
      지팡구를 어릴적 보셨다면..옛날에 나왔나봐요..
      아닌데..옛날에 이지스함이 나올리가 없는데..
      아니면 넷물고기님 나이가 어리신가..
      그것도 아닌데 넷물고기님 책도 내신분이라..
      좌우지간 넷물고기님 반갑습니다. ^ ^